| name | tao-research-ain |
| description | AI 内容创作全流程编排器(all-in-one)。串起 research-draft → article-medium + article-wechat → 配图 四步流水线,可从任意一步进入、续跑或重做,并在关键节点(研究视角 / 发布目标 / 配图方式)打断用户做选择。输入从一个词到整篇文章都接得住;配图默认走信息图(SVG→PNG)而非 AI 生图。当用户用 /tao-research-ain + 主题/URL/素材/已有草稿 发起,或想"一条龙"产出内容时使用。 |
| allowed-tools | Agent, AskUserQuestion, Read, Glob, Grep, Bash |
tao-research-ain —— 内容创作全流程编排器
把四个独立 skill 串成一条可续跑的流水线:
①research-draft → ②article-medium(英文) ③配图(二选一):
(素材稿) ↘ ②article-wechat(中文) → DRAWIO 信息图(默认) / IMAGE GEN AI 图
你是编排器(orchestrator):自己不写研究、不写文章、不生图,全部委派给 Agent。
你只做四件事:判断进度 → 问清选择 → 派发子任务 → 汇报结果。
子 skill 是单一事实来源(single source of truth)。派发 Agent 时让它读对应子 skill 的 SKILL.md 并严格照做,不要在本文件里复制它们的写作规则——避免规则漂移。
子 skill 路径:
- 研究:
~/.claude/skills/tao-research-draft/SKILL.md
- Medium:
~/.claude/skills/tao-article-medium/SKILL.md
- 公众号:
~/.claude/skills/tao-article-wechat/SKILL.md
- 配图(IMAGE GEN 模式):
~/.claude/skills/tao-md-image-gen/SKILL.md
- 配图(DRAWIO 信息图模式,默认):本 skill 目录下的
references/diagram-mode.md(美学基准借 tao-drawio-vector-illustration-generator)
工作目录(所有产物都落在这里)。<CONTENT_ROOT> = 你的内容工作目录,首次使用替换成你自己的路径(例:~/Notes/内容/);换算好后下面三个子目录照用:
- 素材稿:
<CONTENT_ROOT>/research-drafts/
- 成稿:
<CONTENT_ROOT>/articles/
- 配图:
<CONTENT_ROOT>/articles/images/
核心原则
- 从任意一步进入。用户可能什么都没做(给个 URL/主题)、只做了素材稿、或已经有成稿。先探明进度,再决定从哪一步起跑。
- ONE STEP:所有选择一次问完,绝不分批打扰。整条流水线只允许一次
AskUserQuestion(最多 4 题,把当前入口往后需要的决策一口气问完)。问完就闷头跑到底,研究/写作/配图全程不再弹问题。唯一例外:入口本身有歧义需要先确认(Step 1),那也要和后续决策合并思考,能并进同一次提问就并。坚决不要"跑一步弹一下"。 答案已由输入或现状确定的,不问。
- 关键节点必须打断。研究视角、发布目标、配图方式(信息图 DRAWIO / AI 图 IMAGE GEN / 不配图)——这三件事不要替用户拍板,用
AskUserQuestion 让他选(含 Other 自填)。配图方式默认 DRAWIO。
- 重活全部委派。研究 / 写作 / 配图都丢给 Agent,保持主上下文干净。Medium 和公众号互相独立 → 并行两个 Agent。
- 不静默跳过、不静默覆盖。某一步产物已存在时,明确告诉用户并让他选"续用 / 重做"。
Step 0 — 探明进度(State Detection)
先用 Glob/Bash 列出工作目录现状,判断每个阶段是否已有产物:
ls -t "<CONTENT_ROOT>/research-drafts/"
ls -t "<CONTENT_ROOT>/articles/"
把用户输入 $ARGUMENTS 先按入口归类:
| 输入形态 | 含义 |
|---|
| 词 / 一句话 / 一个想法 / 一段火花 / 一个 URL / 大段素材 / 整篇文章 | 新选题,大概率从 ①研究 起跑 |
指向某个已有 .md(路径或标题关键词) | 续跑,从该文件的下一步起跑 |
| "继续" / "接着上次" / 空 | 看最近修改的文件推断进度 |
再按「输入丰富度」分级(决定 ①研究 怎么跑,见 Step 2 / Step 4)——用户可能只给一个词,也可能贴来大段段落甚至整篇文章,两端都要接住:
| 丰富度 | 形态 | ①研究 的姿态 |
|---|
| 稀薄 | 词 / 短句 / 一个想法 / 火花 / "WTF" 式反应 | 从零研究:侦察角度 → STORM 多视角取证 → 攒出信息密集素材稿 |
| 中等 | 一个 URL / 几段要点 / 半成品笔记 | 抓取 + 补全:先读懂给的东西,再围绕它补证据、拉相关论文、填盲区 |
| 厚重 | 大段段落 / 初稿 / 整篇文章 | 提炼 + 校验 + 增稠:把用户给的当主底稿,不推倒重来;核对事实、拉齐它引用/提到的论文、补缺口、标不确定,输出成可靠、规范、具体的素材稿 |
关键:不要把厚重输入当成一句主题去"从零脑补"。用户给了整篇就以它为骨架增强,别丢掉他的原意与措辞里的信息。
用关键词在两个目录里模糊匹配用户主题,找出可能相关的已有文件。
匹配不确定就别猜——在 Step 1 用选择题跟用户确认入口。
判定入口(找到第一个 yes):
- 相关素材稿不存在 → 入口 = ①研究
- 素材稿存在、相关成稿(medium/wechat)不存在 → 入口 = ②写作
- 成稿存在、但缺图(成稿里还有
生成提示:/- Prompt: 未被替换成 ![]()) → 入口 = ③配图
- 全都齐了 → 问用户要做什么(补另一语言版本 / 重做某步 / 重新配图)
Step 1 — 确认入口(仅在歧义时问)
如果 Step 0 能唯一确定入口,且用户输入里没有矛盾信息 → 跳过本步,直接进 Step 2。
如果有歧义(匹配到多个候选文件、或不确定是新选题还是续跑),用 AskUserQuestion 确认:
- header:
入口
- question: 「这次从哪一步开始?我在目录里找到了这些相关文件……」
- options(按现状动态生成):例如
从头研究(新素材稿)
已有素材稿《xxx》→ 直接写文章
已有成稿《xxx》→ 直接配图
Step 2 — 研究视角侦察(仅当入口 = ①研究)
这是用户特别要求强化的环节:每次都要给他更多视角选择,不要默默替他定角度。
2a. 先派一个轻量"侦察 Agent"(快、省,只为给出视角选项):
用 Agent 工具,subagent_type general-purpose,prompt 大意:
你是选题侦察兵。针对以下输入,做 2-4 次快速搜索 / 抓取(不要深挖、不要写稿),
只为搞清楚:这个话题有哪些值得写的切入角度。
输入(可能是一个词/一句话/一个 URL/大段素材/整篇文章):
<原样贴入用户输入 $ARGUMENTS>
按输入丰富度调整:
- 稀薄(词/短句/想法)→ 靠搜索发散出角度。
- 中等(URL/要点)→ 先抓取读懂,再给角度。
- 厚重(大段/整篇文章)→ **先通读用户给的正文**,角度从这篇的论点/张力里提炼,别另起炉灶;
顺带记下文中出现的 arXiv/论文/DOI/项目链接,标给下游(下游要定向拉取)。
返回 JSON 风格的简报:
1. 一句话主题是什么(30 字内)
2. 输入丰富度判定(稀薄/中等/厚重)
3. 4 个具体、互不重复的写作角度(angle),每个给:
- 标签(6-10 字,能当选项标题)
- 一句话说明这个角度写什么、为什么有意思
4. 若输入里含论文/URL:列出识别到的链接清单(供下游定向拉取)
只返回简报,不写文章。控制在 3 次工具调用内。
如果用户在原始输入里已经明确了角度(例如"研究 X,重点写安全反噬这条线"),跳过侦察,直接用他给的角度。
2b. 把侦察结果做成选择题(与 Step 3 合并问,见下)。
Step 3 — 一次性问清所有选择(合并打断)
把当前入口往后还需要的所有决策塞进一次 AskUserQuestion 调用(最多 4 题)。
只问相关的:从②进入就不问角度;从③进入就只问配图相关。
可能的题目(按需取用):
Q1 研究角度(仅入口=①,用 2a 侦察结果做选项)
- header:
研究角度
- question: 「这篇想从哪个角度切?(选一个,或 Other 自己写)」
- options: 侦察返回的 4 个角度标签 + 说明。第一个放你最推荐的并标
(推荐)。
- 允许 Other:用户可自填角度。
Q2 发布目标(入口 = ① 或 ②)
- header:
发布目标
- question: 「素材稿之后要产出哪些成稿?」
- options:
Medium + 公众号都要(推荐)
只要 Medium(英文)
只要公众号(中文)
只做素材稿,先不发文(仅入口=①时给这项)
Q3 配图方式(只要会产出成稿就问;把"要不要配图"和"怎么配图"合成一题)
- header:
配图
- question: 「文章写完后怎么配图?」
- options:
信息图为主(DRAWIO,推荐) —— 正文用 SVG→PNG 的矢量信息图(流程/架构/对比/时间线,信息价值更高),头图仍保留 1 张 AI 图,克制。
AI 出图为主(IMAGE GEN) —— 全部走 AI 生成的插画/像素图(原 md-image-gen 行为)。
先不配图,只在文里留 prompt
- 默认 DRAWIO(用户没特别说就把它当推荐项放第一个)。
记录用户选择(含"配图方式" = DRAWIO / IMAGE GEN / 不配图),作为 Step 6 派发的参数。
Step 4 — 执行 ①研究(入口 ≤ ①时)
派 1 个 Agent(general-purpose),prompt 要点:
读 ~/.claude/skills/tao-research-draft/SKILL.md 里横线以下的完整指南,严格照做。
指定研究角度:<Step 3 用户选定的角度> ← 全程围绕这个角度组织 Key Findings,别写成面面俱到的综述。
输入丰富度:<稀薄 / 中等 / 厚重(Step 2 侦察判定)>
用户原始输入(原样,可能是词/句/想法/URL/大段素材/整篇文章):
<<<
<原样贴入 $ARGUMENTS 全文>
>>>
按丰富度处理输入:
- 稀薄 → 从零研究这个主题。
- 中等 → 先读懂给的 URL/要点,再围绕它补证据、填盲区。
- 厚重(大段/整篇)→ **把上面这段当主底稿,不要推倒重来**:提炼它的主线、核对事实、补缺口、
标不确定,产出更可靠/规范/具体的素材稿;保留用户原意,别改写成不相干的新主题。
★ 定向拉论文(务必执行):
- 输入或搜索中出现的 arXiv 链接 / arXiv ID / DOI / 论文标题 / 会议名 → **必须逐一定向抓取论文本体分析**,
不能只搜周边二手转述。arXiv 优先抓 HTML 版(ar5iv.org/abs/<id> 或 arxiv.org/abs/<id>),拿到摘要+方法+结论要点。
- 技术选题**尽量把相关一手论文找齐**,作为核心证据;引用里论文/arXiv 优先级最高。
输出 .md 素材稿,存到:
<CONTENT_ROOT>/research-drafts/
文件名:<英文主题> — research draft (YYYY-MM-DD).md(破折号用全角 — ,日期后缀用括号,日期取今天)
返回:文件完整路径 + 一句话摘要 + 拉取分析了哪几篇论文 + 3-5 条可选成文角度(供我转给用户)。
Agent 返回后,把它给的"可选成文角度"转述给用户(轻量,不必再开 AskUserQuestion,除非用户要选)。
若用户在 Step 3 选了"只做素材稿" → 到此停止,汇报后结束。
Step 5 — 执行 ②写作(入口 ≤ ②时)
确定素材稿路径(Step 4 产出,或入口=②时用户指定的)。
按 Step 3 的"发布目标"派发:
- 选了"都要" → 同一条消息里并行派 2 个 Agent(Medium + 公众号)。
- 只要一个 → 派 1 个。
Medium Agent(general-purpose)prompt 要点:
读 ~/.claude/skills/tao-article-medium/SKILL.md,严格照做。
输入素材稿:<draft 路径>
把它改写成 Medium 英文文章,存到:
<CONTENT_ROOT>/articles/
文件名:<英文标题 slug>-medium.md(或 <Title> — Medium (YYYY-MM-DD).md,与目录现有命名风格一致)
保留结构模板里的配图块(**Cover Image** / **Figure** + - Prompt: 行),图内文字用英文。
返回:成稿完整路径 + 一句话说明你选的标题与主线。
公众号 Agent(general-purpose)prompt 要点:
读 ~/.claude/skills/tao-article-wechat/SKILL.md,严格照做(中文标点全部全角!)。
输入素材稿:<draft 路径>
改写成公众号中文文章,存到 <CONTENT_ROOT>/articles/
文件名:<slug>-wechat.md(与目录现有命名风格一致)
保留配图块(**封面图** / **配图** + 生成提示: 行),图内文字用中文。
返回:成稿完整路径 + 一句话说明标题与主线。
两个 Agent 都返回后汇总路径。若用户选了"先不配图" → 汇报后结束。
Step 6 — 执行 ③配图(入口 ≤ ③ 且用户要配图时)
⚠️ 防撞车:所有文章的图都落在同一个 articles/images/。光按语言用 en-/zh- 还不够——
不同选题的两篇 Medium 都会去抢 en-cover.png,照样互相覆盖(实测踩过:zh-cover.png 已被别的选题占用)。
因此前缀要按本次选题取,不只按语言:用素材稿主题的短 slug,例如 recall-en-、recall-zh-。
派配图 Agent 前先 ls articles/images/ 看占用,撞名就换更独特的 slug。
另外:逐篇串行配图(写作可并行,配图不行)。
对每篇成稿,串行派一个 Agent(general-purpose,它有 MCP 图片工具 + Bash 权限)。不要并行两篇配图。
按 Step 3 的配图方式分支派不同 prompt。多篇时按 Medium → 公众号 顺序串行(前一个返回再派下一个)。
分支 A —— 配图方式 = DRAWIO / 信息图(默认)
正文用信息价值更高的矢量信息图(SVG→PNG),头图仍保留 1 张克制 AI 图。规则的单一事实来源是本 skill 的 references/diagram-mode.md。
配图 Agent prompt 要点:
读 <本 skill 目录>/references/diagram-mode.md,严格照做(信息图配图模式)。对这篇文章配图:
<成稿路径>
一句话:头图 = 1 张克制 AI 图(走 mcp__mcp-image__generate_image);正文 = 尽量画成信息图
(写干净 SVG,借 tao-drawio 学术美学,再 `rsvg-convert -f png -z 2` 转 PNG),画不成图才退回 AI 图。
两种配图块格式都要识别:英文 **Cover Image**/**Figure** + 「- Prompt:」;中文 **封面图**/**配图** + 「生成提示:」。
文件名前缀按「本次选题 slug + 语言」取(如 recall-en- / recall-zh-),生成前先 ls 成稿同目录的 images/ 防撞车。
图片/SVG 落到成稿所在目录的 images/ 子目录,MD 用相对路径 images/<文件名>.png 替换原配图块。图内文字语言跟随文章。
返回:头图 1 张 + 正文 N 张信息图(其中几张退回 AI 图及原因)、最终路径、是否有失败。
分支 B —— 配图方式 = IMAGE GEN(全 AI 图)
配图 Agent prompt 要点:
读 ~/.claude/skills/tao-md-image-gen/SKILL.md 了解流程,对这篇文章配图:
<成稿路径>
注意两种配图块格式都要识别:
- 英文(Medium):**Cover Image** / **Figure** 标题 + 「- Prompt: <英文 prompt>」
- 中文(公众号):**封面图** / **配图** 标题 + 「生成提示:<prompt>」
任一格式命中就进"批量生成并替换"模式,无须再问我。
文件名加前缀避免撞车:前缀按「本次选题 slug + 语言」取(如 recall-en- / recall-zh-),别只用 en-/zh-(不同选题会抢同名)。生成前先 ls 成稿同目录的 images/ 看占用,撞名就换更独特的 slug。封面=<前缀>cover、配图=<前缀>fig1/fig2...
图片生成后移动到成稿所在目录的 images/ 子目录,MD 里用相对路径 images/<文件名>.png 引用并替换原配图块。
图内文字语言跟随文章(英文文→英文,中文文→中文)。
返回:生成了哪几张、最终图片路径、是否有失败。
Step 7 — 汇总
一次性告诉用户:
- 跑了哪几步、跳过了哪几步(及原因)
- 每个产物的完整路径(素材稿 / 各成稿 / 配图目录)
- 用户做过的关键选择(角度 / 目标 / 配图)
- 下一步建议(如"只做了素材稿,想发文随时再 /tao-research-ain + 这个草稿")
续跑速查表
| 用户已有 | /tao-research-ain 干什么 |
|---|
| 什么都没有,只有主题/URL | ①→②→③ 全跑(先侦察角度+问目标+问配图) |
| 只有素材稿 | 从②起:问目标+配图 → 写作 →(配图) |
| 有素材稿 + 一种语言成稿 | 问要不要补另一种语言 / 配图,按需从②或③ |
| 有成稿、缺图 | 从③起:直接配图 |
| 全齐 | 问要做什么(补语言/重做某步/重配图) |
不该做的事
- 不要在主对话里自己做研究 / 写文章 / 生图——全部委派 Agent。
- 不要把研究规则、写作规则复制进本文件——让 Agent 读子 skill 的 SKILL.md。
- 不要并行给两篇文章配图(撞车);写作可以并行,配图必须串行。
- 不要在角度 / 目标 / 配图这三件事上替用户拍板——必须
AskUserQuestion。
- 不要静默覆盖已有产物——先告知、再让用户选续用还是重做。