Install
openclaw skills install writing-pipeline内容再创作管线:输入参考资料 → AI 生成中文初稿 → 人工改稿 → 系统对比学习写作偏好 → 多平台格式输出。 支持自动路由——根据输入材料特征自动匹配最合适的写作风格。
openclaw skills install writing-pipeline内容再创作管线。三个阶段:Draft → Review → Publish。
创建文章目录
projects/writing/articles/YYYY-MM-DD-{slug}/
保存参考材料(含 comment/highlight)
将用户提供的参考资料保存到 references/ 子目录。
comment 机制(新增,必做):
references/*.comments.json),必须一并保存,不可丢失。references/reference-notes.md,按如下结构整理:
must-include:被 highlight 的原句/要点(后文必须落入初稿)angle:评论给出的写作角度、争议点、可展开问题evidence:可直接引用的数据、案例、事实avoid:评论中明确标注不建议采用的表达X/Twitter 链接处理: 如果参考材料中包含 x.com 或 twitter.com 链接,使用 deepreader skill 抓取推文内容(FxTwitter API,无需 API key),保存为 references/tweet-{id}.md。用法:
from deepreader_skill import run
result = run("https://x.com/user/status/123456")
X 搜索:查询相关事实与事件
用 x_search 搜索与参考材料相关的关键词、人物、事件,获取最新信息:
x_search 查询,收集近期相关讨论、事实、数据references/x-search-results.md自动路由:匹配写作风格 分析输入材料的特征,匹配最合适的 writing-style skill:
输入材料 → 提取特征(domain, content_type, tone) → 匹配 style skill → 确认
路由规则(按优先级):
routing metadata 匹配匹配矩阵:
| 输入特征 | → 推荐风格 |
|---|---|
| 技术论文、产品发布、AI 模型 | writing-style-huasheng |
| 创业故事、人物传记 | writing-style-huasheng |
| 方法论、工具教程、how-to | writing-style-baoyu |
| AI 工具评测、写作技巧 | writing-style-baoyu |
| 哲学思辨、人生设计、意义探讨 | writing-style-dankoe |
| 跨领域框架、自我提升、身份探讨 | writing-style-dankoe |
| 长文摘要、知识提取、结构化转述 | writing-style-zhengliu |
| 表达欲过强的文章、信息提取困难 | writing-style-zhengliu |
路由分析流程:
1. 识别材料的主题领域(domain)
→ tech/AI/product → huasheng 候选
→ writing/productivity/tools → baoyu 候选
→ psychology/identity/meaning → dankoe 候选
2. 识别内容类型(content_type)
→ explainer/biography → huasheng 候选
→ methodology/how-to/opinion → baoyu 候选
→ essay/thought-piece/philosophical → dankoe 候选
3. 识别语气倾向(tone)
→ narrative/data-driven → huasheng
→ teaching/metaphor-driven → baoyu
→ philosophical/provocative → dankoe
→ structured/fact-driven/extractive → zhengliu
4. 检查蒸馏触发条件(优先级高于风格匹配)
→ 用户明确要求"蒸馏/提取/结构化转述" → zhengliu
→ 原文篇幅长 + 信息密度低 + 表达欲强 → zhengliu 候选
5. 综合三个维度,选择匹配度最高的 skill
6. 如果两个 skill 匹配度接近,列出两个选项让用户选择
选题讨论(必做,不可跳过)
提供 3-4 个选题方向,每个包含:
选题 N:标题
- 核心角度:一句话说清楚文章讲什么
- 核心比喻:(如使用宝玉风格)贯穿全文的比喻
- 结构预览:3-5 个章节标题 + 预计字数分配
- 优势:为什么这个角度好
- 风险:可能的问题或难点
标题原则——共鸣式标题: 标题的目标不是概括内容,而是说出读者心里那句没说出口的话。 找到目标读者普遍存在但很少被说清楚的困惑/痛点/感受,用一句话替他们问出来。 读者看到标题的反应应该是"对!我也是这样!"→ 然后点进来。
其他规则:
生成初稿(reference + comment 联合驱动)
用户确认选题后,加载匹配的 writing-style skill,基于 references/ 与 references/reference-notes.md 联合生成初稿,保存为 draft-v1.md。
must-include(highlight 片段)必须在初稿中被明确吸收(可改写措辞,但核心信息不能丢)draft-v0.md、draft-v1.md、draft-v2.md 递增保留各版本final.md,供用户直接在终稿编辑器中改稿(cp draft-vN.md final.md)final.md 已存在且非空,不覆盖;仅在缺失或空文件时执行复制提取观点与生成信息图(可选,也可在 Stage 2 后执行)
a. 加载 viewpoint-extractor skill,从初稿中提取 3-5 个核心观点
b. 保存 viewpoints.yaml 到文章目录
c. 加载 infographic-gen skill,为每个观点生成信息图
d. 输出到 output/infographics/{slug}.jpg
此步骤可推迟到
final.md完成后再执行,用终稿提取的观点更准确。
写入元数据
创建 README.md:
---
title: 文章标题
date: YYYY-MM-DD
style_skill: writing-style-xxx
sub_template: 子模板名(如适用)
source_materials:
- references/xxx.md
status: draft
---
状态字段约束(必须遵守)
draft / reviewed / ready / published / deprecateddraft-generated),前端状态徽章不会识别references/*.comments.json 视为参考资料的 sidecar 评论文件,存储高亮与讨论线程。references/reference-notes.md 记录该缺口并提示补充。articles/YYYY-MM-DD-{slug}/
README.md # 元数据
references/ # 参考材料
*.comments.json # 参考资料行内评论 sidecar(含 highlight)
reference-notes.md # 从 reference+comment 提炼出的素材清单
draft-v1.md # AI 初稿
final.md # 人工终稿(Stage 2)
final.comments.json # 终稿行内评论(前端编辑器 sidecar 数据)
diff-analysis.md # 差异分析(Stage 2)
viewpoints.yaml # 观点提取结果(viewpoint-extractor skill 生成)
output/ # 多平台输出(Stage 3)
infographics/ # 信息图(infographic-gen skill 生成)
{slug-1}.jpg
{slug-2}.jpg
blog/
article.md
wechat/
article.md
cover.jpg # 微信封面(wechat-cover skill 生成)
xiaohongshu/
text.md # 发帖文本(编辑推荐语)
cards/ # 文转图卡片(xiaohongshu-cards skill 生成)
01.jpg, 02.jpg, ...
jike/
article.md
twitter/
article.md
用户已将改稿保存为 final.md
如果改稿在前端完成,目录中可能存在 final.comments.json(终稿行内评论数据)。该文件用于编辑协作,不参与平台分发。
执行 Diff-and-Learn
详见 references/diff-learn.md
生成差异分析
将分析结果保存为 diff-analysis.md
提议 Skill 更新 根据差异分析,提出对应 writing-style skill 的更新建议:
必须先向用户确认后再执行更新
更新元数据
将 README.md 中 status 改为 reviewed
final.comments.json 是 final.md 的 sidecar 文件,存储 inline comment 线程。final.comments.json。final.md),不要把评论内容写入平台文案。final.comments.json 一并保留,避免评论线程丢失。读取终稿
加载 final.md(如无则用最新 draft)
原文图片统一上传 R2 并回写终稿(必做)
images/,可扩展到其他本地图片目录)r2-upload skill 批量上传,生成 output/r2-image-mapping.json(相对路径 → R2 URL)final.md 里的本地图片路径统一替换为 R2 URLfinal.md 里补充“原文图集”章节,确保可直接复用选择目标平台 让用户选择输出平台(可多选):
wechat)xiaohongshu)jike)twitter)blog)加载 Formatter 并生成
对每个目标平台,加载 projects/writing/formatters/{platform}.md,按规则生成格式化内容。
xiaohongshu-editor-pick skill 生成编辑推荐语风格的发帖文本,并必须运行 xiaohongshu-cards skill 生成文转图卡片(小红书是图文平台,卡片是必做输出)保存输出
按平台分目录保存到 output/{platform}/:
blog/article.mdwechat/article.mdxiaohongshu/text.md(发帖文本)jike/article.mdtwitter/article.md插入信息图到全平台文章(如 output/infographics/ 存在且非空,必做)
信息图必须插入到每个平台文章的对应内容段落位置(不是堆在末尾)。 根据信息图的 slug 和 viewpoints.yaml 中的 title,找到文章中对应的章节,在该章节标题前插入。
上传:
r2-upload skill 批量上传 output/infographics/ 到 R2,获取 R2 URLwechat-upload skill 批量上传到微信素材库,获取 mmbiz.qpic.cn URL插入(全平台,每个都要做):
 插入到对应段落前 插入到对应段落前。微信不支持外链图片,必须用微信素材库 URL📊 R2 URL 纯文本行,插入到对应段落前(即刻是纯文本平台)📊 R2 URL 纯文本行,插入到对应段落前微信图片链接替换(当目标平台包含 wechat 时,必做)
wechat-upload skill 批量上传文章图片(至少包含 images/ 与 output/infographics/)output/wechat/image-mapping.json(相对路径/R2 URL → {media_id, url})output/wechat/article.md 中所有图片链接替换为微信素材库 URL(mmbiz.qpic.cn)output/wechat/article.md 不得残留 R2/GitHub 等外链图片 URL生成图片资产(必做)
wechat-cover skill → output/wechat/cover.jpg
no textflash 模型优先,失败换 prowechat-upload skill 上传到微信素材库,记录 media_id 和微信 URL 到 output/wechat/image-mapping.json(key 为 cover.jpg)。微信公众号封面图必须使用微信素材库中的图片xiaohongshu-cards skill → output/xiaohongshu/cards/*.jpg
output/infographics/ 存在且非空,必须将信息图嵌入卡片:
cp final.md final.md.bak(备份原文)final.md 对应段落位置插入信息图的 markdown 图片引用()xiaohongshu-cards 生成脚本(脚本会渲染 markdown 中的图片到卡片中)mv final.md.bak final.md(还原原文).card-flow img 样式,会自动渲染内嵌图片更新元数据
将 README.md 中 status 改为 ready(中文:已就绪),记录发布平台
状态约束(强制):
ready,禁止自动改为 publishedpublished 仅在用户明确要求“已发布/已实际发布”时才可使用每个 writing-style skill 的 YAML frontmatter 包含 routing 字段:
routing:
content_types: [...] # 擅长的内容类型
domains: [...] # 擅长的领域
tone: [...] # 语气特征
best_for: "..." # 一句话描述最佳场景
输入:参考材料文本
输出:推荐的 style skill 名称
1. 分析材料特征
- domain: 从关键词、主题、术语判断领域
- content_type: 从结构、目的判断内容类型
- tone: 从语气、目标读者判断期望语调
2. 计算匹配度
对每个 style skill:
domain_match = 材料 domain ∩ skill routing.domains
type_match = 材料 content_type ∩ skill routing.content_types
tone_match = 材料期望 tone ∩ skill routing.tone
score = domain_match * 2 + type_match * 2 + tone_match * 1
3. 选择 score 最高的 skill
- 如果最高分 skill 唯一 → 推荐该 skill
- 如果两个 skill 分数接近(差距 < 20%)→ 列出两个让用户选
- 如果所有 skill 分数都很低 → 提示用户手动选择
| Skill | 擅长 | 关键词 |
|---|---|---|
writing-style-huasheng | 技术解读、人物叙事、产品评测 | AI, 深度学习, 创业, 数据驱动 |
writing-style-baoyu | 方法论、教程、观点输出 | 写作, 工具, 生产力, 比喻驱动 |
writing-style-dankoe | 思辨文章、框架构建、身份探讨 | 心理学, 控制论, 意义, 跨领域 |
writing-style-zhengliu | 知识蒸馏、结构化转述、长文摘要 | 任意领域, 四层结构, 数据优先, 信息提取 |
final.md 已就绪,管线进入 Stage 2