diff --git a/SKILL.md b/SKILL.md index c834b91..a645124 100644 --- a/SKILL.md +++ b/SKILL.md @@ -141,7 +141,7 @@ python3 {skill_dir}/scripts/fetch_hotspots.py --limit 30 **降级**:脚本报错 → WebSearch "今日热点 {topics第一个垂类}" -**2.2 历史去重 + SEO**: +**2.2 历史分析 + SEO**: ``` 读取: {skill_dir}/history.yaml(不存在则跳过) @@ -151,18 +151,27 @@ python3 {skill_dir}/scripts/fetch_hotspots.py --limit 30 python3 {skill_dir}/scripts/seo_keywords.py --json {关键词} ``` -**降级**:SEO 脚本报错 → LLM 判断 +历史分析(有 stats 数据时): +- 统计哪种 `framework` 的文章表现最好(阅读量/分享率)→ 推荐框架时加权 +- 统计哪种 `enhance_strategy` 的文章表现最好 → 增强策略选择时参考 +- 近 7 天已写的关键词降分(去重) -**2.3 生成 10 个选题**: +**降级**:SEO 脚本报错 → LLM 判断;history 无 stats → 跳过效果分析,仅做去重 + +**2.3 生成选题**: ``` 读取: {skill_dir}/references/topic-selection.md ``` -每个选题含标题、评分、点击率潜力、SEO 友好度、推荐框架。近 7 天已写的关键词降分。 +生成 **10 个选题**,其中: +- **7-8 个热点选题**:基于 2.1 的热点,按 topic-selection.md 规则评分 +- **2-3 个常青选题**:不依赖热点,从用户的 `topics` 领域生成长尾内容(教程/方法论/经验总结/工具推荐),标注为"常青"。适合 content_style 为干货型/测评型的用户 + +每个选题含标题、评分、点击率潜力、SEO 友好度、推荐框架。 - 自动模式 → 选最高分 -- 交互模式 → 展示 10 个,等用户选 +- 交互模式 → 展示全部,等用户选 --- @@ -176,35 +185,28 @@ python3 {skill_dir}/scripts/seo_keywords.py --json {关键词} 7 套框架(痛点/故事/清单/对比/热点解读/纯观点/复盘),自动选推荐指数最高的。 -**3.2 素材采集**: - -``` -WebSearch: "{选题关键词} site:36kr.com OR site:mp.weixin.qq.com OR site:zhihu.com" -WebSearch: "{选题关键词} 数据 报告 2025 2026" -``` - -采集 5-8 条真实素材(具名来源 + 具体数据/引述/案例)。**禁止编造**。 - -**降级**:WebSearch 无结果或不可用 → 用 LLM 训练数据中可验证的公开信息。但需告知用户:"素材采集未能使用 WebSearch,建议在编辑锚点处多加入你自己的内容。" - -**3.3 内容增强(关键——决定文章是否值得读)**: +**3.2 素材采集 + 内容增强**(合并执行,共用搜索结果): ``` 读取: {skill_dir}/references/content-enhance.md ``` -根据 3.1 选定的框架类型,执行对应的增强策略: +根据 3.1 选定的框架类型,一次搜索同时完成素材采集和内容增强: -| 框架 | 策略 | 核心动作 | -|------|------|---------| -| 热点解读 / 纯观点 | 角度发现 | WebSearch 已有文章 → 提取主流观点 → 生成 3 个差异化角度 → 选最尖锐的 | -| 痛点 / 清单 | 密度强化 | 检查每个 H2 是否有可操作要点 → 补充工具名/步骤/参数 | -| 故事 / 复盘 | 细节锚定 | WebSearch 真实细节 → 补充时间锚/数字锚/对话锚/感官锚 | -| 对比 | 真实体感 | WebSearch 真实用户评价 → 场景化对比 → 补充踩坑信息 | +| 框架 | 搜索策略 | 从结果中提取 | +|------|---------|-------------| +| 热点解读 / 纯观点 | `"{关键词} site:mp.weixin.qq.com OR site:36kr.com"` + `"{关键词} 观点 OR 评论"` | 真实素材(数据/引述)**+** 已有文章的主流观点(供角度发现) | +| 痛点 / 清单 | `"{关键词} 教程 OR 工具 OR 实操"` + `"{关键词} 数据 报告"` | 真实素材 **+** 具体工具名/步骤/参数(供密度强化) | +| 故事 / 复盘 | `"{人物/事件} 采访 OR 专访 OR 细节"` + `"{关键词} 数据 报告"` | 真实素材 **+** 时间锚/数字锚/对话锚/感官锚(供细节锚定) | +| 对比 | `"{方案A} vs {方案B} 评测 OR 体验"` + `"{方案A OR 方案B} 踩坑 OR 缺点 site:v2ex.com OR site:zhihu.com"` | 真实素材 **+** 真实用户评价和踩坑信息(供真实体感) | -增强策略的输出(角度/密度要点/细节/用户声音)并入框架大纲,一起传入 Step 4 写作。 +每次搜索 2 轮,从结果中**同时**提取: +1. **素材**:5-8 条真实素材(具名来源 + 具体数据/引述/案例)。**禁止编造**。 +2. **增强材料**:按 content-enhance.md 对应策略的要求提取(角度/密度要点/细节/用户声音)。 -**降级**:WebSearch 不可用时,角度发现和真实体感策略用 LLM 自身知识替代(效果降低但不阻断)。密度强化和细节锚定不依赖搜索,始终执行。 +两者并入框架大纲,一起传入 Step 4 写作。 + +**降级**:WebSearch 不可用 → 用 LLM 训练数据中可验证的公开信息。但需告知用户:"素材采集未能使用 WebSearch,建议在编辑锚点处多加入你自己的内容。"密度强化不依赖搜索,始终执行。 --- @@ -261,10 +263,10 @@ Category 映射规则: | 框架类型 | exemplar category | |----------|-------------------| -| 痛点型/深度解读 | tech-opinion | -| 故事型 | story-emotional | -| 清单型/对比型 | list-practical | -| 热点解读型 | hot-take | +| 痛点型 | tech-opinion | +| 故事型 / 复盘型 | story-emotional | +| 清单型 / 对比型 | list-practical | +| 热点解读型 / 纯观点型 | hot-take | | 其他 | general | 如果匹配到的范文不足 3 篇,用 general category 补足。 @@ -314,24 +316,31 @@ Category 映射规则: **5.1 SEO**:3 个备选标题 + 摘要(≤54 字)+ 5 标签 + 关键词密度优化 -**5.2 去 AI 逐层验证**(writing-guide.md 自检清单,每项必须通过): +**5.2 质量验证**(两个维度,每项逐一检查): -| 层级 | 检查项 | 标准 | 规则 | -|------|--------|------|------| -| 统计 | 句长方差 | 最短与最长句相差 ≥ 30 字 | 1.1 | -| 统计 | 词汇温度 | 任意 500 字 ≥ 3 种温度 | 1.2 | -| 统计 | 段落节奏 | 无连续 2 个相近长度段落 | 1.3 | -| 统计 | 情绪极性 | 负面情绪 ≥ 2 处,无平铺直叙 | 1.4 | -| 统计 | 副词密度 | 无连续两句以副词开头 | 1.5 | -| 统计 | 风格漂移 | 不同 H2 语气/正式度有差异 | 1.6 | -| 语言 | 禁用词 | 命中数 = 0 | 2.1 | -| 语言 | 破句 | ≥ 3 处 | 2.2 | -| 语言 | 意外用词 | ≥ 1 处非常规但说得通的表达 | 2.3 | -| 语言 | 连贯性 | ≥ 1 处跑题再拉回 | 2.4 | -| 内容 | 真实锚定 | 每个 H2 ≥ 1 条真实素材,零编造 | 3.1 | -| 内容 | 具体性 | 每 500 字 ≥ 2 处具体细节 | 3.2 | -| 内容 | 密度波浪 | 高密度段后跟低密度段 | 3.3 | -| 内容 | 维度贯穿 | 激活维度全文可见 | 3.4 | +**A. 写作质量**(writing-guide.md 基础规则): + +| 检查项 | 标准 | 规则 | +|--------|------|------| +| 句长方差 | 最短与最长句相差 ≥ 30 字 | 1.1 | +| 词汇温度 | 任意 500 字 ≥ 3 种温度 | 1.2 | +| 段落节奏 | 无连续 2 个相近长度段落 | 1.3 | +| 情绪极性 | 负面情绪 ≥ 2 处,无平铺直叙 | 1.4 | +| 禁用词 | 命中数 = 0 | 2.1 | +| 真实锚定 | 每个 H2 ≥ 1 条真实素材,零编造 | 3.1 | +| 具体性 | 每 500 字 ≥ 2 处具体细节 | 3.2 | + +**B. 内容质量**(基于 Step 3.2 的增强策略检查): + +| 检查项 | 标准 | 适用框架 | +|--------|------|---------| +| 增强贯穿 | 增强策略的核心输出(角度/密度/细节/体感)在全文可见,不只出现在一段 | 所有 | +| 开头钩子 | 前 3 句能制造悬念、冲突或好奇心(不是背景铺垫) | 所有 | +| 金句密度 | 至少 1 处可独立截图转发的句子 | 所有 | +| 操作密度 | 每个 H2 有可操作要点(工具/步骤/参数) | 痛点/清单 | +| 角度锐度 | 核心观点能引发同意或反对,不是"两面都有道理" | 热点解读/纯观点 | +| 场景感 | 至少 2 处有时间/地点/对话等画面细节 | 故事/复盘 | +| 真实声音 | 至少 1 处引用真实用户评价或体验 | 对比 | 不通过 → **定向修复**:只替换不达标的具体句子/段落,不动已通过的部分。每轮最多改 3 处,改完立即重新检查该项。2 轮仍不过 → 标注跳过,继续下一项。 diff --git a/dist/openclaw/references/topic-selection.md b/dist/openclaw/references/topic-selection.md index 3c4dbe2..e17c9cf 100644 --- a/dist/openclaw/references/topic-selection.md +++ b/dist/openclaw/references/topic-selection.md @@ -85,18 +85,36 @@ - 如果在**7-30 天**内出现 → 综合评分扣 1 分,标注"ℹ️ 月内有相关文章" - 超过 30 天 → 不扣分 -## 历史偏好参考 +## 历史效果闭环 -如果 history.yaml 中有带 stats 的文章(阅读量、分享量),分析表现最好的文章的共同特征: -- 哪种框架类型表现好?→ 推荐框架时优先 -- 哪种标题风格表现好?(数字型/反直觉/痛点)→ 拟标题时参考 -- 不要强制套用——只作为参考信号,选题本身的质量仍然最重要 +如果 history.yaml 中有带 stats 的文章(阅读量、分享量),做以下分析: + +1. **框架偏好**:统计每种 framework 的平均阅读量和分享率 → 推荐框架时,表现好的框架加 1-2 分 +2. **增强策略偏好**:统计每种 enhance_strategy 的平均表现 → 在 Step 3.2 选择增强策略时参考 +3. **标题风格**:分析高表现文章的标题特征(数字型/反直觉/痛点/提问)→ 拟标题时参考 +4. **content_style 验证**:如果用户设置的 content_style 与实际高表现文章的类型不符 → 在选题报告末尾提示 + +不要强制套用——只作为加权信号,选题本身的质量仍然最重要。stats 数据不足 5 篇时跳过此分析。 + +## 常青选题 + +除了热点选题,额外生成 **2-3 个常青选题**——不依赖时效性,长尾流量价值高。 + +常青选题来源: +- 从用户的 `topics` 列表出发,生成教程/方法论/经验总结/工具推荐类选题 +- 参考 SEO 数据中搜索量高但竞争度低的关键词 +- 如果有 history.yaml,避免与已写过的常青内容重复 + +常青选题的评分规则: +- 热度分固定为 5(不依赖热搜,但也不是 0) +- 相关度和切入价值正常评分 +- 标注"🌲 常青",与热点选题混排 ## 选题不足时的处理 -- 如果能找到 10 个相关度 ≥ 5 的选题,直接输出 -- 如果只能找到 5-9 个,用相关度 3-4 的选题补齐到 10 个,但标注"相关度偏低" -- 如果相关度 ≥ 5 的不足 5 个,告诉用户"今天热点跟你的领域匹配度不高",输出能找到的 + 建议用户自己给选题 +- 热点选题 + 常青选题合计 10 个 +- 如果热点相关度 ≥ 5 的不足 7 个,用常青选题补足 +- 如果加上常青仍不足 10 个,告诉用户"今天热点跟你的领域匹配度不高",输出能找到的 + 建议用户自己给选题 ## 注意 diff --git a/references/topic-selection.md b/references/topic-selection.md index 3c4dbe2..e17c9cf 100644 --- a/references/topic-selection.md +++ b/references/topic-selection.md @@ -85,18 +85,36 @@ - 如果在**7-30 天**内出现 → 综合评分扣 1 分,标注"ℹ️ 月内有相关文章" - 超过 30 天 → 不扣分 -## 历史偏好参考 +## 历史效果闭环 -如果 history.yaml 中有带 stats 的文章(阅读量、分享量),分析表现最好的文章的共同特征: -- 哪种框架类型表现好?→ 推荐框架时优先 -- 哪种标题风格表现好?(数字型/反直觉/痛点)→ 拟标题时参考 -- 不要强制套用——只作为参考信号,选题本身的质量仍然最重要 +如果 history.yaml 中有带 stats 的文章(阅读量、分享量),做以下分析: + +1. **框架偏好**:统计每种 framework 的平均阅读量和分享率 → 推荐框架时,表现好的框架加 1-2 分 +2. **增强策略偏好**:统计每种 enhance_strategy 的平均表现 → 在 Step 3.2 选择增强策略时参考 +3. **标题风格**:分析高表现文章的标题特征(数字型/反直觉/痛点/提问)→ 拟标题时参考 +4. **content_style 验证**:如果用户设置的 content_style 与实际高表现文章的类型不符 → 在选题报告末尾提示 + +不要强制套用——只作为加权信号,选题本身的质量仍然最重要。stats 数据不足 5 篇时跳过此分析。 + +## 常青选题 + +除了热点选题,额外生成 **2-3 个常青选题**——不依赖时效性,长尾流量价值高。 + +常青选题来源: +- 从用户的 `topics` 列表出发,生成教程/方法论/经验总结/工具推荐类选题 +- 参考 SEO 数据中搜索量高但竞争度低的关键词 +- 如果有 history.yaml,避免与已写过的常青内容重复 + +常青选题的评分规则: +- 热度分固定为 5(不依赖热搜,但也不是 0) +- 相关度和切入价值正常评分 +- 标注"🌲 常青",与热点选题混排 ## 选题不足时的处理 -- 如果能找到 10 个相关度 ≥ 5 的选题,直接输出 -- 如果只能找到 5-9 个,用相关度 3-4 的选题补齐到 10 个,但标注"相关度偏低" -- 如果相关度 ≥ 5 的不足 5 个,告诉用户"今天热点跟你的领域匹配度不高",输出能找到的 + 建议用户自己给选题 +- 热点选题 + 常青选题合计 10 个 +- 如果热点相关度 ≥ 5 的不足 7 个,用常青选题补足 +- 如果加上常青仍不足 10 个,告诉用户"今天热点跟你的领域匹配度不高",输出能找到的 + 建议用户自己给选题 ## 注意