Back to skills
extension
Category: OtherAPI key required

wechat-article-writer

微信公众号文章撰写技能。覆盖从信息收集、写作思路构建、文章撰写、排版配图到上传草稿箱的完整流程。适用于需要撰写公众号文章并发布到微信草稿箱的场景。当用户提到写公众号文章、微信公众号、发文、文章、上传草稿箱等关键词时触发此技能。

personAuthor: user_0f287ac2hubcommunity

运行前环境检查(每次执行前必做)

在开始写作流程前,直接询问用户是否已配置好以下环境:

📋 运行前检查

请确认以下环境是否已配置好:

1. ✅ Python 3.x 已安装
   └─ 作用:运行所有 API 脚本(获取 Token、上传图片、创建草稿等)

2. ✅ 环境变量 APPID(微信公众号 AppID)
   └─ 作用:微信公众号的唯一标识,调用 API 时必需

3. ✅ 环境变量 APPSECRET(微信公众号 AppSecret)
   └─ 作用:微信公众号的密钥,用于获取 Access Token(相当于登录密码)

4. ✅ 环境变量 ARK_API_KEY(火山方舟 API Key)
   └─ 作用:调用火山方舟豆包 Seedream 模型生成文章配图

5. ✅ 公众号 API IP 白名单已配置(添加你的网络出口 IP)
   └─ 作用:微信公众号的安全机制,只允许白名单内的 IP 调用 API

如全部配置好,回复"已配置好"直接开始。
如有未配置的,告诉我哪一项,我会指导你如何获取。

用户回复后的处理:

  • "已配置好"或类似确认 → 直接进入完整工作流程
  • 有缺失项 → 针对性指导配置:
    • APPID/APPSECRET:引导至微信开发者平台获取
    • ARK_API_KEY:引导至火山方舟控制台获取
    • IP 白名单:帮用户查出口 IP,引导添加

完整工作流程

第一步:信息收集

  1. 明确用户给出的文章主题或关键词
  2. 使用 web_search 工具搜索相关领域的最新资讯、技术动态和权威观点
  3. 从多个信息源交叉验证关键数据和事实
  4. 整理信息要点,形成素材清单

信息收集原则:

  • 优先选择权威来源(官方文档、知名科技媒体、学术论文)
  • 关注时效性,优先选择近期的信息
  • 收集至少 3 个不同角度的信息源
  • 标注关键数据和引用来源

第二步:构建写作思路(拆分为 4 步,每步需用户确认)

2.1 选题定位

基于收集的信息,向用户展示选题定位建议:

📍 选题定位建议

**核心主题**:{一句话概括主题}

**目标受众**:{读者群体画像}

**文章定位**:
- 类型:{科普/分析/评论/教程}
- 风格:{专业严谨/轻松幽默/深度思考}
- 价值:{读者能获得什么}

**核心观点**:{一句话表达核心立场}

---
请确认这个选题定位是否符合你的预期?
回复"同意"继续,或提出修改意见。

用户确认 → 进入下一步 用户反对 → 重新调整选题定位


2.2 标题优化

生成 3-5 个备选标题(标题不要超过32个字符,中文每个字符计1,英文和数字每个计1):

📝 备选标题(请选择或修改)

1. {标题 1 - 突出冲突/反差}
2. {标题 2 - 突出数据/事实}
3. {标题 3 - 突出悬念/疑问}
4. {标题 4 - 突出价值/收益}
5. {标题 5 - 突出情感/共鸣}

---
请选择一个标题(回复序号),或提出修改意见。

用户选择 → 进入下一步 用户不满意 → 重新生成标题


2.3 框架搭建

基于选定的标题,构建文章结构:

📋 文章结构框架

**选定标题**:{用户选择的标题}

**核心观点**:{一句话概括}

**结构大纲**:
├── 引言(约 200 字)
│   └── {开头方式:现象/数据/故事/问题}
├── 分论点 1(约 500 字)
│   ├── 观点:...
│   └── 论据:{数据/案例/引用}
├── 分论点 2(约 500 字)
│   ├── 观点:...
│   └── 论据:{数据/案例/引用}
├── 分论点 3(约 500 字)
│   ├── 观点:...
│   └── 论据:{数据/案例/引用}
└── 总结(约 200 字)
    └── {升华观点/引发思考/行动建议}

**配图规划**:
- 封面图:{主题关键词}
- 正文配图 1:{对应分论点 1}
- 正文配图 2:{对应分论点 2}
- 正文配图 3:{对应分论点 3}

---
请确认这个结构框架是否合理?
回复"同意"继续,或提出修改意见。

用户确认 → 进入下一步 用户反对 → 重新调整框架


2.4 全文撰写

按照确认的框架撰写全文:

✍️ 文章初稿已完成

