LS WeChat Article Skill

Automate WeChat article creation with drafting, formatting, and publishing capabilities.

通用微信公众号工作流 skill。它可以起草文章、排版 Markdown、预览 HTML、生成封面和正文配图、发布到微信草稿箱,并在发布后回填数据、学习人工改稿习惯。

能力概览

你说Skill 会做什么
给 demo 写一篇公众号文章走完整流程:选题 -> 框架与原型 -> 写作 -> 质检 -> 配图 -> 主题 -> 草稿箱
把这篇 Markdown 发到草稿箱跳过写作。若你没明确说不要改内容,仍会先做浅层质检再发布
用 latepost-depth 主题预览生成本地 HTML 预览
看看最近 7 天文章表现读取微信 datacube 数据并回填 history.yaml
根据我的修改学习风格对比草稿与终稿,写入 lessons
导入参考文章并刷新 playbook读取 corpus/ 并输出 playbook 分析输入

安装

环境要求:Node.js >= 18、Python >= 3.9、已认证微信公众号且具备 API 权限。

cd toolkit && npm install && npm run build && cd ..
pip install -r requirements.txt
mkdir -p .ls-wechat-article
cp config.example.yaml .ls-wechat-article/config.yaml

运行态数据目录按以下顺序解析:

  1. ./.ls-wechat-article/
  2. ~/.liusir-skills/ls-wechat-article/
  3. 旧的 skill 目录文件只做只读兼容

建议执行一次校验:

python3 scripts/validate_skill.py
npm run validate-skill

config.yaml 需要填写:

字段必填说明
wechat.appid微信公众号 AppID
wechat.secret微信公众号 AppSecret
wechat.author默认作者名
image.providers.gemini.api_keyGemini Imagen
image.providers.openai.api_keyOpenAI gpt-image-1
image.providers.doubao.api_key豆包 Seedream
image.providers.qwen.api_key阿里云百炼 qwen-image-2.0-pro

WeChat 配置

微信开发者平台:developers.weixin.qq.com

  1. 打开公众号管理页
  2. 复制 AppID
  3. 重置并保存 AppSecret
  4. 将当前公网 IP 加入 API IP 白名单

示例:

curl -s https://ifconfig.me

可选:TrendRadar

TrendRadar 是 Step 2 选题阶段可选的热点信号来源。 如果本地已经安装并能访问对应 MCP 服务,流程可以先用它抓取热点,再进入选题判断。

项目地址:

.ls-wechat-article/config.yaml~/.liusir-skills/ls-wechat-article/config.yaml 中配置:

trendradar:
  enabled: true
  base_url: "http://127.0.0.1:3333/mcp"
  timeout_ms: 30000

说明:

  • TrendRadar 不是写作、排版、预览、发布的必需依赖。
  • 启用后,Step 2 会通过 scripts/fetch_trendradar_hotspots.py 合并最近 1 天的新闻和最近 1 天的 RSS 订阅内容。
  • 脚本输出仍然是给下游选题阶段使用的统一 JSON,而不是关键词列表。
  • 如果 TrendRadar 不可用,流程会回退到 scripts/fetch_hotspots.py
  • 在正式起草新文章前,流程会先搜索一轮最新相关资讯。这个要求只作用于写作流程,不作用于纯排版或纯发布流程。

使用教程

1. 流程说明

步骤说明
Step 1读取 client 配置并判断从哪一步开始
Step 2如果没有明确 topic,就先获取热点信号
Step 3选择文章选题
Step 3.5选择框架、文章原型和输出 shape
Step 4先搜索最新相关资讯,再按原型约束生成文章草稿
Step 5执行 5A auto-fix5B editorial QA
Step 6决定图片范围、图片风格和正文图数量
Step 7决定主题,生成 HTML,预览或发布到草稿箱
Step 8更新 history.yaml,回填 stats,学习改稿,刷新 playbook

2. 风格化说明

这套 skill 会分别处理两类风格:

  • 图片风格:决定封面图和正文配图长什么样
  • 排版主题:决定 HTML / 微信文章最后的阅读气质

图片配置

要决定什么可选项说明
图片范围cover + inline images / cover only / inline only / no images决定是否生成封面、正文图、两者或都不生成
图片风格follow article tone / editorial / blueprint / notion / warm / watercolor / scientific / lofi-doodle / multi-panel-manga / notebook-sketch / claymation决定整篇文章图片的共同视觉方向
正文图数量minimal / balanced / per-section / custom这是 agent 的规划输入,用来决定要准备多少个显式正文图目标

图片风格说明

