公众号文章-学员复制版

SKILL内容创作
内容创作 未标注权限 许可证不明确
安装这个技能

[公众号/写公众号/帮我写一篇/推送文章]→给老板写公众号文章并浏览器预览 帮老板从一个选题出发,写出一篇 1800-2000 字的公众号文章,并生成可直接复制到 公众号后台的 HTML 排版。不读死人设档案,完全从老板本地内容库 (~/Desktop/我的内容库(勿动)/01-黄金五环、02-人设文案、03-人设故事) 读取身份、口吻和素材,写出来的文章是老板自己的声音,不是 AI 味。 触发口令(包含以下任意关键词即触发): "公众号"、"写公众号"、"公众号文章"、"帮我写一篇"、"今天写什么"、 "推送文章"、"出一篇推文"、"搞个公众号内容"、"发一篇公众号"、 "微信文章"、"公众号发点啥"。 当用户给了一个话题并提到"公众号"时也触发。

一句话选型结论

按资料字段整理

公众号文章-学员复制版是内容创作类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类内容创作 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_151424ca/wechat-article-qinghuage
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

内容创作
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_151424ca仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791723796
正文体量33.8 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写文章与脚本

按主题产出初稿与分镜脚本。

改稿与润色

把草稿改顺、统一语气。

多平台文案改写

同一内容按平台改成长短不同的版本。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在内容创作场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
公众号文章-学员复制版当前 未标注权限 未标注 未标注 未标注 有
AI 视频生成 调用外部服务 GitHub 仓库 431.3 万 Codex、Claude、Cursor 有
视频帧 联网访问 ClawHub 市场 262.1 万 OpenClaw 有
Markdown 转换器 写入文件 ClawHub 市场 135.3 万 OpenClaw 有
哔哩哔哩全合一 接触敏感数据 ClawHub 市场 64.1 万 OpenClaw 有
Remotion video toolkit 命令行 浏览器控制 ClawHub 市场 63.9 万 OpenClaw 有

SKILL.md 全文

33.8 KB
模型实际读到的说明书原文,来自技能仓库

公众号文章(学员版)

执行回执(硬规则)

只要本轮因为 skill / 技能 指名,或因为关键词命中而进入本技能,第一行先写:
已走技能:公众号文章-学员版

From topic to published draft — one skill, full pipeline. 从一个话题到可发布的文章,一次走完。


核心设计:两阶段渐进式

学员装完 skill 第一次用,一个配置都不要问。分两阶段:

阶段 触发时机 学员需要做什么
🟢 阶段 1 首次使用 学员第一次说"写公众号文章" 零配置。直接读本地内容库 → 写文章 → 生成 HTML 预览 → 学员复制粘贴到公众号后台
🟡 阶段 2 升级签名卡 学员主动说"想让文章底部有我的头像 / 可跳转到我公众号" 一次性问 3 件事(头像URL/biz_id/CTA),存到 ~/.wechat-article-config/author-card.json

为什么不做"自动推送到草稿箱":需要企业主体公众号 + appid/appsecret + IP 白名单,且白名单一旦换网络(家→公司→咖啡馆→出差)就要重新加,运维负担太重。手动 Ctrl+V 粘贴只要 10 秒,比折腾这套 API 划算。本 skill 不提供自动推送路径。

硬规则:
- 首次使用严禁索要 biz_id/头像URL 等任何配置项。就是写一篇给他看。
- 只有学员主动提出想要某个高级功能时,才进入对应阶段的配置流程。

V1.5 交付铁律:文稿归档、CSS 内联、按钮复制和系统剪贴板读回校验

这版必须同时解决两个问题:
1. WorkBuddy/内容库把公众号 HTML 当成普通内容保存
2. "生成时自动复制"容易被剪贴板覆盖,导致学员误以为已经复制成功
3. Windows/macOS 上按钮提示成功,但系统剪贴板仍保留旧截图或旧内容
4. 学员机器缺 CSS 内联依赖时,转换器把 <style> 删除,导致粘贴到公众号后只剩普通文字

唯一正确交付结果:
- 内容库只保存文章文稿:~/Desktop/我的内容库(勿动)/12-公众号文章/{日期}-{标题}.md
- 发布用 HTML 只允许进入系统临时目录:tempfile.gettempdir()/wechat_article_publish/
- 文章完成后必须调用 scripts/finalize_article.py,由它先保存 .md,再自动弹出 http://127.0.0.1:端口/wechat_article_preview.html
- 正式复制必须由学员在预览页点击【📋 一键复制到公众号】完成
- 成功提示必须显示复制时间、copy_id、section/span/mp/style 四个微信标记计数,以及"系统剪贴板:已读回校验"
- 如果没有自动弹出 http://127.0.0.1 页面,本轮只能交付 .md 文稿,并明确说"公众号排版预览未生成成功",严禁给学员任何 .html 文件路径