**标题**:{选定标题}
**字数**:约{XXX}字
**结构**:引言 + {X}个分论点 + 总结
**配图标记**:{X}处 [IMG:描述]

**文章内容**:
{完整文章 Markdown}

---
请审阅文章初稿:
- 如满意,回复"同意"进入排版配图阶段
- 如需修改,指出具体问题(如:某段落需要调整/论据不足/语气不对等)

用户确认 → 进入第四步(排版与配图) 用户要求修改 → 重新撰写文章(保留框架,调整内容)

第三步:撰写文章

  1. 严格按照确认的写作思路撰写
  2. 遵循写作风格指南(详见 references/writing-style.md
  3. 撰写时注意微信公众号的字段限制:
    • 摘要不超过128字
    • 正文不超过2万字
  4. 正文中需要插入图片的位置用标记 [IMG:描述] 标注

写作质量要求:

  • 开头 3 句话内必须抓住读者注意力
  • 适当使用比喻和类比解释技术概念
  • 数据和事实要有来源
  • 幽默感点到为止,不喧宾夺主

Markdown 格式要求(排版必需):

  • ✅ 必须包含至少 2 个 ## 段落标题
  • ✅ 如需灰色摘要区,请使用 [SUMMARY][/SUMMARY] 包裹摘要内容
  • ✅ 建议包含至少 2 个 [IMG:描述] 图片占位符
  • ✅ 建议包含至少 1 个 💡 强调色块

第四步:排版与配图

  1. 保存文章为 Markdown 文件:将撰写好的文章保存为 article.md

  2. 运行排版脚本

    python scripts/format_article.py --input article.md --output article.html
    
  3. 生成配图

    # 封面图(3136x1344)
    python scripts/generate_image.py --prompt "{详细描述封面图的内容}" --output cover.jpg --type cover
    
    # 正文配图 1(3136x1344)
    python scripts/generate_image.py --prompt "{详细描述正文配图的内容}" --output image1.jpg --type content
    
    # 正文配图 2(如需要)
    python scripts/generate_image.py --prompt "..." --output image2.jpg --type content
    
  4. 上传图片

    # 上传封面图(获取 thumb_media_id)
    python scripts/upload_image.py --thumb cover.jpg
    
    # 上传正文图片(获取 URL)
    python scripts/upload_image.py --content image1.jpg
    python scripts/upload_image.py --content image2.jpg
    
  5. 替换图片占位符

    • 将 HTML 中的图片占位符注释替换为微信返回的实际图片 URL
    • 当前仓库未提供自动替换脚本,可先用文本编辑器手动替换
  6. 检查排版效果:在浏览器中打开 article.html 预览

排版核心规则(研究院纪要风格):

  • 主标题:纯文本大标题,不使用标题卡片
  • 摘要:使用 [SUMMARY] 包裹,渲染为浅灰色摘要区域
  • 一级标题:编号章节标题(## 标题中不要手写 01 / 前缀)
  • 一级标题文字:蓝色粗体 + 浅蓝底部高亮,接近机构公众号风格
  • 二级标题:蓝色小节标题,不使用重卡片装饰
  • 正文:灰黑色文字 + 大段留白 + 克制配色,突出纪要内容
  • 图片:直接展示,不使用厚重边框和复杂标签条
  • 强调段:弱化组件感,更像正文中的重点提示

配图规则:

  • 所有配图固定使用 3136x1344
  • 不支持传入自定义尺寸或宽高比参数
  • 每篇文章至少1张配图

用户确认 → 进入下一步 用户反对 → 重新调整排版

第五步:上传草稿箱

python scripts/add_draft.py --title "标题" --content_file article.html --thumb_media_id "封面 media_id" --author "作者" --digest "摘要"

上传流程注意事项:

  • 正文中的图片必须通过"上传发表内容中的图片"接口获取 URL,外部 URL 会被过滤
  • 封面图必须通过"上传永久素材"接口获取 thumb_media_id
  • 所有 API 调用需在服务器端完成
  • Access Token 有效期 7200 秒,脚本会自动获取

脚本说明

| 脚本 | 用途 | 使用方式 | |------|------|---------| | scripts/get_token.py | 获取 Access Token(带缓存) | 自动从环境变量读取 APPID/APPSECRET,缓存 2 小时 | | scripts/generate_image.py | 使用火山方舟生成配图 | --prompt "描述" --output image.jpg --type cover/content(固定尺寸 3136x1344) | | scripts/upload_image.py | 上传图片素材 | --thumb xxx.jpg(封面)或 --content xxx.jpg(正文) | | scripts/format_article.py | Markdown 转 HTML 排版 | --input article.md --output article.html | | scripts/add_draft.py | 新建草稿 | --title "标题" --content_file article.html --thumb_media_id "xxx"--json_file draft_data.json | | scripts/publish_draft.py | 发布草稿 | --media_id "xxx" 发布已审核的草稿 |