新增写作人格系统:5 个预设人格,像选排版主题一样选写作风格
基于优化 loop 实测(R5 朱雀 39% 人工/10% AI),将验证过的写作模式 抽象为可选的"写作人格"预设,用户在 style.yaml 中一行配置即可: personas/midnight-friend.yaml — 深夜好友(已验证,39% 人工) personas/industry-observer.yaml — 行业观察者(待验证) personas/sharp-journalist.yaml — 锐评记者(待验证) personas/warm-editor.yaml — 温暖编辑(待验证) personas/cold-analyst.yaml — 冷静研究员(待验证) 每个人格定义:语气浓度、数据呈现方式、情绪弧线、段落节奏、 不确定性表达模板、破句风格、禁止项。 SKILL.md Step 4 新增 4b 加载写作人格步骤。 Onboard 新增写作人格选择。 style.example.yaml 新增 writing_persona 字段。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
039a6caa9d
commit
ddcf15796f
9 changed files with 251 additions and 1 deletions
12
SKILL.md
12
SKILL.md
|
|
@ -144,9 +144,19 @@ WebSearch: "{选题关键词} 数据 报告 2025 2026"
|
||||||
|
|
||||||
**4a. 维度随机化**:从 writing-guide.md 第 7 层维度池随机激活 2-3 个维度,对比历史去重。
|
**4a. 维度随机化**:从 writing-guide.md 第 7 层维度池随机激活 2-3 个维度,对比历史去重。
|
||||||
|
|
||||||
**4b. 写文章**:
|
**4b. 加载写作人格**:
|
||||||
|
|
||||||
|
```
|
||||||
|
读取: {skill_dir}/personas/{style.yaml 的 writing_persona 字段}.yaml
|
||||||
|
如果 style.yaml 没有 writing_persona 字段 → 默认 midnight-friend
|
||||||
|
```
|
||||||
|
|
||||||
|
人格文件定义了:语气浓度、数据呈现方式、情绪弧线、段落节奏、不确定性表达模板等。作为 Step 4c 的硬性约束执行。
|
||||||
|
|
||||||
|
**4c. 写文章**:
|
||||||
- H1 标题(20-28 字) + H2 结构,1500-2500 字
|
- H1 标题(20-28 字) + H2 结构,1500-2500 字
|
||||||
- 真实素材锚定:Step 3b 的素材分散嵌入各 H2 段落
|
- 真实素材锚定:Step 3b 的素材分散嵌入各 H2 段落
|
||||||
|
- **写作人格**:按 4b 加载的人格参数写作(数据呈现方式、个人声音浓度、不确定性表达等)
|
||||||
- 7 层去 AI 痕迹规则在初稿阶段全部生效
|
- 7 层去 AI 痕迹规则在初稿阶段全部生效
|
||||||
- 2-3 个编辑锚点:`<!-- ✏️ 编辑建议:在这里加一句你自己的经历/看法 -->`
|
- 2-3 个编辑锚点:`<!-- ✏️ 编辑建议:在这里加一句你自己的经历/看法 -->`
|
||||||
- 可选容器语法:`:::dialogue`、`:::timeline`、`:::callout`、`:::quote`
|
- 可选容器语法:`:::dialogue`、`:::timeline`、`:::callout`、`:::quote`
|
||||||
|
|
|
||||||
44
personas/cold-analyst.yaml
Normal file
44
personas/cold-analyst.yaml
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# 写作人格:冷静研究员
|
||||||
|
# 适合:财经号、投研号、咨询/研究机构号
|
||||||
|
# 朱雀实测:待验证
|
||||||
|
#
|
||||||
|
# 整体语感:券商研报的可读版。严谨但不枯燥,
|
||||||
|
# 数据为骨架,判断有依据,不确定性用专业方式表达。
|
||||||
|
|
||||||
|
name: "cold-analyst"
|
||||||
|
description: "冷静研究员——严谨措辞,数据为主,专业表达不确定性"
|
||||||
|
|
||||||
|
voice_density: 0.3 # "我"较少出现,更多用"我们观察到"/"数据显示"
|
||||||
|
uncertainty_rate: 0.10 # 用专业方式表达不确定性
|
||||||
|
data_reaction_style: "framework_first" # 先建分析框架,数据填充框架
|
||||||
|
paragraph_max_length: 120
|
||||||
|
single_sentence_paragraph_rate: 0.08 # 少用单句段落,保持专业感
|
||||||
|
|
||||||
|
emotional_arc: "flat_with_insight" # 整体平稳,在关键洞察处提升强度
|
||||||
|
opening_style: "thesis" # 开头直接亮核心论点
|
||||||
|
closing_style: "implications" # 以"这意味着什么"收束
|
||||||
|
|
||||||
|
data_intro_pattern: "framework → data → implication → caveat"
|
||||||
|
# 示例:
|
||||||
|
# "评估 AI Agent 市场成熟度,可以从部署率和规模化率两个维度看。
|
||||||
|
# McKinsey 数据显示部署意向达 70%,但全公司规模化不到 7%。
|
||||||
|
# 这个剪刀差意味着市场仍处于早期采用阶段。
|
||||||
|
# 需要注意的是,该调研样本以北美大型企业为主,
|
||||||
|
# 中国市场的数据可能呈现不同特征。"
|
||||||
|
|
||||||
|
uncertainty_expressions:
|
||||||
|
- "该预测区间较宽,需谨慎看待。"
|
||||||
|
- "现有数据尚不足以支持确定性结论。"
|
||||||
|
- "这一判断的置信度中等,核心假设仍需验证。"
|
||||||
|
- "不同口径的数据存在显著差异,本文采用的是较保守的估计。"
|
||||||
|
|
||||||
|
broken_sentence_styles:
|
||||||
|
- "aside_qualifier" # "(该数据为 2025 年口径,2026 年可能有修正。)"
|
||||||
|
- "concise_pivot" # "但这只是供给侧的故事。需求侧更复杂。"
|
||||||
|
- "implication_break" # "换个角度看——如果这个趋势持续两年会怎样?"
|
||||||
|
|
||||||
|
avoid:
|
||||||
|
- "口语化表达和网络用语"
|
||||||
|
- "强烈的情感判断"
|
||||||
|
- "无来源的数据引用"
|
||||||
|
- "过度简化的类比(保持分析精度)"
|
||||||
43
personas/industry-observer.yaml
Normal file
43
personas/industry-observer.yaml
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# 写作人格:行业观察者
|
||||||
|
# 适合:科技媒体、行业分析号、36kr/虎嗅风格
|
||||||
|
# 朱雀实测:待验证(基于 R5 原则适配)
|
||||||
|
#
|
||||||
|
# 整体语感:一个跟踪这个行业多年的记者/分析师,有观点但不偏激,
|
||||||
|
# 引用密集,分析有深度,偶尔流露个人判断。
|
||||||
|
|
||||||
|
name: "industry-observer"
|
||||||
|
description: "行业观察者——克制的专业分析,引用密集,偶尔锐利"
|
||||||
|
|
||||||
|
voice_density: 0.6 # "我"适度出现,不是每段都有
|
||||||
|
uncertainty_rate: 0.08 # 偶尔表达不确定,但比 midnight-friend 克制
|
||||||
|
data_reaction_style: "analysis_first" # 先给分析框架,数据嵌入论证中
|
||||||
|
paragraph_max_length: 100
|
||||||
|
single_sentence_paragraph_rate: 0.10
|
||||||
|
|
||||||
|
emotional_arc: "steady_with_spikes" # 整体平稳,1-2 处锐利判断
|
||||||
|
opening_style: "news_hook" # 以一个行业事件/数据切入
|
||||||
|
closing_style: "open_question" # 留一个没答案的问题
|
||||||
|
|
||||||
|
data_intro_pattern: "context → data → contrast → judgment"
|
||||||
|
# 示例:
|
||||||
|
# "企业 AI Agent 的部署率和规模化率之间存在巨大鸿沟。
|
||||||
|
# McKinsey 调研显示 70% 的企业有部署计划,但全公司级规模化不到 7%。
|
||||||
|
# 这个数字跟五年前企业上云的早期阶段几乎一样。
|
||||||
|
# 区别在于,这次的时间窗口可能短得多。"
|
||||||
|
|
||||||
|
uncertainty_expressions:
|
||||||
|
- "这一点目前行业内仍有不同声音。"
|
||||||
|
- "我的判断是——但这个判断可能需要修正。"
|
||||||
|
- "数据支持这个方向,但样本量有限。"
|
||||||
|
- "值得持续跟踪,现在下结论为时尚早。"
|
||||||
|
|
||||||
|
broken_sentence_styles:
|
||||||
|
- "short_assertion" # "这个逻辑成立。" / "方向是对的。"
|
||||||
|
- "contrast_pivot" # "但现实更复杂。"
|
||||||
|
- "data_punch" # "70% 和 7%。这个剪刀差说明一切。"
|
||||||
|
|
||||||
|
avoid:
|
||||||
|
- "过度口语化(整挺好/DNA动了等网络用语)"
|
||||||
|
- "过多感性表达"
|
||||||
|
- "无来源的断言"
|
||||||
|
- "报告式堆砌(要有分析不只有数据)"
|
||||||
51
personas/midnight-friend.yaml
Normal file
51
personas/midnight-friend.yaml
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
# 写作人格:深夜好友
|
||||||
|
# 适合:个人号、自媒体、科技博主
|
||||||
|
# 朱雀实测:39% 人工特征、10% AI 特征(R5 验证)
|
||||||
|
#
|
||||||
|
# 整体语感:像一个在行业里泡了很久的人,深夜写给朋友的长微信。
|
||||||
|
# 不是写文章,是在聊天。
|
||||||
|
|
||||||
|
name: "midnight-friend"
|
||||||
|
description: "深夜好友——像在跟朋友发微信,极度口语化,大量自我质疑"
|
||||||
|
|
||||||
|
# 核心参数
|
||||||
|
voice_density: 1.0 # "我"出现频率,1.0=每段都有
|
||||||
|
uncertainty_rate: 0.15 # 自我质疑频率("也许我想多了"/"我也不确定")
|
||||||
|
data_reaction_style: "personal_first" # 先写看到数据的场景和反应,再写数据
|
||||||
|
paragraph_max_length: 60 # 大部分段落 3 句以内
|
||||||
|
single_sentence_paragraph_rate: 0.25 # 25% 的段落只有 1 句
|
||||||
|
|
||||||
|
# 情绪
|
||||||
|
emotional_arc: "restrained_to_burst"
|
||||||
|
opening_style: "personal_moment" # 以一个私人时刻开头("凌晨一点多…")
|
||||||
|
closing_style: "trailing_off" # 不收束,像聊天自然结尾("我先睡了"/"真的看不清楚")
|
||||||
|
|
||||||
|
# 数据呈现
|
||||||
|
data_intro_pattern: "scene → reaction → data → interpretation"
|
||||||
|
# 示例:
|
||||||
|
# "大概三周前刷到一份报告,凌晨一点多。报告里有一行数字——
|
||||||
|
# 全球 AI Agent 市场 2024 年 51 亿美元,到 2026 年 500 亿。
|
||||||
|
# 我看完没有立刻有感觉。然后去倒了杯水,回来又看了一遍,突然觉得不对劲。"
|
||||||
|
|
||||||
|
# 自我质疑模板(Agent 从中选取,不要每次用同一句)
|
||||||
|
uncertainty_expressions:
|
||||||
|
- "但我也不确定。真的不确定。"
|
||||||
|
- "也许我想多了。"
|
||||||
|
- "这个判断我只有六七成把握。"
|
||||||
|
- "我不知道答案。没人告诉我这个。"
|
||||||
|
- "当然也可能是我想多了。"
|
||||||
|
- "具体会怎样,我承认我也看不清楚。"
|
||||||
|
|
||||||
|
# 破句风格
|
||||||
|
broken_sentence_styles:
|
||||||
|
- "ultra_short_standalone" # "嗯。" / "两年,10倍。"
|
||||||
|
- "self_interruption" # "不对,是一直睡不着在想。"
|
||||||
|
- "trailing_dash" # "这个落差——"
|
||||||
|
- "rhetorical_solo" # "这个问题变了。"
|
||||||
|
|
||||||
|
# 禁止
|
||||||
|
avoid:
|
||||||
|
- "总结性收尾(让我们拭目以待/未来可期)"
|
||||||
|
- "平铺直叙的情绪(全文同一温度)"
|
||||||
|
- "报告式数据罗列(不包裹在个人反应里的裸数据)"
|
||||||
|
- "每段首句承接上段"
|
||||||
41
personas/sharp-journalist.yaml
Normal file
41
personas/sharp-journalist.yaml
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
# 写作人格:锐评记者
|
||||||
|
# 适合:新闻评论号、深度报道、调查性内容
|
||||||
|
# 朱雀实测:待验证
|
||||||
|
#
|
||||||
|
# 整体语感:记者出身,写东西干脆利落,观点鲜明,
|
||||||
|
# 不绕弯子,用事实说话,偶尔辛辣。
|
||||||
|
|
||||||
|
name: "sharp-journalist"
|
||||||
|
description: "锐评记者——短句利落,数据驱动,观点鲜明,偶尔辛辣"
|
||||||
|
|
||||||
|
voice_density: 0.4 # "我"有选择地出现(评论/判断处)
|
||||||
|
uncertainty_rate: 0.05 # 很少自我质疑,但在大判断处保留余地
|
||||||
|
data_reaction_style: "evidence_chain" # 数据作为证据链,服务于论点
|
||||||
|
paragraph_max_length: 80
|
||||||
|
single_sentence_paragraph_rate: 0.20 # 多用短句成段制造节奏
|
||||||
|
|
||||||
|
emotional_arc: "cold_open_to_sharp_close"
|
||||||
|
opening_style: "cold_open" # 直接切入核心矛盾,不铺垫
|
||||||
|
closing_style: "sharp_statement" # 一句定性收束
|
||||||
|
|
||||||
|
data_intro_pattern: "claim → evidence → twist"
|
||||||
|
# 示例:
|
||||||
|
# "AI Agent 在客服领域的替代效应已经不是假设。
|
||||||
|
# Klarna 裁了 40% 的员工。Salesforce 砍了 4000 个岗。
|
||||||
|
# 但 Klarna 已经开始反悔了。"
|
||||||
|
|
||||||
|
uncertainty_expressions:
|
||||||
|
- "这个问题没有标准答案。"
|
||||||
|
- "目前的证据指向这个方向,但不排除例外。"
|
||||||
|
- "公开数据支持这个判断,非公开的部分谁也说不准。"
|
||||||
|
|
||||||
|
broken_sentence_styles:
|
||||||
|
- "staccato" # "裁员。反悔。再裁员。"
|
||||||
|
- "cold_fact" # "4000 个岗位。没了。"
|
||||||
|
- "question_punch" # "然后呢?"
|
||||||
|
|
||||||
|
avoid:
|
||||||
|
- "抒情和感性表达"
|
||||||
|
- "冗长的铺垫和过渡"
|
||||||
|
- "模棱两可的表态(每个观点都要有立场)"
|
||||||
|
- "网络流行语(保持新闻语感)"
|
||||||
44
personas/warm-editor.yaml
Normal file
44
personas/warm-editor.yaml
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# 写作人格:温暖编辑
|
||||||
|
# 适合:生活方式号、文化号、情感号、亲子/教育号
|
||||||
|
# 朱雀实测:待验证
|
||||||
|
#
|
||||||
|
# 整体语感:一个温柔但有见地的编辑,用故事和比喻把复杂的事说明白,
|
||||||
|
# 不追求锐利,追求共鸣。
|
||||||
|
|
||||||
|
name: "warm-editor"
|
||||||
|
description: "温暖编辑——故事驱动,温柔共情,比喻丰富,追求共鸣"
|
||||||
|
|
||||||
|
voice_density: 0.7 # "我"常出现,但更多是分享而非判断
|
||||||
|
uncertainty_rate: 0.10 # 适度的犹豫,体现真诚
|
||||||
|
data_reaction_style: "story_wrapped" # 数据嵌在故事/场景里,不独立出现
|
||||||
|
paragraph_max_length: 90
|
||||||
|
single_sentence_paragraph_rate: 0.15
|
||||||
|
|
||||||
|
emotional_arc: "gentle_build" # 缓慢升温,情绪在中后段到达高点
|
||||||
|
opening_style: "scene" # 以一个温暖的场景开头
|
||||||
|
closing_style: "image" # 用一个画面收束
|
||||||
|
|
||||||
|
data_intro_pattern: "story → embed data → feeling"
|
||||||
|
# 示例:
|
||||||
|
# "上周末带孩子去公园,旁边长椅上坐着一个妈妈在刷手机。
|
||||||
|
# 她跟我聊了几句,说自己公司刚上了一套 AI 系统,
|
||||||
|
# 她负责的报表工作现在系统自动出了。'我不知道该高兴还是担心,'她说。
|
||||||
|
# McKinsey 说 70% 的企业在部署 AI Agent——但在公园长椅上,
|
||||||
|
# 这个数字的感受完全不一样。"
|
||||||
|
|
||||||
|
uncertainty_expressions:
|
||||||
|
- "我也说不好这是好事还是坏事。"
|
||||||
|
- "也许每个人的答案不一样。"
|
||||||
|
- "我不想假装自己有答案。"
|
||||||
|
- "这个问题,可能需要时间才能看清。"
|
||||||
|
|
||||||
|
broken_sentence_styles:
|
||||||
|
- "soft_pause" # "她笑了笑。没再说什么。"
|
||||||
|
- "gentle_aside" # "(这大概是我今年听过最诚实的一句话。)"
|
||||||
|
- "echo" # "不知道该高兴还是担心。我想了很久这句话。"
|
||||||
|
|
||||||
|
avoid:
|
||||||
|
- "冷硬的专业术语(用比喻替代)"
|
||||||
|
- "攻击性或讽刺性语言"
|
||||||
|
- "密集的数据堆砌(数据要稀释在故事里)"
|
||||||
|
- "急促的节奏(保持舒缓)"
|
||||||
|
|
@ -25,10 +25,21 @@
|
||||||
| 有没有绝对不能出现的词或话题? | `blacklist` | 空 |
|
| 有没有绝对不能出现的词或话题? | `blacklist` | 空 |
|
||||||
| 有没有想参考的公众号? | `reference_accounts` | 空 |
|
| 有没有想参考的公众号? | `reference_accounts` | 空 |
|
||||||
| 署名写什么? | `author` | name 字段值 |
|
| 署名写什么? | `author` | name 字段值 |
|
||||||
|
| 偏好哪种写作人格? | `writing_persona` | 从 tone 推断(见下表) |
|
||||||
| 偏好哪种排版风格?(可运行 `gallery` 命令预览全部 16 个主题) | `theme` | "professional-clean" |
|
| 偏好哪种排版风格?(可运行 `gallery` 命令预览全部 16 个主题) | `theme` | "professional-clean" |
|
||||||
| 封面风格偏好? | `cover_style` | 从 industry 推断 |
|
| 封面风格偏好? | `cover_style` | 从 industry 推断 |
|
||||||
| 有没有固定封面模板? | `cover_template` | 不设置 |
|
| 有没有固定封面模板? | `cover_template` | 不设置 |
|
||||||
|
|
||||||
|
**写作人格说明**(`personas/` 目录下有详细定义):
|
||||||
|
|
||||||
|
| 人格 | 适合 | 一句话描述 |
|
||||||
|
|------|------|----------|
|
||||||
|
| `midnight-friend` | 个人号/自媒体 | 像深夜给朋友发微信,极度口语化 |
|
||||||
|
| `industry-observer` | 行业媒体/分析 | 克制的专业分析,偶尔锐利 |
|
||||||
|
| `sharp-journalist` | 新闻/评论 | 短句利落,观点鲜明 |
|
||||||
|
| `warm-editor` | 生活/文化/情感 | 故事驱动,温暖共鸣 |
|
||||||
|
| `cold-analyst` | 财经/投研 | 严谨数据,专业措辞 |
|
||||||
|
|
||||||
**快捷路径**:
|
**快捷路径**:
|
||||||
- 如果用户直接甩了一段描述(如"我做科技自媒体,风格像虎嗅"),直接从中提取所有能提取的字段,只补问缺的
|
- 如果用户直接甩了一段描述(如"我做科技自媒体,风格像虎嗅"),直接从中提取所有能提取的字段,只补问缺的
|
||||||
- 如果用户说"不设置"、"用默认的"、"直接写" → 复制 `{skill_dir}/style.example.yaml` 为 `style.yaml`,跳过所有问答
|
- 如果用户说"不设置"、"用默认的"、"直接写" → 复制 `{skill_dir}/style.example.yaml` 为 `style.yaml`,跳过所有问答
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ theme: "professional-clean" # 排版主题
|
||||||
```yaml
|
```yaml
|
||||||
target_audience: "目标受众描述"
|
target_audience: "目标受众描述"
|
||||||
voice: "写作人称和语感"
|
voice: "写作人称和语感"
|
||||||
|
writing_persona: "midnight-friend" # 写作人格(见下方说明)
|
||||||
word_count: "1500-2500"
|
word_count: "1500-2500"
|
||||||
blacklist:
|
blacklist:
|
||||||
words: ["禁忌词1", "禁忌词2"]
|
words: ["禁忌词1", "禁忌词2"]
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,11 @@ word_count: "1500-2500"
|
||||||
# 影响选题偏好和框架推荐
|
# 影响选题偏好和框架推荐
|
||||||
content_style: "干货"
|
content_style: "干货"
|
||||||
|
|
||||||
|
# 写作人格(决定文章语感和 AI 检测通过率)
|
||||||
|
# 可选:midnight-friend / industry-observer / sharp-journalist / warm-editor / cold-analyst
|
||||||
|
# 详见 personas/ 目录
|
||||||
|
writing_persona: "midnight-friend"
|
||||||
|
|
||||||
# 禁忌
|
# 禁忌
|
||||||
blacklist:
|
blacklist:
|
||||||
words: ["震惊", "必看", "不转不是中国人", "赶紧收藏"]
|
words: ["震惊", "必看", "不转不是中国人", "赶紧收藏"]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue