把对话转文章和贴图(chat-to-content)
用途
把一次真实的人机协作过程,沉淀成两种可发布的内容资产:
- 文章(
.md):吸睛标题 + 2-3 个备选、开篇引入、分小节正文、重点总结、结尾互动引导,口语化、有细节、有观点。 - 贴图(
.png/.jpg):竖版信息流比例,标题醒目、要点分层、金句与结论高亮,单张或系列卡片。
核心约束:只用真实对话内容。不臆造数据、不虚构情节、不泄露隐私与敏感信息。
触发判断
满足以下任一条件即启动本技能:
- 显式指令:「把对话转成文章和贴图」「总结本次对话并生成文章/贴图」「把这段对话整理成文章」「整理成分享贴图」
- 关键词:「总结会话」「总结对话」「生成贴图」「生成分享卡片」「分享卡片」「转成文章」「做成公众号文章」
不启动的情形:
- 当前会话是首次交互、没有任何成型的问答往来的。
- 用户只是在问「这个技能怎么用」这类关于技能本身的元问题。
- 用户要求总结的是别人的对话或外部文档,而非当前会话(此时按普通写作/总结任务处理)。
前置检查(硬门槛,必须先做)
按顺序执行,任一步不通过就停止并如实说明,不要用编造内容凑一篇稿子。
第 1 步 · 上下文自查 回看当前会话:是否存在用户提问与智能体实质回复构成的多轮交互(不是一句寒暄、不是单轮工具调用)。
第 2 步 · 记录文件核验 运行抽取脚本,确认本地会话记录可读,并拿到真实素材:
python "<SKILL_DIR>/scripts/extract_session.py" --check
python "<SKILL_DIR>/scripts/extract_session.py" --out-dir "<输出目录>/_source"
<SKILL_DIR>= 本技能目录(~/.workbuddy/skills/chat-to-content)。- Python 解释器优先用托管版本
C:/Users/wzq/.workbuddy/binaries/python/versions/3.13.12/python.exe,不存在时退回python。 --check输出 JSON:ok=true才继续;ok=false时把reason原话转述给用户并结束。--out-dir会把对话抽取成transcript.md(已过滤工具调用、思维链与系统注入内容),后续写作以它为准。上下文已被压缩时,这份文件是唯一可靠素材源。
第 3 步 · 素材充足性判断
读完 transcript.md 后,若只有一个话题的一句话问答(有效内容 < 300 字),告知用户「这次对话内容偏薄,建议先聊深一点再总结,或确认是否仍要生成」,等用户确认再继续。
输出模式
从用户指令中解析,缺省为「两者都要」:
| 用户说法 | 模式 |
|---|---|
| 「只要文章」「只出文章」「写篇稿子就行」 | article |
| 「只要贴图」「只出图」「生成分享卡片」 | cards |
| 「都要」「文章和贴图」「顺带出几张图」 | both(默认) |
工作流
Step 1 · 读素材
阅读 _source/transcript.md。会话很长时按「用户提问 → 关键转折 → 结论」定位,不必逐字精读工具输出。
Step 2 · 提炼内容骨架
按 references/extraction.md 的五维框架整理:
- 用户的核心问题与求知背景
- 讨论的关键转折(哪一次纠正、哪一个选择改变了方向)
- 智能体的重要结论与方法
- 遇到的坑与解决办法
- 可复用经验清单
产出内部骨架(不直接给用户看),每条都要能指回原对话。指不回去的内容一律删掉。
Step 3 · 建输出目录
在会话工作区下创建:
<workspace>/outputs/<YYYY-MM-DD>_会话总结_<主题slug>/
├── _source/transcript.md # 素材(前置检查时已生成)
├── <YYYY-MM-DD>_<主题slug>_article.md
├── cards/card-01.png ...
└── cards.json # 贴图数据(可复现)
- 日期取运行当天,
YYYY-MM-DD格式。 <主题slug>:3-5 个英文小写单词、连字符分隔,取自会话主题,如workbuddy-skill-build、ai-video-workflow。不要用中文或空格。- 命名示范:
2026-10-26_会话总结_ai-video-workflow/2026-10-26_ai-video-workflow_article.md
Step 4 · 写文章(模式为 article / both 时)
按 references/article.md 的结构与语感写。要点:
- 给 1 个主标题 + 2-3 个备选,风格各异(悬念型 / 数字型 / 观点型),不要同质。
- 开篇用具体场景或一句反常识判断切入,禁止「随着 AI 的发展」这类空转开头。
- 正文分 3-5 个小节,每节一个明确观点,配对话中的具体细节(原话、数字、报错、选择)。
- 设「重点总结」段落,用短句清单收口。
- 结尾给互动引导(提问式,不要「欢迎留言讨论」这类模板句)。
- 语言:口语化短段落,避免术语堆砌;技术名词首次出现时给一句人话解释。
- 需要贴合用户既有风格时,先调用其风格档案技能(如
my-style-writer、shanguan-wechat-creator);不可用则按上述语感执行,并在交付说明里注明。 - 篇幅 1500-2500 字,宁短勿水。
Step 5 · 生成贴图(模式为 cards / both 时)
- 按
references/cards.md设计卡片套系(默认 5 张:封面 → 核心问题 → 关键转折金句 → 经验清单 → 结论),内容写进cards.json。 - 渲染:
python "<SKILL_DIR>/scripts/render_cards.py" --data "cards.json" --out-dir "<输出目录>/cards" --theme coral --scale 2
- 用 Read 工具抽查首尾两张图:文字是否被裁、留白是否失衡、换行是否断在奇怪位置。发现问题改
cards.json重渲,不要交付半成品。 - 单卡内容超限时拆卡,不要压缩字号硬塞(脚本会自动缩放,缩到 0.55 倍以下说明该拆了)。
- 平台比例:公众号/朋友圈用
1080x1440(默认,3:4);小红书/抖音信息流用--size 1080x1920。
Step 6 · 交付
- 用一段话说明:用了哪几轮对话、生成了什么、文章标题是什么、卡片几张。
- 调用
present_files展示全部产物(文章 + 卡片,文章排第一)。 - 若因输出模式或前置检查只产出一部分,明确说明原因。
真实性红线
- 所有事实、数字、结论必须能在
transcript.md里找到出处;不确定的写成「当时的判断」而非「事实证明」。 - 脱敏:真实姓名、公司内部名称、绝对路径、密钥、token、订单号、IP、手机号一律替换为
<项目路径>、某客户、<密钥>这类占位。 - 不把智能体的自我描述(「我是 AI 助手」)写进正文;也不要在文章里复述本技能的流程说明。
- 用户明确说「这段别提」的内容直接剔除。
需要向用户确认的时机
- 前置检查不通过(无历史记录 / 素材过薄)。
- 主题涉及敏感领域(商业机密、个人隐私、未公开项目),且用户没说明可公开范围。
- 用户没给输出模式,且会话内容明显只适合其中一种(例如纯代码调试,贴图价值低)——给一个推荐并继续,不必等回复。
常见坑
| 现象 | 原因 | 处理 |
|---|---|---|
--check 返回 ok=false,但明明聊了很多 |
工作区目录被移动,slug 对不上 | 用 --list 10 找最近会话,再用 --session-file 指定 |
transcript.md 里混进大段工具输出 |
素材本身含长日志 | 写作时只取结论行,不要把日志搬进文章 |
| 卡片文字被裁切 | 单卡条目过多 | 拆成两张,或压缩每条描述字数 |
| 截图脚本失败 | 本机无 Edge/Chrome 且无 playwright | 如实报告缺依赖,请用户装其一;不要用文生图模型顶替(文字会糊) |
| 输出文件名乱码 | 命名未用 slug | 严守 Step 3 命名规范 |
资源索引
references/extraction.md— 五维提炼框架、脱敏规则、真实性校验清单references/article.md— 文章结构模板、标题公式、语感要点、示例段落references/cards.md— 贴图排版规范、卡片类型与字段、主题色板、套系设计scripts/extract_session.py— 会话记录定位与抽取(--check/--out-dir/--list)scripts/render_cards.py— 卡片 JSON → PNG/JPG 渲染(Edge/Chrome headless 或 playwright)assets/card_template.html— 卡片版式模板(CSS 变量控制主题,内置溢出自动缩放)