绝对禁止:
- 禁止在 12-公众号文章 保存 .html
- 禁止让学员用 Edge/Chrome 打开内容库里的 HTML
- 禁止把 file:// 预览当成可复制发布页
- 禁止把"生成时已自动复制"当成成功标准;V1.5 不依赖生成时自动复制
- 禁止只因为 PowerShell/osascript 退出码为 0 就提示成功;必须经过系统剪贴板读回校验
- 禁止在 CSS 未内联成功时继续复制;wechat_article.html 里必须有足够的 style="" 属性,不能只靠 <style> 标签


Phase 0: 读学员本地内容库(声明式,不填表)

学员的身份不从老师的人设档案来,也不从填表来——从学员自己的内容库来。

固定路径:~/Desktop/我的内容库(勿动)/(由"内容库搭建-学员版" skill 维护)

读取顺序

BASE=~/Desktop/我的内容库(勿动)

# 1. 老板画像 — 身份/经历/客户/差异化/金句
ls "$BASE/01-黄金五环/"
# 如果有文件,读取最新一篇(通常是终版)

# 2. 学习老板的写作口吻
ls "$BASE/02-人设文案/" | head -3
# 读 2-3 篇最新的,感受语气/常用词/节奏

# 3. 真实故事素材(开头/细节/案例来源)
ls "$BASE/03-人设故事/" | head -3

# 4. 可选:感受整体表达风格
ls "$BASE/04-热点文案/" "$BASE/05-爆款改写/" "$BASE/06-直播稿/" 2>/dev/null | head -3

兜底规则

  • 01-黄金五环 是空的 → 停住。告诉老板:"先跑一次【黄金五环采集-学员版】,把你的老板画像填好。公众号文章要有灵魂,必须先认识你。"不要硬写。
  • 02-人设文案 / 03-人设故事 是空的 → 可以写,但提示老板:"建议先跑一次【人设文案-学员版】和【人设故事-学员版】,这样公众号文章的口吻会更贴近你本人,AI 味会更少。"
  • 路径不存在(内容库没搭) → 告诉老板:"先跑一次【内容库搭建-学员版】建好本地内容库。"

读取后的行动

读完上面这些文件,在心里形成一份"老板是谁"的认知画像:
- 老板的真实身份(姓名/行业/年头/主要经历)
- 目标客户是谁
- 老板的差异化 / 核心价值
- 老板怎么说话(常用词、句式节奏、爱讲的故事类型)
- 老板的立场和价值观

严禁:读完不用。每一个判断、每一句口吻都必须回到这些画像。


Phase 1: 选题与标题

Mode A: 用户给了一个话题 → 直接做标题

Mode B: 用户说"今天写什么" / "搜热点" →

  1. WebSearch 今天的热点(科技/AI/商业/民生)
  2. 过滤:这个热点能不能连接到老板的行业?(连接不上的直接筛掉)
  3. 给 3 个角度,每个含:热点钩子 + 老板视角的切入点 + 开头第一句草稿
  4. 让老板选

标题工程

公众号 80% 打开率靠标题。按以下规则出 3 个备选:

  • 15-25 字(太短没信息量,太长手机折行)
  • 必含:一个情绪触发词 + 一个身份锚点(老板/实体人/开店的)
  • 可加:一个悬念缺口(为什么/怎么做到的/竟然)
  • 详见 references/style-bible.md Section 2

输出格式(必须用数字选项):

请选标题(输入 1 / 2 / 3):

1. {标题A}
2. {标题B}
3. {标题C}

老板选完再进 Phase 2。


Phase 2: 写文章

写前必读

  • references/writing-methodology.md — 7 步骨架 + 公众号适配规则
  • references/style-bible.md — 通用写作原则 + 六原则 + 六维评分

文章结构(1800-2000 字)

按 writing-methodology.md 的 7 步骨架:

  1. 高冲突开场判断(2-3 句)
  2. 场景重建(1-2 段,含 1 个真实细节 — 从老板 03-人设故事 里取素材)
  3. 角色冲突 / 错位解释(1 段)
  4. 理论锚点(3-5 句话带过,只给结论)
  5. 反转升华("你以为…其实…",1-2 句)
  6. 三条行动建议(每条 2-3 句,第 3 条自然桥接到老板的业务)
  7. 结尾金句 + 分享钩子(1 段)

字数硬规则:
- 目标 1800-2000 字
- 超过 2000 字 → 砍场景描写冗余 / 合并重复判断
- 少于 1800 字 → 补一个真实细节 / 加一个行动建议的展开

