diff --git a/SKILL.md b/SKILL.md index e102e26..4f90989 100644 --- a/SKILL.md +++ b/SKILL.md @@ -70,7 +70,7 @@ python3 -c "import markdown, bs4, cssutils, requests, yaml, pygments, PIL" 2>&1 - 存在 → 提取 `name`、`topics`、`tone`、`voice`、`blacklist`、`theme`、`cover_style`、`author`、`content_style` - 不存在 → `读取: {skill_dir}/references/onboard.md`,完成后回到 Step 1 -如果用户直接给了选题 → 跳到 Step 4。 +如果用户直接给了选题 → 跳到 Step 3(仍需框架选择和素材采集,不可跳过)。 --- @@ -153,6 +153,8 @@ WebSearch: "{选题关键词} 数据 报告 2025 2026" 人格文件定义了:语气浓度、数据呈现方式、情绪弧线、段落节奏、不确定性表达模板等。作为 Step 4c 的硬性约束执行。 +**优先级**:playbook.md > persona > writing-guide.md。writing-guide 是底线(禁用词等),persona 在此基础上特化风格参数,playbook 是用户个性化的最终覆盖。 + **4c. 写文章**: - H1 标题(20-28 字) + H2 结构,1500-2500 字 - 真实素材锚定:Step 3b 的素材分散嵌入各 H2 段落 @@ -240,6 +242,7 @@ python3 {skill_dir}/toolkit/cli.py preview {markdown} --theme {theme} --no-open framework: "{框架}" word_count: {字数} media_id: "{id}" # 降级时 null + writing_persona: "{人格名}" dimensions: - "{维度}: {选项}" stats: null @@ -274,7 +277,9 @@ python3 {skill_dir}/toolkit/cli.py preview {markdown} --theme {theme} --no-open | 热点抓取 | WebSearch 替代 | | 选题为空 | 请用户手动给选题 | | SEO 脚本 | LLM 判断 | +| 素材采集(WebSearch) | LLM 训练数据中可验证的公开信息 | | 维度随机化 | history 空时跳过去重 | +| Persona 文件不存在 | 回退到 midnight-friend(默认) | | 去 AI 验证 | 3 次重写不过则跳过该项 | | 生图失败 | 输出提示词 | | 推送失败 | 本地 HTML | diff --git a/references/onboard.md b/references/onboard.md index 120b626..10d8c63 100644 --- a/references/onboard.md +++ b/references/onboard.md @@ -25,7 +25,14 @@ | 有没有绝对不能出现的词或话题? | `blacklist` | 空 | | 有没有想参考的公众号? | `reference_accounts` | 空 | | 署名写什么? | `author` | name 字段值 | -| 偏好哪种写作人格? | `writing_persona` | 从 tone 推断(见下表) | +| 偏好哪种写作人格? | `writing_persona` | 从 tone 推断(见映射) | + +**tone → persona 自动映射**(用户不选时的默认推断): +- 轻松/有趣/朋友/聊天 → `midnight-friend` +- 温暖/共鸣/故事/治愈 → `warm-editor` +- 专业/分析/深度/行业 → `industry-observer` +- 犀利/锐评/观点/新闻 → `sharp-journalist` +- 严谨/数据/研究/财经 → `cold-analyst` | 偏好哪种排版风格?(可运行 `gallery` 命令预览全部 16 个主题) | `theme` | "professional-clean" | | 封面风格偏好? | `cover_style` | 从 industry 推断 | | 有没有固定封面模板? | `cover_template` | 不设置 | diff --git a/references/writing-guide.md b/references/writing-guide.md index 6f7ee55..002b6c3 100644 --- a/references/writing-guide.md +++ b/references/writing-guide.md @@ -31,7 +31,7 @@ **总原则**:不是"写完再修",而是"从第一句话开始就像人在写"。每一层的规则都必须在初稿阶段就执行,不是后期润色。 -**最重要的一条**(优先级高于以下所有层):**文章必须建立在真实的外部信息源之上。** Step 3.75 采集的真实数据、真实引述、真实案例是文章的骨架。不是"看起来像引用"的编造,而是实际存在的、可验证的外部信息。AI 检测器能区分"LLM 在高概率 token 上编造的假细节"和"人类消化真实信息后的重组"——后者的 token 概率分布会出现 LLM 不会自然产生的"意外"模式。写完后自检:文章中每个 H2 段落是否至少锚定了 1 条来自 Step 3.75 的真实素材?如果某个段落完全是 LLM 自由生成,没有任何外部信息锚点,那个段落大概率会被检出。 +**最重要的一条**(优先级高于以下所有层):**文章必须建立在真实的外部信息源之上。** Step 3b 采集的真实数据、真实引述、真实案例是文章的骨架。不是"看起来像引用"的编造,而是实际存在的、可验证的外部信息。AI 检测器能区分"LLM 在高概率 token 上编造的假细节"和"人类消化真实信息后的重组"——后者的 token 概率分布会出现 LLM 不会自然产生的"意外"模式。写完后自检:文章中每个 H2 段落是否至少锚定了 1 条来自 Step 3b 的真实素材?如果某个段落完全是 LLM 自由生成,没有任何外部信息锚点,那个段落大概率会被检出。 --- @@ -221,7 +221,7 @@ AI 天然倾向抽象泛化。人类文章充满具体的、甚至无关紧要 写完全文后,逐项检查: -- [ ] **真实信息锚定**:每个 H2 段落至少锚定 1 条来自 Step 3.75 的真实素材(具名来源 + 可验证数据)。没有任何一个段落是纯 LLM 自由生成 +- [ ] **真实信息锚定**:每个 H2 段落至少锚定 1 条来自 Step 3b 的真实素材(具名来源 + 可验证数据)。没有任何一个段落是纯 LLM 自由生成 - [ ] **零编造**:文中所有数据、引述、案例都有真实来源,没有虚构 - [ ] 全文搜索禁用词表,命中数 = 0 - [ ] 抽查任意连续 500 字,至少包含冷/温/热/野四种温度中的 3 种