微信公众号选题分析
MCP 工具
| MCP 工具 | 说明 |
|---|---|
claim_topic (project_id, task_id?) |
从项目选题池认领下一个未用选题(选题首选来源,池非空必用) |
list_project_titles (project_id) |
查看系统内已有标题(定标题前必调) |
list_drafts (project_id) |
查看已有草稿 |
list_published_articles (project_id) |
查看已发布文章 |
research_topics (project_id, keywords?, domain?, count?) |
选题研究 |
score_article (project_id, content, title?, domain?) |
话题评分 |
generate_outline (project_id, topic, template?, domain?, style?, keywords?) |
内容框架生成 |
完整研究流程
按以下步骤执行选题研究,每一步都产出可追溯的文件。
步骤 0:确定选题来源(优先选题池)
选题研究前,先确定本次选题,不要凭空 research。
如何判断任务是否已指定主题:检查本任务的 user prompt(用户消息)——
- 含
create content about: <X>(about:后跟具体话题)→<X>就是任务指定主题。 - 是
research and create content ... choose the optimal theme这类让你自己选题的措辞 → 任务未指定主题。 - ⚠️ 项目 profile 的 keywords 不是主题,不能当作"已指定主题"。
分两种情况:
- 任务已指定主题(user prompt 含
about: <X>):直接采用<X>,禁止调用claim_topic(避免与服务端建任务时的预认领重复消费)。仍需执行步骤 1 查重(若与已有标题冲突,调整措辞而非换题),通过后跳到步骤 4生成大纲,跳过步骤 2~3 的候选研究。 - 任务未指定主题:先认领选题池:
claim_topic(project_id="$PROJECT_ID", task_id="$TASK_ID")- 返回非空
topic→ 直接采用(该选题已被原子标记为 used),执行步骤 1 查重后跳到步骤 4。 - 返回
null(选题池为空)→ 执行下方步骤 1~3 的完整研究流程作为候补。
- 返回非空
选题池是用户预置、希望被优先消费的选题。只要池里有,就必须用池里的,不得绕过去调
research_topics。
步骤 1:查重——收集已有内容
定标题前必须先检查已有标题,避免重复。
调用以下三个工具:
list_project_titles(project_id="$PROJECT_ID")
list_drafts(project_id="$PROJECT_ID")
list_published_articles(project_id="$PROJECT_ID")
从结果中提取所有已有标题和选题关键词,构建排除列表。后续标题必须避开这些已有标题和近似表达。
产出:在 $DIR/01-research.md 中记录已有内容摘要和排除列表。
步骤 2:选题研究——生成候选话题
调用 research_topics 获取话题建议:
research_topics(
project_id="$PROJECT_ID",
keywords=["关键词1", "关键词2"], // 从 get_project_profile 获取
domain="general", // 可选: general, tea, tech, lifestyle, culture, business, education
count=5 // 生成 5 个候选
)
参数说明:
keywords:从项目 profile 中的 keywords 字段获取,结合用户输入的选题方向domain:根据账号领域选择,不确定时使用generalcount:建议 5-10 个候选,以便对比筛选
产出:将所有候选话题及其 viral_score、angle、keywords 写入 $DIR/01-research.md。
步骤 3:话题评分——筛选最优选题
对每个候选话题调用 score_article 评估爆款潜力:
score_article(
project_id="$PROJECT_ID",
title="候选标题",
content="话题的核心观点描述(2-3句话)",
domain="general"
)
对比所有候选话题的评分,自动选择得分最高且不在排除列表中的话题。
产出:在 $DIR/01-research.md 中记录评分明细和最终选择理由。
步骤 4:生成大纲——构建内容框架
基于选定话题生成大纲:
generate_outline(
project_id="$PROJECT_ID",
topic="选定的话题",
template="authoritative", // 选择匹配的模板
domain="general",
style="dan-koe", // 从项目 profile 获取
keywords=["关键词1", "关键词2"]
)
模板选择指南:
| 模板 | 值 | 适合内容 | 特征 |
|---|---|---|---|
| 权威 | authoritative |
深度分析、行业解读、专业观点 | 观点先行,论证支撑,结论有力 |
| 对比 | comparison |
产品对比、方案评估、选择指南 | 多维对比,优劣势分析,推荐结论 |
| 文化 | cultural |
文化解读、历史故事、人文关怀 | 叙事性强,情感共鸣,文化深度 |
| 实用 | practical |
教程攻略、方法论、操作指南 | 步骤清晰,可操作性强,场景具体 |
选择原则:知识科普类用 authoritative,产品/方案类用 comparison,文化情感类用 cultural,方法教程类用 practical。不确定时默认 authoritative。
产出:保存为 $DIR/02-outline.md。
产出要求
选题研究完成后,应产出以下文件:
| 文件 | 内容 |
|---|---|
$DIR/01-research.md |
已有内容摘要、候选话题列表、评分明细、最终选题理由 |
$DIR/02-outline.md |
结构化大纲(含标题、各章节标题、核心论点) |
$DIR/context-brief.md |
上下文锚点文件,为后续写作提供章节级上下文(由调用方创建) |
注意事项
- 评分结果是参考值,结合账号定位和受众判断,不要盲目追高分
- 如果所有候选话题都在排除列表中,扩大 research_topics 的 count 并调整 keywords
- 模板选择应与文章类型匹配,不匹配的模板会导致大纲质量下降
- 大纲中的每个章节标题应具体、有信息量(好的:"三种晨间习惯让你精力充沛" / 差的:"关于习惯")