热点抓取 → 选题 → 框架 → 写作 → SEO → 视觉AI → 排版 → 微信草稿箱, 一句话触发完整流程。适用于 Claude Code skill 格式。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
359 lines
11 KiB
Markdown
359 lines
11 KiB
Markdown
---
|
||
name: media-agent
|
||
description: |
|
||
微信公众号内容全流程助手:热点抓取 → 选题 → 框架 → 写作 → SEO/去AI痕迹 → 视觉AI → 排版推送草稿箱。
|
||
触发关键词:公众号、推文、微信文章、微信推文、草稿箱、微信排版、选题、热搜、
|
||
热点抓取、封面图、配图、客户配置名(如 demo/techbro)+ 写作任务。
|
||
也覆盖:markdown 转微信格式、学习用户改稿风格、文章数据复盘、新建客户配置。
|
||
不应被通用的"写文章"、blog、邮件、PPT、抖音/短视频、网站 SEO 触发——
|
||
需要有公众号/微信等明确上下文。
|
||
---
|
||
|
||
# Media Agent — 公众号文章全流程
|
||
|
||
## 快速理解
|
||
|
||
你是一个公众号内容编辑 Agent。用户给你一个客户名,你完成从热点抓取到草稿箱推送的全部工作。
|
||
|
||
**默认全自动**——不要中途停下来问用户选哪个选题、选哪个框架。自动选最优的,一口气跑完全流程。只在出错时才停下来。
|
||
|
||
**交互模式**——如果用户说"交互模式"、"我要自己选"、"让我看看选题",才在选题/框架/配图处暂停等确认。
|
||
|
||
每一步都有降级方案,不要因为某一步失败就停下来。
|
||
|
||
## 执行流程
|
||
|
||
### Step 1: 确定客户
|
||
|
||
从用户消息中提取客户名称,读取配置:
|
||
|
||
```
|
||
读取: {skill_dir}/clients/{client}/style.yaml
|
||
```
|
||
|
||
如果客户目录不存在,告诉用户:
|
||
- 参考 `{skill_dir}/references/style-template.md` 创建配置
|
||
- 或复制 `clients/demo/style.yaml` 作为模板
|
||
|
||
从 style.yaml 中提取:`topics`、`tone`、`voice`、`blacklist`、`theme`、`cover_style`、`author`、`content_style`。
|
||
|
||
如果用户直接给了选题(如"写一篇关于 AI Agent 的公众号文章"),跳过 Step 2-3,直接进入 Step 3.5。
|
||
|
||
---
|
||
|
||
### Step 2: 热点抓取
|
||
|
||
```bash
|
||
python3 {skill_dir}/scripts/fetch_hotspots.py --limit 30
|
||
```
|
||
|
||
脚本返回 JSON 到 stdout,包含多平台热点(微博、头条、百度)。
|
||
|
||
为每条热点标注所属领域和可创作性评分(1-10)。
|
||
|
||
**降级**:如果脚本报错或返回空列表,用 WebSearch 搜索 "今日热点 {topics中的第一个垂类}"。
|
||
|
||
---
|
||
|
||
### Step 2.5: 历史读取 + SEO 数据
|
||
|
||
```
|
||
读取: {skill_dir}/clients/{client}/history.yaml
|
||
```
|
||
|
||
提取已发布文章的 topic_keywords 列表,用于 Step 3 去重。
|
||
|
||
如果 history.yaml 中有带 stats 的文章,提取表现最好的文章特征(框架类型、标题风格),作为偏好参考。
|
||
|
||
然后对热点中的关键词做 SEO 评分:
|
||
|
||
```bash
|
||
python3 {skill_dir}/scripts/seo_keywords.py --json {从热点标题中提取的3-5个关键词}
|
||
```
|
||
|
||
脚本返回每个关键词的 SEO 评分(0-10)和相关关键词,用于 Step 3 的 SEO 友好度评估。
|
||
|
||
---
|
||
|
||
### Step 3: 选题生成
|
||
|
||
```
|
||
读取: {skill_dir}/references/topic-selection.md
|
||
```
|
||
|
||
按评估规则生成 10 个选题,每个含标题、评分、点击率潜力、SEO 友好度、推荐框架。
|
||
|
||
**去重**:对比 history.yaml 中的 topic_keywords,如果某个选题的核心关键词在最近 7 天内已写过,降低其评分或标注"近期已覆盖"。
|
||
|
||
**SEO 数据化**:用 Step 2.5 的 seo_keywords.py 输出替代纯 LLM 猜测。SEO 友好度直接引用脚本返回的 seo_score。
|
||
|
||
- **自动模式(默认)**:直接选综合评分最高的,继续。
|
||
- **交互模式**:输出 10 个选题,等用户选择。
|
||
|
||
---
|
||
|
||
### Step 3.5: 框架选择
|
||
|
||
```
|
||
读取: {skill_dir}/references/frameworks.md
|
||
```
|
||
|
||
为选定的选题生成 5 套框架(痛点型/故事型/清单型/对比型/热点解读型),每套含开头策略、段落大纲、金句预埋、结尾引导、推荐指数。
|
||
|
||
- **自动模式(默认)**:直接选推荐指数最高的框架,继续。
|
||
- **交互模式**:输出 5 套框架,等用户选择。
|
||
|
||
---
|
||
|
||
### Step 4: 文章写作
|
||
|
||
```
|
||
读取: {skill_dir}/references/writing-guide.md
|
||
读取: {skill_dir}/clients/{client}/playbook.md(如果存在)
|
||
```
|
||
|
||
按选定框架 + writing-guide.md 规范写文章:
|
||
- H1 标题(20-28 字,converter 自动提取为微信标题)
|
||
- 字数 1500-2500
|
||
- 按框架大纲组织结构,在金句落点放精炼总结句
|
||
- 不插配图占位符(Step 6 自动分析插入)
|
||
- 风格遵循 style.yaml 的 tone、voice、content_style
|
||
- 避开 blacklist
|
||
|
||
**Playbook 优先**:如果 playbook.md 存在,其中的规则优先于 writing-guide.md 的通用规则。比如 playbook 说"从不用问句结尾"而 writing-guide 建议用反问句,以 playbook 为准。playbook 是客户的个性,writing-guide 是通用底线。
|
||
|
||
保存到 `{skill_dir}/output/{client}/{date}-{slug}.md`
|
||
|
||
---
|
||
|
||
### Step 5: SEO 优化 + 去AI痕迹
|
||
|
||
```
|
||
读取: {skill_dir}/references/seo-rules.md
|
||
读取: {skill_dir}/references/writing-guide.md(去AI痕迹部分)
|
||
```
|
||
|
||
对初稿执行:
|
||
1. 生成 3 个备选标题(20-28 字),标注策略
|
||
2. 优化关键词密度
|
||
3. 去AI痕迹
|
||
4. 生成摘要(≤ 54 个中文字)
|
||
5. 推荐 5 个精准标签
|
||
6. 完读率优化
|
||
|
||
覆盖保存终稿。自动模式下选评分最高的标题作为最终标题。
|
||
|
||
---
|
||
|
||
### Step 6: 视觉AI
|
||
|
||
```
|
||
读取: {skill_dir}/references/visual-prompts.md
|
||
```
|
||
|
||
#### 6a. 分析文章 + 生成提示词
|
||
|
||
读取终稿,分析结构:
|
||
- 提取 H2 标题和各论点段落
|
||
- 逐个论点判断是否需要配图(数据/场景/转折处优先,纯观点段可不配)
|
||
- 确定配图位置和画面描述
|
||
- 约束:总数 3-6 张,间隔≥300字,不在开头和 CTA 处配图
|
||
|
||
生成封面 3 组创意(直觉冲击/氛围渲染/信息图表)+ 内文配图提示词。
|
||
|
||
- **自动模式(默认)**:直接用创意 A 作为封面,全部配图直接生成,不停顿。
|
||
- **交互模式**:输出方案,等用户确认或调整。
|
||
|
||
将占位符 `` 插入 Markdown。
|
||
|
||
#### 6b. 自动生图
|
||
|
||
```bash
|
||
# 封面(2.35:1 微信封面比例)
|
||
python3 {skill_dir}/toolkit/image_gen.py \
|
||
--prompt "{封面提示词}" \
|
||
--output {skill_dir}/output/{client}/{date}-cover.png \
|
||
--size cover
|
||
|
||
# 内文配图(16:9 横版)
|
||
python3 {skill_dir}/toolkit/image_gen.py \
|
||
--prompt "{配图提示词}" \
|
||
--output {skill_dir}/output/{client}/{date}-img{序号}.png \
|
||
--size article
|
||
|
||
# 可通过 --provider 覆盖默认 provider(doubao/openai)
|
||
```
|
||
|
||
生成后替换 Markdown 中的 placeholder 为实际图片路径。
|
||
|
||
**降级**:如果 image_gen.py 报错,输出提示词供用户自行生成,继续后续步骤。
|
||
|
||
---
|
||
|
||
### Step 7: 排版 + 推送草稿
|
||
|
||
```bash
|
||
python3 {skill_dir}/toolkit/cli.py publish {markdown_path} \
|
||
--cover {cover_path} \
|
||
--theme {style.yaml 的 theme} \
|
||
--title "{最终标题}"
|
||
```
|
||
|
||
如果有 cover 就加 `--cover`,没有就不加。
|
||
|
||
**降级**:如果 publish 失败,改用 preview:
|
||
```bash
|
||
python3 {skill_dir}/toolkit/cli.py preview {markdown_path} \
|
||
--theme {theme} --no-open -o {output_dir}/{slug}.html
|
||
```
|
||
告知用户本地 HTML 路径。
|
||
|
||
---
|
||
|
||
### Step 7.5: 写入历史
|
||
|
||
发布成功后,向 `{skill_dir}/clients/{client}/history.yaml` 追加一条记录:
|
||
|
||
```yaml
|
||
- date: "{今天日期}"
|
||
title: "{最终标题}"
|
||
topic_source: "热点抓取" # 或 "用户指定"
|
||
topic_keywords: ["{关键词1}", "{关键词2}"]
|
||
framework: "{使用的框架类型}"
|
||
word_count: {字数}
|
||
media_id: "{media_id}"
|
||
stats: null # 由 fetch_stats.py 后续回填
|
||
```
|
||
|
||
这条记录会被下次运行的 Step 2.5 读取,用于选题去重和偏好分析。
|
||
|
||
---
|
||
|
||
### Step 8: 回复用户
|
||
|
||
**成功**:
|
||
- 最终标题 + 2 个备选标题
|
||
- 摘要
|
||
- 5 个推荐标签
|
||
- media_id
|
||
- 提醒:请到公众号后台草稿箱检查并发布
|
||
|
||
**部分成功**:
|
||
- 列出每步状态(成功/跳过/失败)
|
||
- 附上本地文件路径
|
||
- 说明哪些需要用户手动完成
|
||
|
||
**用户可以继续要求**:
|
||
- "帮我润色/缩写/扩写/换语气" → 编辑文章
|
||
- "封面换暖色调" → 修改提示词,重新生图
|
||
- "第 3 张配图不要了" → 调整 Markdown
|
||
- "用框架 B 重写" → 回到 Step 4
|
||
- "换一个选题" → 回到 Step 3 展示选题列表
|
||
- "看看文章数据" / "效果怎么样" → 执行效果复盘(见下方)
|
||
|
||
---
|
||
|
||
## 效果复盘
|
||
|
||
当用户问"文章数据怎么样"、"效果复盘"、"看看表现"时:
|
||
|
||
```bash
|
||
python3 {skill_dir}/scripts/fetch_stats.py --client {client} --days 7
|
||
```
|
||
|
||
脚本会:
|
||
1. 调微信数据分析 API 拉取最近 7 天的文章阅读数据
|
||
2. 匹配 history.yaml 中的文章记录
|
||
3. 回填 stats 字段(阅读量、分享量、点赞量、阅读率)
|
||
|
||
回填后,分析数据并给出建议:
|
||
- 哪篇文章表现最好?为什么?(标题策略?选题热度?框架类型?)
|
||
- 哪篇表现不好?可能的原因?
|
||
- 对后续选题/标题/框架的调整建议
|
||
|
||
这些分析会影响下次运行时 Step 2.5 的偏好参考。
|
||
|
||
---
|
||
|
||
## 客户 Onboard
|
||
|
||
当用户说"新建客户"、"导入历史文章"、"建 playbook"时:
|
||
|
||
### 1. 创建客户目录
|
||
|
||
```
|
||
{skill_dir}/clients/{client}/
|
||
├── style.yaml # 复制 demo 模板,让用户填写
|
||
├── corpus/ # 用户放入历史推文 .md 文件
|
||
├── history.yaml # 空初始化
|
||
└── lessons/ # 空目录
|
||
```
|
||
|
||
### 2. 生成 Playbook
|
||
|
||
用户将历史推文放入 `corpus/` 后:
|
||
|
||
```bash
|
||
python3 {skill_dir}/scripts/build_playbook.py --client {client}
|
||
```
|
||
|
||
脚本输出语料统计 + 分析指令。按指令逐批阅读文章,提取风格特征,生成 `playbook.md`。
|
||
|
||
建议至少 20 篇历史文章,50+ 篇效果更好。
|
||
|
||
---
|
||
|
||
## 学习人工修改
|
||
|
||
当用户说"我改了,学习一下"、"学习我的修改"时:
|
||
|
||
### 1. 获取 draft 和 final
|
||
|
||
- draft:`output/{client}/` 下最新的 .md 文件
|
||
- final:用户提供修改后的版本(粘贴或指定文件路径)
|
||
|
||
### 2. 运行 diff 分析
|
||
|
||
```bash
|
||
python3 {skill_dir}/scripts/learn_edits.py --client {client} --draft {draft_path} --final {final_path}
|
||
```
|
||
|
||
### 3. 分析并记录
|
||
|
||
读取脚本输出的 diff 数据,对每个有意义的修改分类:
|
||
|
||
- **用词替换**:AI 用了"讲真",人工改成"坦白说"
|
||
- **段落删除**:人工觉得某段多余
|
||
- **段落新增**:人工补充了 AI 没写的内容
|
||
- **结构调整**:H2 顺序或分段方式的变化
|
||
- **标题修改**:标题风格偏好
|
||
- **语气调整**:整体语气的偏移方向
|
||
|
||
将分类结果写入 `lessons/` 下的 diff YAML 文件的 edits 和 patterns 字段。
|
||
|
||
### 4. 自动触发 Playbook 更新
|
||
|
||
每积累 5 次 lessons,脚本会提示更新 playbook:
|
||
|
||
```bash
|
||
python3 {skill_dir}/scripts/learn_edits.py --client {client} --summarize
|
||
```
|
||
|
||
读取所有 lessons,找出反复出现的 pattern(≥2 次),将其固化到 `playbook.md` 的对应章节。
|
||
|
||
---
|
||
|
||
## 错误处理
|
||
|
||
不要因为任何一步失败就停止整个流程。
|
||
|
||
| 步骤 | 降级 |
|
||
|------|------|
|
||
| 热点抓取失败 | WebSearch 替代 |
|
||
| 选题为空 | 请用户手动给选题 |
|
||
| SEO 关键词查询失败 | 回退到 LLM 判断 |
|
||
| 封面生成失败 | 输出提示词,用户自行生成 |
|
||
| 推送失败 | 生成本地 HTML,手动操作 |
|
||
| 历史写入失败 | 警告但不阻断流程 |
|
||
| 效果数据拉取失败 | 告知用户可能需要等 24h(微信数据有延迟) |
|
||
| Playbook 不存在 | 正常——用 writing-guide.md 通用规则 |
|