风格 key中文名称更适合什么内容
follow article tone跟随文章基调不想手动选风格时,由 agent 按文章基调决定
editorial杂志信息图风方法论、趋势判断、工具分析
blueprint技术蓝图风架构、系统设计、流程说明
notion极简手绘线条风知识分享、生产力、SaaS 内容
warm温暖亲和风故事、个人成长、生活方式
watercolor水彩柔和风创意表达、轻叙事
scientific学术精确图表风技术、生物、科研、严谨分析
lofi-doodle低保真手绘涂鸦风思路草图、轻量概念说明
multi-panel-manga多格漫画说明风步骤演示、过程说明、叙事场景
notebook-sketch笔记本草图概念风系统草图、抽象概念图
claymation黏土定格玩具风亲和型表达、轻教育内容

正文图数量说明

选项说明
minimal少量重点图,通常 1-2 张
balanced标准配图,通常 3-5 张
per-section尽量每个重点小节都配图
custom自定义正文图数量

文章排版主题

主题 key适用场景
wechat-tech技术拆解、工具分析、工作流文章
wechat-anthropic温和长文、个人表达、创作者随笔
wechat-default通用稳妥默认主题
wechat-medium简洁现代、通用文章
latepost-depth观点拆解、趋势分析、强结构长文
guardian媒体感强、评论型文章
wechat-ft深度报道、商业长文
wechat-deepread长阅读、密度较高文章
nikkei技术/商业分析
lemonde深度阅读、偏报道气质文章

如果没有指定主题,流程里会先询问你,或明确告诉你将使用哪个主题。

3. 使用方式

使用方式什么时候用你可以怎么说
从 topic 开始你只有一个想写的主题,还没有文章草稿帮我写一篇关于 AI 编程的公众号文章
从 Markdown 开始你已经有现成 Markdown,只需要排版、预览或发布。默认仍会做浅层质检,除非你明确说 仅发布不要改内容把这篇 Markdown 排版成公众号样式并发布到草稿箱
从指定步骤开始你不想走完整流程,只想从某一步接着做从 --step 3.5 开始,我想先选框架
先做图片决策你想单独先决定图片范围、风格、配图数量和显式图片目标从 --step 6 开始,我想先决定图片配置
先做主题与发布你已经有文章,只想确认主题、预览或发布从 --step 7 开始,先告诉我会用什么主题
做复盘与学习你想看文章表现、学习人工改稿,或刷新 playbook从 --step 8 开始,帮我更新 history、stats 和 lessons

常用命令

完整 CLI 语法见 cli-reference.md
主题选择建议见 theme-selection.md

# 预览
node dist/cli.js preview article.md --theme wechat-tech

# 发布
node dist/cli.js publish article.md --theme latepost-depth

# 文章质检
node dist/cli.js editorial-qa article.md --client demo

# 主题对比预览
node dist/cli.js theme-preview article.md

# 正文配图
node dist/cli.js illustrate article.md --client demo --style editorial --target "先定义输入,再定义输出,最后定义回看路径::flowchart" --target "不要把验证留到最后,应该让验证跟执行一起发生::framework" --provider qwen

# 生成封面
node dist/cli.js cover article.md --client demo --style blueprint --type conceptual --provider openai

# 数据回填
node dist/fetch-stats.js --client demo --days 7

# 改稿学习
node dist/learn-edits.js --client demo --draft draft.md --final final.md

# playbook 分析
node dist/build-playbook.js --client demo

发布时如果不传 --cover,工具会尝试使用正文第一张图片作为草稿封面。
editorial-qa 会把 quality-report.md 写进文章 bundle,让 Step 5 的判断有明确产物,而不是只留在 agent 口头说明里。
illustrate 默认会把本次文章产物写入 {runtime_root}/output/{client}/{date}-{title-slug}/,其中包含 article.mdassets/prompts/。toolkit 不再自己决定该配哪些位置、该用什么图片类型;这些都要由 agent 先选好,再显式传入 --target。优先传段落/内容块锚点,旧的标题 target 继续兼容,作为 fallback。

公共图片风格库位于 references/image-system.yaml。运行态 client 数据位于 {runtime_root}/clients/{client}/style.yaml,只配置默认主题、写作画像和 client 覆盖项。

让文章越写越像这个号

这条链路分成三部分:

  1. 喂语料
    把历史代表文章、外部高相关案例文、结构参考稿放进 {runtime_root}/clients/{client}/corpus/,再运行 build-playbook

  2. 改稿学习
    文章发布后,如果你人工改过草稿,再运行 learn-edits,把草稿和终稿差异写进 lessons/

  3. 手册刷新
    corpus/ 足够丰富,或 lessons/ 每积累 5 条左右时,重新运行 build-playbook,刷新 playbook.md

目录结构

{runtime_root}/clients/demo/
├── style.yaml
├── history.yaml
├── playbook.md
├── corpus/
├── lessons/
└── themes/

这些目录和文件由 style-template.md 说明。发布记录会写入 {runtime_root}/clients/{client}/history.yaml,改稿学习会写入 {runtime_root}/clients/{client}/lessons/corpus/ 作为参考语料目录供后续刷新 playbook.md 使用。

相关文件

许可证

MIT