soia-media-compose-article-draft
媒体内容工作流的成文环节(写):把 distill 产出的观点,写成一篇可发布的文章草稿。
客户可读说明
这个技能可以做什么
把 distill 提炼出的观点写成成文草稿。以用户观点为骨、vault 摘抄为料,生成可继续交给 publish 的文章。可指定公众号/知乎/随笔风格
| 客户想要 | 技能会做 | 客户能看到 |
|---|---|---|
| 完成本技能覆盖的工作 | 读取用户请求、必要上下文和本技能正文流程,执行最小可靠步骤 | 客户会看到 Obsidian/vault 文件变更、终端日志、生成产物路径和最终回执。 |
| 缺少依赖、权限、配置或 key | 停止需要外部状态的动作,明确指出缺什么 | 安装命令、申请地址、配置路径或需要客户确认的问题 |
| 执行完成 | 汇总成功、跳过、失败、文件变更和验证结果 | 一段可复制进工单/日志的完成回执 |
客户如何使用
- 用自然语言说明目标,并提供必要输入:文件、URL、repo、workspace、proposal、vault 或平台账号状态。
- 能 dry-run 或预览的动作先给预览;涉及删除、覆盖、发送、发布、写远端状态时先征求客户确认。
依赖与安装
安装(推荐:装整个领域插件,一次装好本仓全部技能):
claude plugin marketplace add soia-team/soia-open-skills
claude plugin install soia-media-content@soia
只要这一个技能时,可用 npx 路线。注意技能会落进共享真源 ~/.agents/skills;若同时装了插件,同一技能会出现两份索引且各自漂移,建议二选一:
npx skills add soia-team/soia-open-media-content-skills -g -a '*' -s soia-media-compose-article-draft -y
配置约定:
~/.config/soia-skills/soia-media-compose-article-draft/config.yml
SOIA_MEDIA_COMPOSE_ARTICLE_DRAFT_CONFIG_FILE=<custom-config-path>
- 如果本技能不需要私有配置,可以不创建
config.yml。 - 如果需要 API key、cookie、session、provider home 或本机路径,只能放进私有
config.yml、进程环境或 provider 自己的登录态里,不能写进仓库、vault 正文或日志。 - 第三方 skill 只能声明依赖和安装方式,不直接修改第三方 skill 文件。
WorkBuddy 的装载单位是角色化专家而不是插件,npx skills add -a '*' 覆盖不到它,需要单独安装,见 docs/install/workbuddy.md。
日志与完成回执
每次执行都要让客户看见过程和结果。最低回执格式:
完成:<一句话说明本次完成了什么>。
日志摘要:
- started: <检查到的输入/配置/依赖,不打印秘密值>
- processed: <数量或范围>
- created/updated: <数量或路径>
- skipped/failed: <数量和原因>
文件变化:
- <绝对路径或“未改动文件”>
验证:
- <运行过的检查、命令或人工核对点>
问题与下一步:
- <缺 key / 缺依赖 / 需要客户确认 / 建议下一条命令;没有则写“无”>
核心原则
- 观点是你的,文章是你的。compose 以你 distill 出的观点为骨架,用 vault 里的摘抄 / 文章作论据,组织成通顺文章。不凭空造观点、不加你没表达过的判断。
- 缺料就问,不编。
流程
- 收集素材:
- 单篇 → 某文章的
## 我的看法+## 原文摘要 - 主题 → distill 模式 B 产出的
50_草稿/…观点综述.md,或某 MOC 下多篇的「我的看法」
- 单篇 → 某文章的
- 确认角度与风格:先读
00_Obsidian系统/个人说明书.md里对应平台的读者与口吻定位,据此定基调;只就本篇的差异(具体角度、标题方向)跟用户确认,不再从零问「我是谁 / 读者是谁 / 什么风格」。个人说明书无此文件或缺该平台定义时,才回退到问用户。 - 搭结构:开头(钩子/问题)→ 主体(你的观点 + 论据)→ 结尾(升华/行动)。先给大纲让用户确认,再动笔。
- 成文:按大纲写,你的观点为主线,摘抄 / 文章为佐证(用
[[]]双链注明来源)。 - 落草稿:
<vault-drafts-dir>/YYYY-MM-DD-<标题>.md,frontmattertags:[草稿]、status:草稿、source_notes:[[…]](来源笔记)。 - 回执:告知草稿路径、字数、结构,提示"要改哪段告诉我;满意后按目标平台选择
publish-*家族"。
标题工序
写完初稿(流程第 4 步之后、落草稿之前),按下表挑至少覆盖 2 种不同公式的 3 个候选标题交给用户选,不要自己替用户定夺:
| 钩子公式 | 说法 | 示例 |
|---|---|---|
| 数字盘点 | 用数字量化涵盖范围 | 三步搭建可持续阅读系统 |
| 反常识 | 挑战读者的默认认知 | 你以为读书越多越好?其实相反 |
| 提问 | 直接抛出读者关心的问题 | 为什么你读了很多书却记不住? |
| 对比冲突 | 摆出两种做法/观点的张力 | 别人囤书,我囤观点 |
| 结果承诺 | 直接给出读完能得到什么 | 读完这篇,你能建一套自己的阅读系统 |
| 场景代入 | 把读者带入具体场景 | 深夜刷手机时,你在逃避什么 |
| 权威背书 | 引用可信来源/数据支撑 | 哈佛研究发现:碎片阅读正在偷走你的专注力 |
| 悬念留白 | 留一个信息缺口勾引点开 | 我删掉了读书笔记里的 90%,只留了这一条 |
去AI味自检
交稿前按这份高频问题清单自检,发现即轻改:套路开场(在这个时代、随着…发展)、空洞大词(卓越、颠覆性)、假金句(听着猛但没信息增量)、破折号滥用、bullet 堆叠(能写成自然段却硬拆成列表)、单句顺滑但段落间无信息推进(每句话都通顺,合起来没有主线)。
多数情况做轻改:只处理清单命中的具体问题,不重写全文。若原稿明显不像成稿(像资料整理稿、提纲稿、AI 草稿初版),升级到深改并向用户说明原因;深改产出写入新文件,不覆盖初稿。
边界
- 只落
50_草稿/,不碰摘抄原文。 - 观点必须来自用户(distill 产出或直接口述),AI 不虚构立场。
- 引用 vault 内容用双链
[[]]注明。
闭环位置
clip(收) → organize(整理) → distill(点) → ★compose(写) → publish(发)
上游 distill 给观点;下游 publish 把成文适配多平台发布。
完成后回执
回执包含:
- 做了什么 — 一句话总结完成的工作。
- 文件变更 — 列出新建 / 修改 / 移动的文件(完整路径);未改动文件则说明"未改动文件"。
- 下一步 — 可选的后续建议(如衔接的下一个 skill)。