Agent Skills843645440/wechat-skill › wechat-content-pipeline

wechat-content-pipeline

GitHub

编排微信公众号文章从选题、写作到草稿上传的完整流水线。支持自动抓热点或指定主题,强制去AI味与严格校验,最终生成指定账号草稿箱内容,不公开发布。

.agents/skills/wechat-content-pipeline/SKILL.md 843645440/wechat-skill

Trigger Scenarios

用户要求将给定主题一条龙送入公众号草稿箱 外部Agent定时触发自动抓热点并生成公众号草稿

Install

npx skills add 843645440/wechat-skill --skill wechat-content-pipeline -g -y
More Options

Non-standard path

npx skills add https://github.com/843645440/wechat-skill/tree/main/.agents/skills/wechat-content-pipeline -g -y

Use without installing

npx skills use 843645440/wechat-skill@wechat-content-pipeline

指定 Agent (Claude Code)

npx skills add 843645440/wechat-skill --skill wechat-content-pipeline -a claude-code -g -y

安装 repo 全部 skill

npx skills add 843645440/wechat-skill --all -g -y

预览 repo 内 skill

npx skills add 843645440/wechat-skill --list

SKILL.md

Frontmatter
{
    "name": "wechat-content-pipeline",
    "description": "编排中文微信公众号文章从给定选题或自动联网发现热点,到写作、来源留档、随机主题、原生 HTML 信息模块、确定性封面、严格校验和指定公众号草稿箱的完整流水线。用于外部 Agent 定时触发“自动抓热点并生成公众号草稿”,或用户要求将给定主题一条龙送入 A\/B 账号草稿箱时。本 Skill 不创建定时任务、不公开发布,也不等待人工确认后才创建草稿。"
}

微信公众号内容生产流水线

外部 Agent 负责触发时间;本 Skill 自动完成内容生产并以指定账号草稿箱为终点。

每次必读

项目根目录通常是本 Skill 向上三级。若结构变化,只向上查找同时含根 SKILL.mdscripts/validate_gzh_html.pyscripts/wechat_publish.py 的目录;找不到就停止。

不可绕过的运行契约

完整流水线只允许使用以下入口:

pipeline_job.py init/topic/show
pipeline_runtime.py begin/prepare/finish

pipeline_runtime.py 是排版、信息模块、封面、校验、预览、门禁和草稿上传的唯一编排器。不得为单篇文章新建 Python、JavaScript、Shell 或 HTML 渲染脚本;不得手工拼接主题组件、手写封面 JSON、直接调用内部渲染脚本或用其它 Skill 替代失败步骤。现有脚本失败时按规定降级或停止,不现场开发新实现。

Agent 只保留四类判断工作:

  1. 从可靠来源选择一个热点和写作角度。
  2. 生成一次 article.mdsources.md
  3. humanizer-zh + references/humanize-pass.md 就地改写一次 article.md 去 AI 味(默认 strong,不得循环)。
  4. 生成一次 inline-visuals.json;失败后不再修正或重写。

主题、封面模板、标题分行、高亮词、HTML 组件、阶段计时、重试、门禁和上传全部交给固定脚本。不得调用图片模型或 AI 视觉检测。不得公开发布。

固定工作流

1. 初始化

python3 <PIPELINE_ROOT>/scripts/pipeline_job.py init \
  --project-root <PROJECT_ROOT> --account <ACCOUNT> [--topic "给定主题"]

只使用 work/<account>/current/;新任务覆盖同账号旧临时产物,不建立文章历史目录。

2. 确定选题

触发请求有主题时直接使用。没有主题时,按热点规则联网检索并只记录一个最佳选题:

python3 <PIPELINE_ROOT>/scripts/pipeline_job.py stage \
  --job <WORK_DIR>/job.json --name discover --status running
python3 <PIPELINE_ROOT>/scripts/pipeline_job.py topic \
  --job <WORK_DIR>/job.json --value "最终选题" --source auto-hotspot

没有可靠热点时停止,不用旧闻、传闻或候选清单凑稿。

3. 写作和来源

先启动真实计时:

python3 <PIPELINE_ROOT>/scripts/pipeline_runtime.py begin \
  --job <WORK_DIR>/job.json

按写作 Skill 一次生成:

  • article.md:唯一一级标题和完整正文。正文字数硬门禁 1500—4000prepare 机械统计可读字符,不含一级标题与空白);按已核实信息量在区间内取长短——信息密则写长,信息薄则写够下限,不为凑长重复观点,也不得交付短于 1500 的稿。
  • sources.md:机构、标题、日期、链接及支撑事实,不进入正文。

标题不超过 32 字,必须包含可识别主体或对象、明确动作和现实落点。保持受影响最深人群视角。正文按写作 Skill 的内容表达契约直接使用语义 Markdown:可靠的多对象同口径数据写成表格,重要短语用少量 **加粗** 标记,排版器随后映射为当前主题的完整组件。

4. 去 AI 味(Humanizer-zh,写后、排版前)

写作完成后、调用 prepare 之前,加载 humanizer-zh,并严格按 references/humanize-pass.md 执行:

  1. stages.humanize 标为 running
  2. 只对 article.md一轮 去 AI 味就地覆盖;默认强度 strong(用户明确要求时才用 light/medium);不改 sources.md,不新增事实。
  3. 改写后自检字数仍在 1500—4000;标题仍 ≤32 字;保留 ## 小标题与必要表格/加粗。
  4. stages.humanize 标为 completed,detail 含 intensity=strong(或实际档位)。