写前先出大纲(避免写完才发现方向不对)

给老板看 5-7 行大纲:

📋 大纲预览
- 开场判断:{用什么场景/判断开头}
- 中段论点:{核心论点 1-2 个}
- 业务植入位置:{第几段/怎么植入}
- 结尾落点:{金句方向}

OK 就回复 "继续",要调就告诉我调哪里。

业务植入规则

  • 前 30% 禁止出现产品名/课程名/价格
  • 第三条行动建议或结尾金句之前 → 自然桥接到老板自己的业务
  • 桥接不是硬推销,是"我一直在做这件事 → 我的工具/方法/产品能帮你一起走"

写后三层自检(必输出)

Layer 1: 六原则逐段扫描(style-bible.md Section 6)

逐段检查 6 条:

  1. ✅ 每个重要判断先给了结论?(原则①先定性再解释)
  2. ✅ 没有不必要的否定/撇清?(原则②不此地无银)
  3. ✅ 关键动作后面有"因为"?(原则③给理由建信任)
  4. ✅ 朗读一遍没有书面感重的词?(原则④口语化但精准)
  5. ✅ 场景描写有 ≥1 个真实细节?(原则⑤用细节建画面)
  6. ✅ 叙事基调是"我选择"不是"我被迫"?(原则⑥主动性)

任何一条不通过 = 修改该段重写自检。

Layer 2: 六维评分(style-bible.md Section 4)

开场抓取力 / 结构推进力 / 人设可信度 / 业务植入丝滑度 / 听感可读性 / 风险控制,
每项 20 分共 120 分。必须 ≥105 且单项 ≥16。

Layer 3: 一票否决

触发任一 = 整篇重写:
- 恐吓式焦虑推转化
- 虚构人物/数据/案例/结果
- 明显夸张或做不实承诺
- 硬推销导致真诚感丧失

自检报告格式(必须输出)

📋 质量自检:
字数: {实际字数} (目标 1800-2000)
六原则: ✅✅✅✅✅✅ (6/6 通过)
六维评分: 108/120 (最低项 17)
一票否决: 无触发

Phase 3: HTML 转换(V3 Clean 骨架 + 15 套排版模板)

Step 1:读视觉标准

assets/template-v3-clean.html — V3 Clean 黄金模板(HTML 骨架和版块名字以它为准)

骨架只有这一套:不管最后用哪套排版,HTML 结构和 class 名字都照它写,不要自创 class。

排版样式有 15 套,放在 assets/templates/(清单在 templates.json:编号、名字、长什么样、适合谁)。样式由脚本套上去——你不写、不改 <style>,正文 HTML 里也不写死颜色(写死了,学员换模板时那一块会花)。

Step 1.5:定这次用哪套模板(不要问学员)

  • 学员以前选过 → 脚本自动用他上次选的,你什么都不用传。
  • 学员这次点名("用黑金""用 6 号""换成大字那套")→ Phase 4 调脚本时传 --template <他说的名字或编号>。
  • 都没有 → 你按他的行业,从 templates.json 的 fit / keywords 里挑最贴的一套,传 --recommend <key>;拿不准就传 jingdian(经典)。
  • 不要在写文章之前让学员选模板——他还没看到自己的文章,选不出来,还多卡一步。预览页最下面有一排「换个样子」按钮:学员点一下,他这篇文章当场换成那套并自动复制好,他选的会被记住,下次默认用。换模板是纯本地的事,不重写文章、不花模型额度。
  • 学员说"换模板""换个风格""看看有哪些模板" → 用 subprocess + sys.executable 跑 scripts/open_gallery.py,浏览器会打开"模板一览"(15 套用同一篇示例文章各排一遍)。他回编号或名字后,带 --template 把 Phase 4 那段再跑一遍即可(文章不用重写,RAW_HTML 还是刚才那份)。只开模板一览页,不要把文件路径贴给学员。

V1.5 模板锁死规则(沿用 V3 Clean 模板):
- 必须先读取 assets/template-v3-clean.html 的完整文件内容。
- 生成 RAW_HTML 时,必须以这个模板为母版,只替换 hero 文案、正文块和签名区。
- 严禁 凭记忆重写一套 inline-style HTML,严禁自创 V2/V4/微信版模板。
- 严禁 删除或改写 <style> 里的 V3 Clean 样式定义。
- 严禁 删除模板 <body> 开头的 __WECHAT_ARTICLE_FILE_PROTOCOL_GUARD__ 脚本。它会让 file:// 页面直接显示错误提示,防止学员从错误预览复制。
- Hero 必须使用 .hero-badge,禁止 .hero-emoji。
- RAW_HTML 正文里严禁出现任何"一键复制/复制全文"按钮或文案。复制按钮只能由 scripts/open_preview.py 在 localhost 预览页注入。
- run_pipeline.py 会先调用 scripts/validate_v3_template.py 做硬校验;校验不过就不会弹公众号发布预览页。

