SSkill 广场
Skill 广场/ 文档/ wechat-blog-generate

wechat-blog-generate

公众号海外选题与编译成文

下载技能包
自研 文档 v1.0.0
4 次下载热度 12更新 2026-09-08 3 个文件 7.1 KB MIT 许可
描述

面向「打信息差」的公众号内容生产全流程:从海外一手信源(Hacker News、官方博客、权威媒体)采集爆火选题,编译成易起阅读量的公众号文章,配封面图并推送草稿箱;复用 wechat-mp-publish 完成推送,自身补充选题采集、反爬取材兜底、爆款成文结构与覆盖式更新(先推新版再删旧草稿)的方法论与脚本。

SKILL.md 正文

wechat-blog-generate · 海外 AI 选题 → 编译成文 → 推送公众号草稿 Skill

面向「打信息差」的公众号内容生产全流程:从非大陆外网采集海外正在爆火、 国内却少有人讲的 AI/技术话题,基于一手信源编译成易起阅读量的公众号文章, 配封面图,并推送到公众号草稿箱(人工在后台定时群发)。

本 Skill 复用 wechat-mp-publish 完成实际推送,自身补充「选题采集 + 反爬取材 + 爆款成文 + 封面处理 + 覆盖式更新」的方法论与配套脚本。

触发词

  • 帮公众号写文章 / 生成公众号内容 / 海外 AI 选题 / 打信息差 / 编译海外热点
  • 采集海外热点写成推文并发到草稿箱、wechat blog generate

定位与内容原则(本 Skill 的灵魂,务必遵守)

  1. 信息差第一:只做「海外火、国内少人系统讲」的选题。素材来自 Hacker News、

官方博客(OpenAI 等)、路透社/彭博等一手源;刻意避开国内已泛滥的红海选题 (如「AI 工具评测/变现/大模型跑分对比/Cursor 教程」)。

  1. 一手信源、绝不编造:基于官方原文 / 权威报道编译,每篇文末标注来源。

分清「内部测试/研究环境」与「用户日用产品」的分寸,不夸大、不臆造数据与引述。

  1. 系列化:一次产出多篇时,围绕一条主线做强关联系列,篇间可互相导流。
  2. 可发布性:严格遵守 push_draft.py 的 Markdown 子集(见下),确保转换无损。

全流程(6 步)

第 1 步 · 选题采集

  • WebSearch / WebFetch 扫 Hacker News、官方博客、权威媒体,锁定近 1–2 周

海外热议、国内信息差大的话题;产出候选清单(标题 + 一句话爆点 + 信源链接)。

  • 优先选:有故事性、有冲突/反常识、有权威背书(可在标题点名 OpenAI / 路透社等)的题。

第 2 步 · 取材(含反爬兜底)

  • 能直接抓的:WebFetch 取正文要点。
  • 反爬兜底:部分站点(openai.com 等)对自动化工具/内置浏览器返回 403

但用户用系统默认浏览器可正常访问。此时列出需要的 URL,请用户「网页另存为 HTML」放到项目 _sources/,再用脚本提取正文:

  SKILL=~/.qoder/skills/wechat-blog-generate/scripts
  python3 $SKILL/extract_html_text.py _sources/*.html --out-dir _sources

以提取出的 .txt 作为编译依据,杜绝编造。

第 3 步 · 编译成文(爆款结构)

每篇 Markdown 建议结构:

  • 标题:强钩子 + 权威主体前置。句式如「{权威源}承认/独家:{反差事实}」。

例:OpenAI承认:一群AI偷偷"越狱"了,组团黑掉一家公司

  • 开头导语:紧跟标题的一个 > 引用块,以「写在前面:」开头,3–4 句把最大

爆点前置、点明「海外炸锅、国内没人讲」,降低跳出率。

  • 正文:分小节(##),口语化、有节奏;关键处 加粗;善用具体数字、时间线、

原文引述(> 引用)。

  • 关注语:文末正文后加一个「抛问题 → 催评论 → 催转发 → 引导关注」的收尾段;

每篇措辞按主题定制、不要雷同(多篇雷同易被平台判重)。可植入固定人设话术 (如「持续带你看海外最新、国内最少人讲的 AI 真相」)。

  • 信源标注:文末 --- 后用斜体注明编译所据的官方原文/报道及日期。

第 4 步 · 封面图

  • ImageGen 生成视觉隐喻封面(宽幅,尽量避免文字以防中文乱码)。
  • 规范化:sips -Z 1200 cover.png 缩放;file cover.png 核验为真 PNG/JPG

(WebP 会被 40137 拒收);确保 <2MB。每篇配独立封面。

第 5 步 · 推送草稿(复用 wechat-mp-publish)

PUB=~/.qoder/skills/wechat-mp-publish/scripts
# 先 dry-run 校验标题与 HTML 转换(不消耗 API)
python3 $PUB/push_draft.py --config <env> --md "01.md" --dry-run
# 正式推送
python3 $PUB/push_draft.py --config <env> --md "01.md" --cover covers/cover-01.png --author "<署名≤8字>"
# 验证
python3 $PUB/check_drafts.py --config <env>

凭据(APPID/APPSECRET)放在项目 env 文件(如 0-aliyun.env)。首次推送若报 40164, 按提示把执行机公网 IP 加入公众号后台 IP 白名单(改动需管理员扫码确认,约几十秒生效)。

第 6 步 · 覆盖式更新(改标题/导语后重推)

微信 draft/add 是「新增」不是「覆盖」。要更新已推送的某篇:先推新版(记下新 media_id),确认成功后删旧版

SKILL=~/.qoder/skills/wechat-blog-generate/scripts
python3 $SKILL/delete_draft.py --config <env> --media-id <旧media_id> [--media-id <旧2> ...]

最后 check_drafts.py 复核数量无重复,并 rm -f *.preview.html 清理 dry-run 临时文件。

push_draft.py 的 Markdown 子集(编译时必须遵守)

支持#~### 标题、普通段落、加粗文字 链接、> 引用、 - 无序列表、![](本地图片路径)(自动上传替换为图床 URL)。

不支持(务必避免,否则排版错乱):表格、代码块(``)、有序数字列表(1.`)。 需要"编号"时用「第一/第二/第三」等文字表达。

脚本清单

脚本作用
scripts/extract_html_text.py从用户保存的 HTML 提取正文纯文本(反爬兜底取材)
scripts/delete_draft.py按 media_id 删除草稿,配合 push 实现覆盖式更新
(依赖)~/.qoder/skills/wechat-mp-publish/scripts/push_draft.py推送草稿
(依赖)~/.qoder/skills/wechat-mp-publish/scripts/check_drafts.py查询草稿箱

发布时段建议(供人工在后台定时群发参考)

  • 订阅号阅读/转发黄金时段:工作日晚 21:00–21:30;备选午休 12:30、晚 20:00。
  • 避开:凌晨、上午 9–11 点、下午 3–5 点。
  • 系列文分天发、互相导流,别一天全发;时效性强的选题尽早发。

严格禁止 (NEVER DO)

  • 不得编造事实、数据、引述;一切以一手信源为准,并在文末标注来源。
  • 不得把 APPSECRET / access_token 打印或写入任何对外材料。
  • 不得执行正式群发/发布(freepublish)——推送到草稿箱为止,发布由人工在后台确认。
  • 不得连续重试失败命令超过 3 次;遇 40164/40137/45110 等按 wechat-mp-publish 的错误速查处理后停止并报告。
  • 抓取网页失败时不得"脑补"内容,改走「用户默认浏览器保存 HTML → 提取」的兜底路径。