禁止跳过本步直接 prepare。禁止 humanize 后再做第二轮“润色/去 AI”。

5. 固定主题并交接唯一信息计划

python3 <PIPELINE_ROOT>/scripts/pipeline_runtime.py prepare \
  --job <WORK_DIR>/job.json

该命令机械核验正文和来源(含 1500—4000 字数硬门禁)、完成写作计时、随机固定注册主题、稳定选择三套封面模板之一,并自动生成合法封面规格与当前主题的空 inline-visuals.json 壳(version/theme/modules)。读取命令返回的 themeplanplan_schema,按 wechat-inline-visuals 只写一次完整计划;即使 0 个模块也必须保留顶层三字段,不得只写 {"modules":[]}。没有自然适合的模块就沿用或写回当前主题的空计划;不要凑数量。

6. 一次完成排版到草稿

生产任务必须运行:

python3 <PIPELINE_ROOT>/scripts/pipeline_runtime.py finish \
  --job <WORK_DIR>/job.json \
  --config <PROJECT_ROOT>/wechat-accounts.json

该命令固定执行:

  1. 校验信息计划;失败立即覆盖为空计划,不重试。
  2. 一次生成完整旧主题骨架、语义 Markdown 组件与同主题信息模块,保留全部原文;主题不是单纯换色。
  3. 用 HTML/CSS 生成 1410×600 封面;单次硬超时 45 秒,不做人工或 AI 视觉审查,但渲染器必须执行确定性的内容探针,排除浏览器错误页、空白页和标题越界,不能只验证 PNG 签名与尺寸。技术故障只重试一次,随后使用账号默认封面或停止。
  4. 对正文执行零 ERROR、零 WARNING 严格校验并生成预览。
  5. 通过草稿门禁后只调用 send --action draft;微信瞬时网络错误最多重试一次。
  6. 校验账号、动作和 draft_media_id,状态变为 drafted 后结束。

开发测试才允许增加 --dry-run;它会走完整机械流程和草稿输入校验,但不连接微信 API。--skip-draft 仅用于故障诊断,不得用于定时生产。

失败和恢复

排障时先读 references/pipeline-failure-triage.md(按 job.json 阶段分诊字数门禁、inline-visuals、封面探针与草稿),浏览器/沙箱细节见 references/execution-recovery.md

  • 信息计划或插入失败:标记 skippeddegraded=true,以纯正文继续,不重试。
  • 封面两次技术尝试均失败:有默认封面则继续,没有则门禁停止;不回退 AI 生图。
  • 默认封面是账号级永久素材,不是本地图片路径:同一张兜底图用于多个公众号时,必须分别上传到每个账号的永久素材库,取得各自独立的 thumb_media_id,再写入该账号的 default_thumb_media_id(或对应环境变量)。不得跨账号复用素材 ID。
  • 上传前核验兜底图实际内容:确认有效图像、无浏览器错误页、无水印或损坏,并裁切为适合公众号封面的 1410×600;只检查文件存在和尺寸不够。
  • wechat_publish.py 的优先级是显式 --cover > 环境变量中的默认素材 ID > 配置中的 default_thumb_media_id。专属封面有效时仍优先使用专属封面;只有专属封面技术失败才走兜底。
  • HTML 有任何错误、警告或占位符:停止草稿创建。
  • 草稿成功后立即停止,不调用公开发布接口。
  • 同一轮失败保留工作区;恢复时读取 job.json,不得重新随机主题或模板。

最终报告

只报告选题、主题、信息模块数量及是否降级、目标账号、各阶段 duration_ms、文章与预览路径和草稿结果。不要展示内部推理、密钥或 sources.md 内容。

完成核验(防假完成)

对外声称「已 drafted / 流水线已结束」之前,必须同时满足:

  1. job.jsonstatedrafted(不是 running)。
  2. stages.draft.status=completed,且 draft-result.json 含非空 draft_media_id
  3. 磁盘存在本轮 article.mdarticle.html(或预览);封面为 cover/cover.png 或已明确默认封面兜底。

若只完成 discover/begin、工作区几乎只有 job.json、或 write 仍为 running:不得估算 duration、不得编造草稿 ID、不得写完成套话。Cron 会话退出成功 ≠ 草稿成功,以工作区与 job.json 为准。

中断后续跑

同账号 work/<account>/current/ 卡在 write/fact-check/humanize=running 且已有 topic 时:优先续跑——补 article.md+sources.mdhumanize-zh 一轮prepare → 一次写 inline-visuals.jsonfinish。不要无故 init 清掉已核验选题,除非产物损坏或用户要求整轮重来。

Version History

  • 8688fe0 Current 2026-07-22 09:39

Same Skill Collection

.agents/skills/agnes-image-gen/SKILL.md
.agents/skills/baoyu-article-illustrator/SKILL.md
.agents/skills/baoyu-cover-image/SKILL.md
.agents/skills/humanizer-zh/SKILL.md
.agents/skills/wechat-html-cover/SKILL.md
.agents/skills/wechat-inline-visuals/SKILL.md
.agents/skills/wechat-tech-insight-writer/SKILL.md

Metadata

Files
0
Version
8688fe0
Hash
d1f5c383
Indexed
2026-07-22 09:39

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-27 07:53
浙ICP备14020137号-1 $bản đồ khách truy cập$