Step 2:生成 HTML

骨架:

<div class="wrapper">
  <div class="hero">
    <div class="hero-badge">{2-4字标签 如"老板必看"}</div>
    <div class="hero-title">{6-10字核心判断,关键词用 .hero-highlight 黄色高亮}</div>
    <div class="hero-subtitle">{关键词A · 关键词B · 关键词C}</div>
  </div>
  <div class="article-body">
    <div class="content">
      正文
    </div>
  </div>

  底部签名区 - 阶段 1 用纯文字版 / 阶段 2 读 author-card.json
  <div class="footer-fixed">
    见 Phase 3.5 签名区生成规则
  </div>
</div>

视觉节奏必检项(不通过 = 重做)

  • [ ] Hero 横幅开场(不要 emoji 开场,用 .hero-badge 替代)
  • [ ] Callout 卡片 ≥ 2 个(灰红 .callout / 蓝 .callout-blue / 绿 .callout-green)
  • [ ] 金句高亮框 ≥ 1 个(.golden)
  • [ ] 连续正文段落 ≤ 4 段(超过插 callout / 金句 / 分隔线)
  • [ ] 分隔线 · · · — 每个大章节之间一个
  • [ ] Section 标题带 emoji + 暖色底(emoji 照常写在 .icon 里;有几套模板故意不显示它,不用你管)
  • [ ] ≥ 1 个数据可视化(stat-card / timeline / compare-row / step-list)
  • [ ] 荧光笔高亮 1-2 处(.highlight-line)

⚠️ 不要在 HTML 中写标题/作者/日期栏 — 微信推送时自动添加。正文直接从 Hero 开始。

⚠️ 不要写 HTML 注释(尖括号加叹号加两个减号那种) — 微信会变成可见文字。

