# 教育博主爆款文章自动化创作 — 多 Agent 架构规划
## 一、整体架构概览
```
用户输入关键词/主题方向
│
▼
┌───────────────────┐
│ Orchestrator │ ← 总指挥 Agent,负责任务拆解与编排
└────────┬──────────┘
│ 并行 / 串行调度
┌────┴────────────────────────┐
│ │ │
▼ ▼ ▼
┌────────┐ ┌─────────┐ ┌──────────────┐
│Agent 1 │ │Agent 2 │ │ Agent 3 │
│爆款雷达│ │深度分析 │ │选题策略师 │
└────────┘ └─────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ Agent 4 │
│ 素材猎手 │
└──────┬───────┘
│
▼
┌──────────────┐
│ Agent 5 │
│ 初稿写手 │
└──────┬───────┘
│
▼
输出结构化初稿
(Markdown / DOCX)
```
---
## 二、各 Agent 详细定义
### Agent 0 — Orchestrator(总指挥)
| 属性 | 说明 |
|------|------|
| **角色定位** | 任务拆解、子 Agent 调度、结果聚合、异常重试 |
| **触发方式** | 用户输入:主题关键词 + 目标平台 + 风格偏好 |
| **输出** | 各阶段结构化 JSON,最终汇总给 Agent 5 |
**核心职责:**
- 解析用户意图,生成本次任务的「上下文包」
- 决定 Agent 1 & 2 并行运行,Agent 3 等待前两者完成后启动
- 在每步之间做质量门控(Quality Gate):若某步输出置信度低,触发重试或人工确认
- 维护全局 `task_state.json`,供各 Agent 共享读写
**伪代码逻辑:**
```python
task = parse_user_input(user_query)
[viral_articles, _] = await asyncio.gather(
agent1.run(task), # 爆款雷达
agent2.run(task) # 深度分析(可与 Agent1 并行预热)
)
topic = await agent3.run(viral_articles, analysis)
materials = await agent4.run(topic)
draft = await agent5.run(topic, materials)
export(draft, format="docx")
```
---
### Agent 1 — 爆款雷达(Viral Scout)
**定位:** 互联网爬取 + 爆款识别
| 属性 | 说明 |
|------|------|
| **输入** | 主题关键词、目标平台(微信公众号/知乎/小红书等)、时间范围 |
| **输出** | Top 20~50 篇爆款文章列表(含标题、URL、互动数据) |
**配备的 Skills / Tools:**
| Tool | 用途 |
|------|------|
| `web_search` | 在 Google/Bing 搜索「关键词 + site:zhihu.com」等平台限定查询 |
| `browser_use` | 自动化访问微信公众号搜索、小红书、知乎热榜 |
| `extract_structured_data` | 从 HTML 中提取:标题、发布日期、点赞/收藏/阅读数 |
| `rank_filter` | 按互动量阈值筛选,去除广告软文 |
**搜索策略:**
```
搜索词模板:
"{主题}" + "万赞" site:zhihu.com
"{主题}" + "爆款" site:mp.weixin.qq.com
"{主题}" intitle:"为什么" OR "如何" OR "必看"
平台优先级:知乎 > 公众号 > 小红书 > B站专栏
时间窗口:优先 6 个月内,补充 1 年内经典
```
**输出格式(JSON):**
```json
{
"articles": [
{
"id": "art_001",
"title": "为什么中国孩子学了12年英语还不会说?",
"url": "https://...",
"platform": "zhihu",
"publish_date": "2024-09-15",
"metrics": {
"likes": 45200,
"comments": 3100,
"shares": 8900,
"reads": 120000
},
"raw_html_path": "./cache/art_001.html"
}
]
}
```
---
### Agent 2 — 深度分析师(Pattern Analyst)
**定位:** 读取 Agent 1 产出的文章,提炼爆款规律
| 属性 | 说明 |
|------|------|
| **输入** | Agent 1 输出的文章列表 + 缓存 HTML |
| **输出** | 爆款因素分析报告(结构化) |
**配备的 Skills / Tools:**
| Tool | 用途 |
|------|------|
| `file_reading` | 读取缓存的 HTML/文本文件 |
| `llm_analysis` | 调用 Claude API 对每篇文章做结构分析 |
| `clustering` | 对标题、结构、情绪词做聚类,找共性模式 |
| `statistics` | 计算各维度与互动量的相关性 |
**分析维度(Prompt 设计):**
对每篇文章,Agent 2 提取以下维度:
```
1. 标题结构:疑问式 / 数字列表式 / 对比式 / 痛点式
2. 开篇钩子:前 100 字的情绪触发类型(焦虑/共鸣/惊喜/权威)
3. 内容框架:问题-分析-解决 / 故事-感悟 / 干货列表 / 观点辩论
4. 情绪曲线:全文情绪起伏标注(积极/中性/负面 per 段落)
5. 核心共鸣点:读者最高频的评论关键词
6. 结尾行动:有无 CTA,类型(转发/收藏/评论)
7. 字数区间 & 图文比例
```
**聚合分析输出:**
```json
{
"patterns": {
"title_formulas": [
{"type": "疑问+痛点", "avg_engagement": 38000, "example": "为什么..."},
{"type": "数字+结果", "avg_engagement": 29000, "example": "3个方法让..."}
],
"hook_types": {"anxiety": 0.62, "resonance": 0.28, "authority": 0.10},
"optimal_length": "2000-3500字",
"best_posting_time": "周二、周四 20:00-22:00",
"top_keywords": ["内卷", "教育焦虑", "自驱力", "学习方法"]
},
"insights": "当前教育赛道爆款集中于父母焦虑场景,疑问式标题 + 个人故事开篇 + 干货列表结构的组合胜率最高。"
}
```
---
### Agent 3 — 选题策略师(Topic Strategist)
**定位:** 结合分析结论,生成候选选题并打分排序
| 属性 | 说明 |
|------|------|
| **输入** | Agent 1 爆款列表 + Agent 2 规律分析 + 用户博主定位 |
| **输出** | Top 5 精选选题(含标题方案 + 角度说明 + 差异化策略) |
**配备的 Skills / Tools:**
| Tool | 用途 |
|------|------|
| `llm_ideation` | Claude API 生成选题方案 |
| `trend_check` | 搜索该话题近期热度(Google Trends / 微信指数) |
| `competition_check` | 检查同类文章饱和度,评估差异化空间 |
| `scoring_matrix` | 多维度打分:时效性/共鸣度/差异化/博主匹配度 |
**选题打分矩阵:**
| 维度 | 权重 | 评分标准 |
|------|------|----------|
| 话题热度 | 25% | 近 30 天搜索趋势 |
| 情感共鸣 | 25% | 是否命中核心焦虑/渴望 |
| 差异化空间 | 20% | 市面同类文章覆盖度 |
| 博主专业匹配 | 20% | 是否在博主知识圈内 |
| 内容可操作性 | 10% | 素材获取难度 |
**输出示例:**
```markdown
## 推荐选题 #1(综合评分 91/100)
**标题方案A:** 孩子不爱学习?99%的父母忽略了这个关键时刻
**标题方案B:** 我观察了500个爱学习的孩子,发现他们家都在做同一件事
**标题方案C:** 为什么"逼孩子学习"注定失败:一个教育心理学家的忠告
**核心角度:** 自驱力 vs 外驱力的底层逻辑,用研究数据 + 真实案例结合
**差异化点:** 市面文章多谈"方法",本文聚焦"动机形成机制"这一上游问题
**目标读者:** 6-12岁孩子的父母,有一定教育意识,但陷入管控困境
**预计爆款概率:** ⭐⭐⭐⭐⭐
```
---
### Agent 4 — 素材猎手(Material Hunter)
**定位:** 根据选定选题,自动收集多维度素材
| 属性 | 说明 |
|------|------|
| **输入** | 选定的选题 + 核心论点框架 |
| **输出** | 结构化素材库(数据/案例/观点/金句) |
**配备的 Skills / Tools:**
| Tool | 用途 |
|------|------|
| `web_search` | 搜索学术研究、权威报告、新闻事件 |
| `browser_use` | 访问知网/Google Scholar 摘要、教育部数据 |
| `pdf_reading` | 读取研究报告 PDF,提取关键数据 |
| `file_reading` | 处理下载的素材文件 |
| `dedup_filter` | 去重 + 可信度评级(来源权重) |
**素材分类收集策略:**
```
📊 数据类(权威背书)
→ 搜索:"{主题}" + "研究" + "数据" + site:edu.cn OR moe.gov.cn
→ 目标:3~5 条有出处的统计数据
📖 案例类(情感共鸣)
→ 搜索知乎/豆瓣真实经历帖
→ 目标:2~3 个典型正面案例 + 1~2 个反面案例
🎓 理论类(专业背书)
→ 搜索相关心理学/教育学理论(如自我决定理论SDT)
→ 目标:1~2 个理论框架,用通俗语言解释
💬 金句类(传播力)
→ 搜索名人/专家相关言论
→ 目标:3~5 条可引用金句
🔥 热点类(时效锚点)
→ 搜索近期相关社会事件、热搜话题
→ 目标:1 个时效性钩子
```
**输出格式:**
```json
{
"topic_id": "topic_001",
"materials": {
"data": [
{
"content": "2023年中国青少年心理健康报告显示,67%的学生表示学习动力来自外部压力而非内在兴趣",
"source": "中国心理卫生协会",
"url": "https://...",
"credibility": "high"
}
],
"cases": [...],
"theories": [...],
"quotes": [...],
"trending_hook": {...}
}
}
```
---
### Agent 5 — 初稿写手(Draft Writer)
**定位:** 整合所有产出,撰写符合爆款结构的文章初稿
| 属性 | 说明 |
|------|------|
| **输入** | 选题 + 标题方案 + 素材库 + 爆款结构模板 |
| **输出** | 完整文章初稿(Markdown + DOCX) |
**配备的 Skills / Tools:**
| Tool | 用途 |
|------|------|
| `llm_writing` | Claude API 分段写作,保持风格一致 |
| `docx_skill` | 将 Markdown 初稿转为格式化 Word 文档 |
| `style_checker` | 检查口语化程度、句子长度、情绪密度 |
| `seo_checker` | 关键词密度、标题党检测 |
**写作框架(基于 Agent 2 的爆款结构):**
```
【黄金开篇 — 前150字】
├── 钩子:真实场景/数据震惊/扎心问题(三选一)
└── 承诺:告诉读者读完能得到什么
【正文展开 — 1500~2500字】
├── 第一部分:现象描述 + 痛点放大(情绪积累)
├── 第二部分:底层原因分析(理论 + 数据背书)
├── 第三部分:解决方案(2~4个,可操作)
└── 案例穿插:每部分配1个真实案例
【情感收尾 — 最后200字】
├── 升华:从个体到群体的普遍意义
├── 共情:承认困难,给予希望
└── CTA:引导收藏/分享/评论互动
```
**输出物:**
- `draft.md` — Markdown 格式初稿(含批注标记)
- `draft.docx` — 排版完整的 Word 文档
- `metadata.json` — 标题备选、关键词、预计字数、建议配图关键词
---
## 三、工作流编排(Workflow Orchestration)
### 3.1 整体时序图
```
用户输入
│
▼ T+0s
[Orchestrator] 解析任务,创建 task_state.json
│
├──────────────────────────────┐
▼ T+10s (并行启动) ▼ T+10s (并行启动)
[Agent 1 爆款雷达] [Agent 2 深度分析]
抓取爆款文章列表 (等待Agent1首批结果后开始分析)
│ │
└──────────┬───────────────────┘
▼ T+3~5min
[Quality Gate 1]
爆款文章数 ≥ 20 篇?
分析维度覆盖率 ≥ 80%?
│
▼ T+5min
[Agent 3 选题策略师]
生成 Top5 选题候选
│
▼ [可选:人工确认节点]
用户选择/确认选题
│
▼ T+7min
[Agent 4 素材猎手]
并行收集各类素材
│
▼ [Quality Gate 2]
每类素材 ≥ 2 条?
可信度评级合格?
│
▼ T+12min
[Agent 5 初稿写手]
分段生成,风格校验
│
▼ T+18min
输出初稿(MD + DOCX)
+ 创作元数据报告
```
### 3.2 Agent 间通信协议
所有 Agent 通过共享的 `task_state.json` 传递数据,使用**乐观锁**避免并发冲突:
```json
{
"task_id": "task_20240925_001",
"status": "agent4_running",
"user_input": {
"keywords": ["自驱力", "孩子学习"],
"platform": "公众号",
"style": "温情理性"
},
"agent1_output": { "articles": [...], "completed_at": "..." },
"agent2_output": { "patterns": {...}, "completed_at": "..." },
"agent3_output": { "topics": [...], "selected_topic": "topic_001" },
"agent4_output": { "materials": {...}, "completed_at": "..." },
"agent5_output": { "draft_path": "./output/draft.docx" }
}
```
### 3.3 错误处理与重试机制
| 错误类型 | 处理策略 |
|----------|----------|
| 网页抓取失败 | 自动换备用搜索词,最多重试 3 次 |
| 爆款文章数量不足 | 扩大时间窗口至 2 年,或降低互动量阈值 |
| 素材可信度过低 | 标记为「待核实」,不阻断流程,在初稿中标注 |
| API 超时 | 指数退避重试,超过 3 次则降级为简化版输出 |
| 质量门控未通过 | 通知用户,提供人工干预接口 |
---
## 四、Claude Code 实现要点
### 4.1 项目结构
```
edu-blog-agent/
├── orchestrator.py # 总调度器
├── agents/
│ ├── agent1_scout.py # 爆款雷达
│ ├── agent2_analyst.py # 深度分析师
│ ├── agent3_strategist.py # 选题策略师
│ ├── agent4_hunter.py # 素材猎手
│ └── agent5_writer.py # 初稿写手
├── tools/
│ ├── web_scraper.py # 通用爬虫工具
│ ├── llm_client.py # Claude API 封装
│ ├── docx_exporter.py # Word 文档生成
│ └── quality_gate.py # 质量门控
├── prompts/
│ ├── analysis_prompt.md # Agent 2 分析提示词
│ ├── topic_prompt.md # Agent 3 选题提示词
│ └── writing_prompt.md # Agent 5 写作提示词
├── task_state.json # 共享状态文件
└── output/ # 最终产出
├── draft.md
├── draft.docx
└── metadata.json
```
### 4.2 Claude API 调用模式
**Agent 2 分析调用示例:**
```python
# 使用长上下文,批量分析文章
response = await claude_client.messages.create(
model="claude-opus-4-5",
max_tokens=4096,
system=open("prompts/analysis_prompt.md").read(),
messages=[{
"role": "user",
"content": f"请分析以下{len(articles)}篇文章的爆款规律:\n\n{articles_text}"
}]
)
```
**Agent 5 写作调用(分段生成):**
```python
# 分三次调用,保证质量:开篇 → 正文 → 结尾
for section in ["opening", "body", "closing"]:
draft_section = await claude_client.messages.create(
model="claude-opus-4-5",
system=writing_system_prompt,
messages=conversation_history + [{
"role": "user",
"content": f"请写{section}部分,素材:{materials[section]}"
}]
)
conversation_history.append({"role": "assistant", "content": draft_section})
```
### 4.3 关键提示词设计原则
| Agent | 提示词重点 |
|-------|-----------|
| Agent 2 | 要求输出严格 JSON,维度固定,便于程序化消费 |
| Agent 3 | 给定打分矩阵作为约束,要求附上推理过程 |
| Agent 4 | 强调来源可信度评级,拒绝无出处数据 |
| Agent 5 | 注入爆款结构模板 + 博主人设 + 目标读者画像,分段生成保一致性 |
---
## 五、扩展建议
### 近期可加入
- **Agent 6 — 配图建议师**:根据初稿内容,推荐配图关键词并调用 Unsplash/AI 画图 API
- **人工反馈回路**:用户对初稿打分,结果写回 task_state,供下次优化提示词
### 中期可加入
- **选题记忆库**:用向量数据库存储历史选题,避免重复,发现新角度
- **A/B 标题测试**:接入微信/小红书数据,自动追踪不同标题版本的真实表现
### 长期演进
- **个人风格模型微调**:收集博主历史爆款,Fine-tune 一个风格专属写手
- **发布自动化**:打通公众号/小红书 API,实现一键排版发布
---
> 💡 **核心原则:Agent 越专,效果越好。** 每个 Agent 只做一件事,提示词精准,输出格式固定——这是保证整条流水线稳定可控的关键。