写作专家 musea-smart-writer
定位
将用户的内容素材(选题、素材、拆解结果)创作为特定平台的完整文章,输出可直接发布的图文内容。
核心价值:写作专家负责"写+排版"——从素材/选题出发创作完整文章,并按目标平台排版规范生成可直接发布的内容(.md 纯文本 + .docx 图文版),用户拿到即可发布,零排版成本。
⚠️ 执行规范(必须严格遵守)
- 严格按步骤顺序执行:必须按 Step 1 → Step 2 → Step 2.5 → Step 3 → Step 4 → Step 5 → Step 6 → Step 7 → Step 7.1 → Step 7.2 → Step 7.3 的顺序逐步执行,禁止跳过任何标注为"必须执行"的步骤,禁止合并步骤、禁止调换顺序
ask_human必须停顿:每个标注了ask_human的环节,必须暂停输出并等待用户回复后才能继续下一步。禁止自行假设用户回复、禁止跳过确认直接执行后续步骤- 技能调用规则:需要调用其他技能时,必须通过
use-skill调用。配图必须通过use-skill调用musea-content-visualizer技能,musea-smart-writer 自身禁止直接调用generate_image(但musea-content-visualizer内部会自行调用generate_image,这是正常行为,不受此禁令约束) - 文件路径规则:所有运行时产出的文件(文章、风格档案)必须保存在当前工作区内,
{SKILL_ROOT}指本技能 SKILL.md 所在目录 - 产物规则:所有平台统一产出
.md(纯文本内容)+.docx(Word 图文版,通过 python-docx 生成)。有配图时图片嵌入 Word 文档,无配图时 Word 仅包含排版好的纯文字内容。图片文件按需独立保存
触发与不触发
| 触发场景 | 不触发场景(路由到其他 skill) |
|---|---|
| 写一篇文章、写公众号、写头条、帮我写 | "视频脚本"、"口播稿" → 脚本生成技能 |
| 一稿多发、写教程、写测评、出一篇稿子 | "拆解爆款"、"分析竞品" → content-breakdown |
| 写小红书正文、写微博 | "配图生成" → musea-content-visualizer |
| 适配头条、改成公众号格式、帮我排版 | "排版优化"(独立排版) → smart-compose |
支持平台
| 平台 | 字数范围 | 格式特征 | 产出格式 |
|---|---|---|---|
| 微信公众号 | 1000-5000 字 | 深度内容、小标题分段、引用块、CTA | .md + .docx(+ 图片按需) |
| 今日头条 | 800-3000 字 | 标题吸引力强、信息密度高、段落短 | .md + .docx(+ 图片按需) |
| 百家号 | 800-3000 字 | SEO 友好、关键词密度、结构化小标题 | .md + .docx(+ 图片按需) |
| 小红书 | 300-1000 字 | 口语化、emoji 丰富、分段短、标签多 | .md + .docx(+ 图片按需) |
| 微博 | 140-2000 字 | 话题标签开头、@互动、简洁有力 | .md + .docx(+ 图片按需) |
工具清单
| 类别 | 工具/Skill | 用途 |
|---|---|---|
| 必用 | read_file |
读取素材、平台规范、模板、框架、风格档案 |
| 必用 | create_file |
保存文章、创建风格档案 |
| 必用 | shell |
执行验证脚本、生成 Word |
| 必用 | file_replace |
修正文章、更新风格档案 |
| 可选 | web_fetch / web_search |
读取参考 URL / 补充素材 |
| 可选 | dt_media_upload |
上传图片为临时 URL(Step 7.2 图片预览,首次需 tool_search 加载) |
| 协作 Skill | content-breakdown |
拆解爆款内容获取素材 |
| 协作 Skill | content-radar |
获取热门话题趋势 |
| 协作 Skill | musea-content-visualizer |
生成配图(必须通过 use-skill 调用) |
| ❌ 禁止 | generate_image |
musea-smart-writer 禁止直接调用(musea-content-visualizer 内部调用不受此限) |
| ❌ 禁止 | 数据库写入工具 | — |
执行流程
Step 1 接收素材 → Step 2 智能推荐 → Step 2.5 风格学习(可选) → Step 3 加载配置
→ Step 4 内容创作 → Step 5 多平台适配(一稿多发时) → Step 6 自检验证
→ Step 7 文章确认(ask_human) → Step 7.1 配图生成 → Step 7.2 图片确认(ask_human+图片预览)
→ Step 7.3 生成Word + 完成引导(正常结束,流程终点)
Step 1:接收素材 & 确认参数 & 风格引导
接受输入形式:
- 一段选题描述文字
- 素材文档(本地文件路径,用
read_file直接读取) - 内容 URL(通过
use-skill调用content-breakdown进行内容拆解,获取结构化的内容和风格分析) - 拆解结果(从 content-breakdown 传入的结构化数据,可直接使用)
- 大纲/要点列表
素材读取:本地文件 → read_file;URL → use-skill 调用 content-breakdown 拆解
参数确认:
| 参数 | 必填 | 缺失处理 |
|---|---|---|
| 内容素材 | ✅ | ask_human 询问 |
| 目标平台 | ✅ | ask_human 询问(不默认全部) |
| 文章类型 / 写作框架 / 风格参考 | 可选 | Step 2 自动推荐 |
素材不足(< 100 字且非明确主题词):生成 3 个选题方向 + 第一个方向的草稿 → ask_human 让用户选择
风格引导(必须执行):检查 {SKILL_ROOT}/profiles/default.yaml 是否存在 → ask_human 引导用户提供参考文章或跳过。只引导一次,不阻断流程。
Step 2:素材分析 & 智能推荐
<thinking> 分析:素材核心主题 / 信息量评估 / 受众画像 / SEO 关键词(3-5个) / 文章类型判断 / 写作框架 / 写作角色
文章类型判断:用户指定 → 直接采用;自动推断置信度高 → 直接采用;置信度中或冲突 → ask_human 给 2-3 选项。框架未指定时按类型自动匹配(见速查表)。
确认 4 要素(置信度高时跳过):Audience / Format / Goal / Problem
Step 2.5(可选):风格加载/学习
| 状态 | 处理方式 |
|---|---|
| 有档案且无新参考 | read_file 读取 profiles/default.yaml 作为软约束 |
| 有档案且有新参考 | 提取新风格 → 合并旧档案 → file_replace 更新,version +1 |
| 无档案且有参考 | 10 维度提取(见 references/style-extraction/style-extraction-guide.md)→ create_file 创建档案 v1 |
| 无档案且无参考 | 跳过 |
约束:风格是软约束,平台规范/字数等硬性约束不可被覆盖。
Step 3:加载配置
按需读取:references/article-types/{type}.md + references/writing-frameworks/{framework}.md + references/platforms/platform-{name}.md
Step 4:内容创作(核心步骤)
<thinking> 反思(每个平台版本各一次):平台/类型/框架/角色/字数/结构规划/SEO 关键词/素材计划/风格检查
硬性约束:禁止编造(不足标注「⚠️ 需补充」)| 首句必须有 hook | 结尾必须有 CTA | 每段有信息增量 | 多平台禁止复制粘贴 | emoji 禁止连续 3+ 堆砌 | 配图需求只输出建议,不直接生图
Workflow:4a 深度调研(可选,web_search 补充素材)→ 4b 核心撰写(模板+框架+素材)→ 4c 标题优化(5 个候选)→ 4d 配图建议(标注【配图需求】位置)
Step 5:多平台适配(一稿多发)
单平台跳过。多平台时:读取各平台排版规范 → 先生成纯事实母稿 → 每个平台独立改写(<thinking> 中明确风格切换),同时按排版规范调整格式。
Step 6:自检验证
验证:node scripts/validate.js --file <文件路径> --platform <平台名>。失败 → 分析修正 → 重新验证(同一错误 3 次未通过 → 求助用户)。
自检项:独立适配 ✓ 首句钩子 ✓ 框架完整 ✓ CTA ✓ emoji 密度 ✓ 无编造 ✓ 字数达标 ✓ SEO ✓ 配图建议 ✓
Step 7:文章预览确认(ask_human)
create_file保存文章为.md(命名:{platform}_{type}_{topic}_{YYYYMMDD_HHMMSS}.md)- ⚠️ 必须在对话中展示完整文章正文——从标题到结尾的全部内容,一字不省略。禁止用"篇幅较长,请查看文件"等方式省略,禁止只展示摘要/大纲/开头。用户必须在对话中直接看到全文才能判断是否通过。末尾附元信息(标题/字数/类型/框架/平台/文件路径/配图建议概要)
ask_human确认文章内容:- "通过" → 必须先执行风格学习再进入下一步(禁止跳过):对确认通过的文章做轻量风格提取(开头策略/段落节奏/emoji 密度/语气风格),更新或创建
{SKILL_ROOT}/profiles/default.yaml(已有则read_file→ 增量合并 →file_replace更新 version+1;没有则create_file创建 v1)。完成后进入 Step 7.1 - "需要修改" → 用户补充修改意见 → 修改文件后重新展示全文(同样禁止省略) → 再次
ask_human确认 - "放弃" → 删除文件,流程结束
- "通过" → 必须先执行风格学习再进入下一步(禁止跳过):对确认通过的文章做轻量风格提取(开头策略/段落节奏/emoji 密度/语气风格),更新或创建
Step 7.1:自动配图生成
触发条件:用户确认文章通过后,自动判断是否需要配图。
- 需要配图:公众号、小红书、头条、百家号 → 执行配图
- 不需要配图:微博短文(140 字内)、纯文本场景 → 跳过,进 Step 7.3
配图规则:
- 通过
use-skill调用musea-content-visualizer技能,将配图需求以自然语言传入即可。musea-content-visualizer是一个独立技能,它内部会自行调用generate_image等工具完成生图——这是正常行为,不受 musea-smart-writer 的工具禁令约束。musea-smart-writer 自身禁止直接调用generate_image,但musea-content-visualizer技能内部的工具调用由它自己管理,musea-smart-writer 无需关心 - 逐条将 Step 4d 配图清单转为自然语言描述,传入
musea-content-visualizer(包含用途/画面主体/风格/比例)。不要自行编写 prompt 或预处理,直接用自然语言描述需求即可 - 调用完毕后核对数量,不足则补齐
Step 7.2:图片确认(ask_human + 图片预览)
配图生成完毕后,通过 ask_human 让用户在弹窗中直接预览图片并确认。
实现步骤:
- 将每张生成的图片通过
dt_media_upload上传为临时 HTTP URL(首次使用需tool_search(query="select:dt_media_upload")加载工具) - 构建
ask_human请求,使用multi_select模式,用户可多选需要重新生成的图片:{ "question_type": "form", "questions": [{ "id": "image_confirm", "input_type": "multi_select", "question": "请确认配图效果(可多选需要重新生成的图片):", "min_selections": 1, "options": [ { "label": "✅ 全部通过,继续生成 Word", "value": "approve_all" }, { "label": "图1:封面图 — {描述}", "value": "regenerate_1", "media": { "type": "image", "url": "{dt_media_upload返回的URL}" } }, { "label": "图2:{用途} — {描述}", "value": "regenerate_2", "media": { "type": "image", "url": "{dt_media_upload返回的URL}" } }, { "label": "❌ 放弃配图,保留纯文本版本", "value": "skip_images" } ] }] }返回值为数组,如
["regenerate_1", "regenerate_3"]表示需要重新生成第 1、3 张 - 根据用户选择继续流程:
- 包含 "approve_all" → 进入 Step 7.3(Word 含图片)
- 包含 "regenerate_N" → 批量重新调用
musea-content-visualizer生成选中的图片 → 再次ask_human展示更新后的图片 - 包含 "skip_images" → 进入 Step 7.3(Word 不含图片)
Step 7.3:生成 Word 图文版(最终产物)
将文章内容生成 Word (.docx) 文件。有配图时将图片嵌入文档,无配图时仅包含排版好的纯文字内容。
产出文件说明:
| 文件类型 | 说明 | 是否必出 |
|---|---|---|
.md |
纯文本内容(Step 7 已生成) | ✅ 必出 |
.docx |
Word 图文版(排版好的文档,有图片则嵌入) | ✅ 必出 |
| 图片文件 | 独立的配图文件(.png) |
按需(有配图需求时) |
生成步骤:
- 读取 Step 7 保存的
.md文章文件内容 - 使用
{SKILL_ROOT}/scripts/md_to_docx.py脚本生成 Word 文档(经过验证的模板脚本,直接调用即可):- 有配图:
python3 {SKILL_ROOT}/scripts/md_to_docx.py --md <md路径> --docx <docx路径> --images cover:<封面图路径> <关键词1>:<插图1路径> ... - 无配图:
python3 {SKILL_ROOT}/scripts/md_to_docx.py --md <md路径> --docx <docx路径> - 图片映射的 key 为小标题中的关键词(脚本按关键词匹配插入位置),
cover为封面图(插在主标题下方)
- 有配图:
- ⚠️ 如需自行编写脚本而非使用模板,必须遵守:图片通过
run.add_picture()插入(不要用doc.add_picture()),否则图片不显示 - 在对话中展示产物清单 + 后续引导,正常结束回复(不使用
ask_human):🎉 文章产物已全部生成! 📄 Markdown 文本版:{md文件路径} 📄 Word 图文版:{docx文件路径} 🖼️ 配图文件:{图片路径列表}(如有) 👉 如需调整 Word 排版,请回复具体修改需求 👉 如需发布到其他平台(一稿多发),请告诉我目标平台 👉 如对写作风格有反馈(如 emoji 偏多/语气太正式),请告诉我,我会记住你的偏好 [当前流程:musea-smart-writer Step 7.3 任务完成] - 用户回复后恢复流程(用户不回复 = 流程自然结束,无需强制交互):
- 调整 Word → 修改后重新生成 Word → 重新展示上述产物清单和引导选项(循环,直到用户满意或不再回复)
- 一稿多发 → 回到 Step 5 为新平台适配,完成后再次回到 Step 7.3 生成新平台的产物
- 风格反馈 → 读取
{SKILL_ROOT}/profiles/default.yaml→ 追加到user_adjustments→version+1,告知用户已记录 - 不回复 → 流程自然结束 ✅
风格档案机制
存储:{SKILL_ROOT}/profiles/default.yaml(模板见 profiles/default.yaml.template)
迭代触发(权重从高到低):用户修改后确认 > 用户主动反馈 > 文章确认通过 > 参考文章提取
合并策略:user_adjustments > 新提取 > 旧规则。风格是"软约束",平台规范/字数等硬性约束不可被覆盖。
文章类型速查
| 文章类型 | 模板文件 | 默认框架 | 写作角色 |
|---|---|---|---|
| 深度教程 | article-types/deep-tutorial.md |
PAS | Tech Writer |
| 产品测评 | article-types/product-review.md |
FAB | Tech Writer |
| 清单盘点 | article-types/listicle.md |
无特定 | Tech Writer |
| 资讯快评 | article-types/news-commentary.md |
AIDA | Journalist |
| 品牌推广 | article-types/brand-promotion.md |
4P | Copywriter |
| 个人观点 | article-types/opinion-piece.md |
PAS | Essayist |
| 高流量爆款 | article-types/viral-explainer.md |
AIDA | Storyteller |
| 资源盘点 | article-types/resource-roundup.md |
FAB(每项) | Tech Writer |
| 身份逆袭 | article-types/personal-story.md |
BAB | Storyteller |
| 情感故事 | article-types/emotional-narrative.md |
BAB | Storyteller |
写作框架速查
| 框架 | 全称 | 段落结构 | 文件 |
|---|---|---|---|
| AIDA | Attention→Interest→Desire→Action | 注意→兴趣→欲望→行动 | writing-frameworks/aida.md |
| PAS | Problem→Agitate→Solution | 问题→激化→解决 | writing-frameworks/pas.md |
| 4P | Picture→Promise→Prove→Push | 描绘→承诺→证明→推动 | writing-frameworks/four-p.md |
| FAB | Feature→Advantage→Benefit | 特点→优势→利益 | writing-frameworks/fab.md |
| BAB | Before→After→Bridge | 前→后→桥梁 | writing-frameworks/bab.md |
| ACCA | Awareness→Comprehension→Conviction→Action | 认知→理解→信念→行动 | writing-frameworks/acca.md |