V3 Clean 色板(硬规则,不要私自改)

  • 主强调色: #d4380d(红棕)
  • 金句底: linear-gradient(135deg, #fff7e6, #ffe7ba)
  • Callout 灰: #f6f8fa + 左线 #d4380d
  • Callout 蓝: #f0f5ff + 左线 #1890ff
  • 正文: 16px / line-height:2 / color:#333
  • 圆角统一: 10px-12px

以上是 1 号「经典」的色板。其他 14 套的颜色、字号、圆角写在各自的 assets/templates/<key>.css 里,同样不要私自改;要调样式改模板文件,不要在文章 HTML 里写内联颜色去"修"。

微信兼容性

可以用:<style> 块 + CSS class(脚本自动内联)、display:flex / gap / flex:1 / linear-gradient / box-shadow / border-radius / text-shadow

禁用:::before / ::after / clip-path / clamp() / CSS animation / CSS Grid / 外部字体 / 非 mmbiz.qpic.cn 域名的图片 / position:relative(会被微信自动移除)


Phase 3.5: 签名区生成(两阶段核心分流点)

🟢 阶段 1:纯文字签名区(首次使用 / author-card.json 不存在)

检测:

test -f ~/.wechat-article-config/author-card.json || echo "走阶段1"

从 01-黄金五环 提取:
- 老板姓名 → author_name
- 一句话介绍(经历+差异化)→ author_tagline
- 价值观金句 → ending_motto

模板:

<div class="footer-fixed">
  <div class="footer-divider">— — —</div>
  <div class="sign-motto-box">
    <div class="sign-motto">"{从黄金五环提取的金句}"</div>
  </div>
  <div class="author-card-text">
    <div class="author-name">{姓名}</div>
    <div class="author-tagline">{一句话介绍}</div>
  </div>
</div>

不放:头像、公众号跳转链接、CTA 按钮。

生成后告诉老板:

💡 提示:现在你的签名卡是纯文字版。
如果想让底部显示你的头像并且可以点击跳转到你的公众号主页,
任何时候跟我说"配置签名卡"就行(需要 3 个信息,一次配好)。

🟡 阶段 2:完整签名卡(author-card.json 存在)

读取:

cat ~/.wechat-article-config/author-card.json

模板:照原 V3 Clean 的 .footer-fixed 结构,用 author-card.json 里的字段填充。所有 {{变量}} 做字符串替换,空字段就跳过对应行。

Visual self-check(必输出)

📋 视觉自检:
✅ Callout 卡片: {N} 个 (≥2 ✓)
✅ 金句高亮框: {N} 个 (≥1 ✓)
✅ 连续正文: 最长 {N} 段 (≤4 ✓)
✅ 分隔线: {N} 个 ✓
✅ Section 标题带暖色底: {N} 个 ✓
✅ 数据可视化: {组件类型} ✓
✅ 荧光笔高亮: {N} 处 ✓
✅ 签名区: {阶段 1 纯文字 / 阶段 2 完整卡} ✓

Phase 4: 预览 + 发布引导(默认路径)

> 学员是实体老板,不会 python。本 Phase 所有命令都是 LLM(你)替学员跑的。学员永远只看浏览器预览页——不看终端、不看路径、不看 traceback。

WorkBuddy 产物预览禁用规则(V1.5 硬规则)

WorkBuddy 会自动把生成的 HTML 放到"任务产生制品"里,并提供【打开网页预览】按钮。这个按钮打开的是 file://... 本地文件预览,只能看文章,不能作为公众号复制发布入口。

硬规则:
- 严禁 在 WorkBuddy 当前任务/项目目录里创建、保留、输出任何公众号文章 .html 文件作为"任务产生制品"。只要产物区出现 .html,WorkBuddy 就会自动给它挂 file:// 预览,学员会被带偏。
- 严禁 在学员本地内容库或知识库里创建、保留、输出公众号排版 .html 文件,尤其是 ~/Desktop/我的内容库(勿动)/12-公众号文章/。这个目录只能保存 .md / .txt 文稿,不能保存发布用 HTML。
- 严禁 把完整 HTML 作为最终回复附件、产物、代码块或可下载文件交给学员。HTML 只允许作为 RAW_HTML 字符串写入 tempfile.gettempdir() 下的临时目录,由 run_pipeline.py 消费。
- 可见产物只允许输出 .md / .txt:文章纯文稿、标题、摘要、发布提示。不要输出 .html。
- 如果平台或上一步已经生成了文章 .html 产物,LLM 必须在最终回复前删除它,或改名为 .html.txt 且文件内容开头写明"不要从这里复制到公众号"。
- 严禁 引导学员点击 WorkBuddy 产物卡片里的【打开网页预览】来复制公众号文章。
- 严禁 把 file://.../wechat_article_preview.html、file://.../*.html 当成发布预览页。
- 如果学员误打开 file:// 页面,页面必须显示红色错误提示:"这个页面不能用于公众号复制"。如果还能看到正常文章排版,说明模板 guard 被删了,必须停止并重新按 assets/template-v3-clean.html 生成。
- 公众号发布预览页必须由 run_pipeline.py / open_preview.py 弹出,地址栏必须以 http://127.0.0.1: 或 http://localhost: 开头。
- 如果浏览器地址栏不是 http://127.0.0.1:端口/wechat_article_preview.html,本轮视为发布预览失败,LLM 必须重新跑 Phase 4,不能让学员继续复制。
- open_preview.py 输出里必须出现 LOCALHOST_PREVIEW_URL=http://127.0.0.1:.../wechat_article_preview.html。没有这行 = 没有成功打开可复制预览页。

以下话术一旦出现在最终回复里,本轮必须视为失败并重跑 Phase 4:
- "保存到你本地内容库的 12-公众号文章 文件夹"
- "用 Edge 打开 HTML 文件"
- "用 Edge 打开这个 HTML 文件"
- "打开这个 HTML 文件 → 点击右上角红色一键复制"
- "任务产生制品里有 HTML"

WorkBuddy 里最后只能这样收口:

✅ 文章已生成,已自动打开可复制预览页。
请在浏览器里 http://127.0.0.1 开头、文件名为 wechat_article_preview.html 的页面点击【📋 一键复制到公众号】。
看到绿色成功提示,并且里面有复制时间、copy_id、section/span/mp/style 计数后,再去公众号后台粘贴。

内容库已保存 Markdown 文稿,公众号排版 HTML 不作为产物输出。

Step 1: 保存 Markdown + 自动弹出预览(LLM 唯一调用点)

⚠️ 硬规则:

  1. 不要用 python3 / python 命令名调脚本(Windows 默认只有 python,没 python3;Linux 反过来)。统一用 Python subprocess + sys.executable——它自动找到当前 Python 解释器,跨平台 100% OK。
  2. 不要用 shell 变量 ${TMPDIR:-/tmp} 算路径(Windows PowerShell/cmd 不认)。统一用 tempfile.gettempdir()。

先准备两个临时文件:
- ARTICLE_MD_PATH:刚写好的 Markdown 文稿
- RAW_HTML_PATH:刚生成的 V3 Clean RAW_HTML

然后必须调用 scripts/finalize_article.py。这个脚本会:
1. 把 Markdown 保存到内容库 12-公众号文章
2. 把 RAW_HTML 写入系统临时目录
3. 调用 run_pipeline.py
4. 自动弹出 localhost 预览
5. 输出 PIPELINE_STATUS={...} 供你验收

把下面这一段 Python 整段执行:

import sys, os, subprocess, json, re

script = os.path.join(os.getcwd(), "scripts", "finalize_article.py")
if not os.path.exists(script):
    raise RuntimeError(f"找不到 finalize_article.py(当前目录: {os.getcwd()})。检查 skill 安装路径。")

result = subprocess.run(
    [
        sys.executable,
        script,
        "--title", ARTICLE_TITLE,
        "--markdown", ARTICLE_MD_PATH,
        "--raw-html", RAW_HTML_PATH,
        "--recommend", TEMPLATE,  # TEMPLATE = Step 1.5 定的 key;学员点名要某套时把 "--recommend" 换成 "--template"
    ],
    capture_output=True, text=True, encoding="utf-8", errors="replace",
)
print(result.stdout)
status_match = re.search(r"PIPELINE_STATUS=(\\{.*\\})", result.stdout)
status = json.loads(status_match.group(1)) if status_match else {}

if result.returncode != 0 or not status.get("ok") or not status.get("localhost_preview_url"):
    print("⚠️ finalize_article 报错(LLM 处理,不要让学员看):", result.stderr, file=sys.stderr)
    raise RuntimeError("Markdown 已保存,但 localhost 发布预览没有成功弹出。禁止生成或打开 file:// HTML。")
if status.get("html_saved_to_content_library") is not False:
    raise RuntimeError("错误:HTML 不允许保存到内容库。")

run_pipeline.py 先校验骨架、定模板并把样式套进 raw(学员点名的 > 他以前选过的 > 你推荐的 > 经典),再按顺序跑两步,Windows / macOS / Linux 全兼容。输出里会有一行"排版模板: 编号 名字",Step 3 的话术要用到:

  1. 转微信标记:raw HTML → wechat_article.html(含 <section> / <span leaf=""> / <mp-style-type>)
  2. 弹增强预览页:浏览器自动打开 http://127.0.0.1:端口/wechat_article_preview.html,右上角浮动「📋 一键复制到公众号」红橙按钮。按钮调用本机预览服务的系统剪贴板接口,仍然写 text/html,不走浏览器复制。

Step 2: 学员看到的最终结果

学员的浏览器自动弹一个文章预览页,右上角一定有红橙色按钮和 V1.5 诊断面板,最下面有一排「换个样子」的模板按钮(点哪个,文章当场换成哪套,并走同一条系统剪贴板接口复制好)。

唯一粘贴姿势:
1. 在预览页点击【📋 一键复制到公众号】
2. 看到绿色提示:已复制完整微信格式
3. 绿色提示里必须有:复制时间、copy_id、section:N span:N mp:1 style:N、系统剪贴板:已读回校验
4. 再切公众号后台 Ctrl+V(Mac: Cmd+V)

按钮复制铁律:
- 只走本机系统剪贴板接口:POST /__copy_wechat → Python 调 copy_html_to_clipboard.py → 系统剪贴板 text/html
- 必须看到诊断信息:成功 toast 必须显示 section/span/mp/style。如果没有这些计数,本轮视为未成功复制公众号格式。
- CSS 必须先内联:convert_to_wechat_markup.py 必须把模板 <style> 中的 class 样式写进元素 style=""。如果 style 计数过低,说明排版已丢失,按钮必须红色失败,禁止继续复制。
- Windows 必须写 CF_HTML:不要只把裸 HTML 字符串塞给 PowerShell,也不要用 WinForms DataObject 代写;需要 StartHTML / StartFragment / EndFragment 偏移头,CF_HTML 临时文件必须二进制写入,并通过 Win32 HTML Format 先于 UnicodeText 写入剪贴板,否则部分目标程序会按纯文本粘贴。
- Windows 必须读回验证:SetClipboardData 后先读回一次,CloseClipboard 后短暂停顿,再重新打开剪贴板读回 HTML Format,确认仍包含 <section> 与 <mp-style-type>。任何一步失败都必须红色报错,不能提示复制成功。
- 禁止浏览器兜底复制:不要用 ClipboardItem / execCommand / writeText 去覆盖剪贴板。Windows 上这些路径可能把 <mp-style-type> 等微信专用标签清洗掉,表面提示复制成功,实际粘到公众号只剩文字。

学员全程只看浏览器,不需要看终端、不需要敲任何命令。

Step 3: 告诉学员怎么发(LLM 输出给学员看的话术)

✅ 文章写好了!浏览器应该已经弹出来一个预览页。

📋 下一步(一粘即发):
🎨 这篇用的是「{模板名}」排版。想换个样子:预览页最下面有一排按钮,点一下就换,换完自动复制好。(这一行必须说,不能省)

1. 看一眼浏览器预览页排版,地址栏必须是 http://127.0.0.1 开头,文件名必须是 wechat_article_preview.html
2. 在预览页右上角点【📋 一键复制到公众号】
3. 看到绿色提示,里面有复制时间、copy_id、section/span/mp/style 计数、系统剪贴板已读回校验
4. 打开 mp.weixin.qq.com → 新建图文消息 → Ctrl+V(Mac: Cmd+V)
5. 标题填《{刚才选的标题}》
6. 摘要填:{自动生成的摘要}
7. (可选) 上传封面图 → 点"保存为草稿"或"发布"

⚠️ 注意:
- 不要点"粘贴为纯文本",选默认粘贴就行
- 不要点 WorkBuddy 产物卡片里的【打开网页预览】去复制,那是 file:// 预览,只能看不能发
- 如果任务产物区出现了 `.html` 文件,也不要打开;那不是发布入口
- 如果绿色提示里没有 section/span/mp/style 计数或"系统剪贴板:已读回校验",不要粘贴,重新生成一次

⚠️ 学员可见话术绝对禁止内容(铁律):
- 任何文件路径(C:\Users\... / /var/folders/... / ~/.cache/...)
- 任何命令(python ... / pip install ...)
- 任何 traceback 或错误堆栈
- 任何"在终端里跑这个"的指引

故障兜底(如果 run_pipeline.py 跑挂了)

你(LLM)自己 debug,不要丢锅给学员。所有调用都用 Python subprocess + sys.executable 模式,绝不直接 shell 调 python / python3:

import sys, subprocess, os

# 单独跑某一步定位问题
SCRIPTS = os.path.join(os.getcwd(), "scripts")

# 单独转换
subprocess.run([sys.executable, os.path.join(SCRIPTS, "convert_to_wechat_markup.py"),
                "--input", raw_path, "--output", wechat_path, "--meta", meta_path], check=True)

# 单独塞剪贴板
subprocess.run([sys.executable, os.path.join(SCRIPTS, "copy_html_to_clipboard.py"),
                wechat_path], check=True)

# 单独弹预览
subprocess.run([sys.executable, os.path.join(SCRIPTS, "open_preview.py"),
                raw_path], check=True)

最后兜底:如果以上全挂了,也不要把生成的 wechat_article_preview.html 用 file:// 协议交给学员复制公众号。file:// 只允许目视检查排版,不能作为一键复制发布路径。LLM 必须修复本机 HTTP 预览服务,直到浏览器打开 http://127.0.0.1:端口/wechat_article_preview.html。


Phase 5: 封面图(可选,不强推)

只在老板主动说"要封面"或"生成一下封面"时做。 默认不生成——因为公众号后台自带封面编辑器,很多老板习惯在后台弄。

如果老板要:

  1. 从标题提取 2-6 字核心短语
  2. 挑一个 2-4 字标签("老板必看" / "AI实战" / "实体获客" / 行业词)
  3. 生成(用 Python subprocess + sys.executable 模式,跨平台):
import sys, os, subprocess, tempfile

preview_dir = os.path.join(tempfile.gettempdir(), "preview")
cover_path = os.path.join(preview_dir, "cover.jpg")
script = os.path.join(os.getcwd(), "scripts", "generate_cover.py")

subprocess.run([sys.executable, script,
                "--title", "{主标题}",
                "--label", "{标签}",
                "--output", cover_path], check=True)
  1. 规格 900×383(微信 2.35:1)

Phase 6: 签名卡配置(仅在阶段 2 触发时走)

触发条件:老板说"配置签名卡" / "想让文章底部有我头像" / "让读者能跳转我公众号"。

引导对话

好,配置签名卡我要问你 3 件事,一次配好以后所有文章自动用:

1️⃣ 你公众号的头像(微信永久图片 URL)
   怎么拿:公众号后台 → 素材管理 → 图片 → 上传一张头像 → 右键图片 → 复制图片地址
   (URL 一定是 mmbiz.qpic.cn 开头的,外部图床微信会屏蔽)

2️⃣ 你公众号主页的 __biz 参数
   怎么拿:发你公众号任意一篇历史文章的链接给我,我自己从里面提取
   (链接里 __biz= 后面那一串等号结尾的)

3️⃣ CTA 话术(底部引导关注的一句话)
   比如:"关注我,每周讲一个实体老板的真实问题"
   "想链接更多实体老板,在公众号留言"

我等你发 3 个信息过来,一次配好。

配置落盘

Step 1: 跑配置迁移脚本(必须,否则可能 mkdir 失败)

# 检测 ~/.wechat-article-config 是文件还是目录
# - 是目录或不存在 → 啥都不做
# - 是文件(旧版 skill 留下的) → 备份到 ~/.wechat-article-config-legacy.json
#   并升级为目录形式,自动迁移合法的 wechat API JSON
import sys, os, subprocess
script = os.path.join(os.getcwd(), "scripts", "migrate_legacy_config.py")
subprocess.run([sys.executable, script], check=True)

Step 2: 写入 author-card.json

# 组装 author-card.json:
# - author_name / author_tagline / ending_motto → 从 01-黄金五环 自动提取
# - author_avatar_url / mp_biz_id / cta_title → 老板提供
# - author_slogan_1/2 / cta_subtitle / ending_motto_sub → 可选,有就填没有就空
cat > ~/.wechat-article-config/author-card.json <<'EOF'
{...}
EOF

确认

✅ 签名卡已配置。以后写公众号自动用这套。
想改的话随时跟我说"改签名卡"。

📍 配置文件位置:~/.wechat-article-config/author-card.json
(你可以直接编辑这个文件,也可以跟我说改哪项)

严禁事项(学员版铁律)

  1. 严禁 在首次使用时索要 biz_id / 头像URL / CTA 等任何配置项(这些只在学员主动要"配置签名卡"时才问)
  2. 严禁 跳过 01-黄金五环 硬写文章。没画像 = 让老板先跑黄金五环采集
  3. 严禁 用任何老师的语言 DNA、金句、经历去写老板的文章
  4. 严禁 在文章里编造老板没有的数据、案例、人物、经历
  5. 严禁 写完不做六原则 + 六维评分 + 一票否决的三层自检
  6. 严禁 字数超过 2000(超过就砍,不给特殊情况加字数)
  7. 严禁 把 /tmp/ 写死在脚本或指令里,或用 bash 语法 ${TMPDIR:-/tmp} 算路径(Windows PowerShell/cmd 不认 → 路径错位 → 一键复制按钮不显示)。统一用 Python 的 tempfile.gettempdir()
  8. 严禁 在 HTML 中写注释、::before/after、外部图床、CSS 动画
  9. 严禁 调用任何公众号推送 API(本 skill 已下线自动推送,统一走 HTML 预览 + 一键复制 + 学员手动 Ctrl+V)
  10. 严禁 选项用 ABC(用数字 1 / 2 / 3)
  11. 严禁 把任何 python3 / pip / shell 命令、文件绝对路径、终端操作丢给学员手敲——学员是实体老板,看到命令文字会直接劝退。所有命令都是 LLM(你)替学员跑的,学员全程只看浏览器预览页。命令跑挂了你(LLM)自己 debug,绝对不要让学员碰终端
  12. 严禁 直接用 shell 调用 python3 scripts/xxx.py 或 python scripts/xxx.py——Windows 学员系统默认只有 python 命令、没有 python3;Linux/macOS 反过来。统一用 Python subprocess.run([sys.executable, script, ...]) 模式,sys.executable 自动找对的 Python 解释器
  13. 严禁 把 traceback / 错误堆栈 / 文件路径泄漏到学员可见的话术里。出错时 LLM 自己消化,告诉学员的话术只能是"重新跑一次"或"系统繁忙稍后再试"这种业务语言
  14. 严禁 假设学员装了 bs4 / requests 等任何第三方包——首次跑前必须 try: import bs4 except ImportError: subprocess.run([sys.executable, "-m", "pip", "install", "--quiet", "beautifulsoup4==4.12.3"]) 自动装齐
  15. 严禁 在 WorkBuddy 任务产物区输出公众号文章 .html 文件。WorkBuddy 会自动用 file:// 打开 .html,这会绕过 localhost 复制链路。最终可见产物只允许 .md / .txt;公众号排版 HTML 只能写入系统临时目录并通过 run_pipeline.py 自动弹出 localhost 页面。
  16. 严禁 在写文章之前让学员挑模板,严禁 自己写或改 <style>、在正文 HTML 里写死颜色——模板由脚本套,学员在预览页自己换(见 Phase 3 Step 1.5)

常见问题

5 问
答案由本站依据条目字段整理
公众号文章-学员复制版怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_151424ca/wechat-article-qinghuage。安装方式为未标注。装完刷新技能列表或重开客户端。

公众号文章-学员复制版支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

公众号文章-学员复制版权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

公众号文章-学员复制版收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

公众号文章-学员复制版用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。