Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,4 @@ CLAUDE.md
# IDE
.vscode/
.idea/
.tmp/
9 changes: 8 additions & 1 deletion SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,13 @@ cd {skill_dir} && git fetch origin main --quiet 2>/dev/null

```
检查: {skill_dir}/style.yaml
```
并在 {skill_dir}/writing-config.yaml 中读取 `monetization_mode`(如果不存在默认视为 organic)

- 存在 → 提取 `name`、`topics`、`tone`、`voice`、`blacklist`、`theme`、`cover_style`、`author`、`content_style`
- 不存在 → `读取: {skill_dir}/references/onboard.md`,完成后回到 Step 1

如果用户直接给了选题 → 跳到 Step 3(仍需框架选择和素材采集,不可跳过)。
```

---

Expand Down Expand Up @@ -165,6 +166,8 @@ python3 {skill_dir}/scripts/seo_keywords.py --json {关键词}

```
读取: {skill_dir}/references/topic-selection.md

注意:根据 Step 1.3 的 `monetization_mode` (cpc/organic) 解析对应的 IF/ELSE 逻辑。
```

生成 **10 个选题**,其中:
Expand All @@ -184,6 +187,8 @@ python3 {skill_dir}/scripts/seo_keywords.py --json {关键词}

```
读取: {skill_dir}/references/frameworks.md

注意:根据 Step 1.3 的 `monetization_mode` (cpc/organic) 解析对应的条件性排版逻辑。
```

7 套框架(痛点/故事/清单/对比/热点解读/纯观点/复盘),自动选推荐指数最高的。
Expand Down Expand Up @@ -220,6 +225,8 @@ python3 {skill_dir}/scripts/seo_keywords.py --json {关键词}
读取: {skill_dir}/playbook.md(如果存在,按 confidence 分级执行)
读取: {skill_dir}/history.yaml(最近 3 篇的 dimensions + closing_type 字段)
读取: {skill_dir}/references/exemplars/index.yaml(如果存在)

注意:在应用 writing-guide.md 时,必须遵循 Step 1.3 的 `monetization_mode` 里的特殊分支。
```

**4.1 维度随机化**:
Expand Down
9 changes: 9 additions & 0 deletions references/frameworks.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@

根据选题和客户风格,生成 5 套差异化写作框架供用户选择。每套框架是一个完整的文章骨架——不是写文章本身,而是告诉写作步骤"每一段写什么、怎么写"。

<if monetization_mode="cpc">
## CPC 变现场景要求(所有框架通用)

所有生成的框架必须融入以下“高完读率与高点击率”结构,以优化流量主广告的点击表现:
1. **开头“前置钩子”**:在开头最后一句,必须预告“文末有一份核心资料/避坑清单/实操工具分享”,以此引导读者滑到底部(提高底部广告曝光几率)。
2. **H2过渡处的“认知停顿”**:在核心大段落(特别是从分析问题转向解决问题的过渡处),刻意设计引人深思的疑问句或悬念。这种留白的“空隙”是平台高频插入文中广告的位置,读者在思考停顿时极易点击相关广告。同时长段落不允许超过 100 字。
3. **结尾的“需求激发”**:结尾不要做四平八稳的总结。要制造“未完成感”,让读者觉得自己还需要一个工具/社群/服务来落地执行。这种心态下,对底部商业广告的点击率最高。
</if>

## 5 套框架类型

### 框架 A: 痛点型
Expand Down
48 changes: 40 additions & 8 deletions references/topic-selection.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,16 @@

## 评估维度

对每个热点,按三个维度打分(1-10):
对每个热点,按四个维度打分(1-10):

<if monetization_mode="cpc">
### 热度分(权重 20%)
看这个话题有多火(权重下调,不再盲目追求无商业意图的纯流量):
</if>
<if monetization_mode="organic">
### 热度分(权重 30%)

看这个话题有多火:
</if>
- 热搜前 10 → 8-10 分
- 热搜 10-30 → 5-7 分
- 30 名之后 → 1-4 分
Expand All @@ -32,14 +37,28 @@
- 完全无关 → 0 分
- **命中 blacklist 的词汇或话题 → 直接判 0,整个选题淘汰**

<if monetization_mode="cpc">
### 切入价值分(权重 20%)
</if>
<if monetization_mode="organic">
### 切入价值分(权重 30%)
</if>

看这个话题写出来能不能好看:
- 有明确的反直觉点或信息差 → 8-10 分
- 有明确的反直觉点,且能找到“带需求”的切入点 → 8-10 分
- 有争议、有正反两面可以讨论 → 6-7 分
- 纯资讯类、搬运即可 → 3-4 分
- 太复杂不适合 2000 字展开,或太浅没东西可写 → 1-2 分

<if monetization_mode="cpc">
### 商业意图分(权重 20%)

看这个话题带来的读者是否有点击文中/底部广告的高转化潜力(CPC 价值):
- 涉及搞钱、工具推荐、效率提升、职场进阶、商业模式分析 → 8-10 分
- 带有具体痛点、需要寻找解决方案的场景 → 6-7 分
- 纯情绪共鸣、吃瓜八卦,无法引申到痛点 → 1-3 分
</if>

## content_style 加成

根据客户的 content_style,对切入价值分做加成:
Expand All @@ -57,7 +76,12 @@
## 综合评分

```
<if monetization_mode="cpc">
总分 = 热度 × 0.2 + 相关度 × 0.4 + 切入价值(含加成) × 0.2 + 商业意图 × 0.2
</if>
<if monetization_mode="organic">
总分 = 热度 × 0.3 + 相关度 × 0.4 + 切入价值(含加成) × 0.3
</if>
```

## 输出格式
Expand All @@ -69,10 +93,13 @@

- 对应标题(20-28字):"{为这个选题拟的公众号标题}"
- 切入角度:{1-2 句话说明怎么写、从什么角度切}
- 热度:X/10 | 相关度X/10 | 切入价值X/10
- 评估:热度 X/10 | 相关度 X/10 | 切入价值 X/10 | 商业意图 X/10
- 点击率潜力:{高/中/低} — {原因,如"标题含数字+反直觉,点击率高"}
- SEO 友好度:{seo_score}/10 — {引用 seo_keywords.py 的数据,如"百度 8 + 360 10,相关词丰富"}
- 推荐框架:{痛点型/故事型/清单型/对比型/热点解读型}
- 推荐框架:{痛点型/故事型/清单型/对比型/热点解读型/复盘型}
<if monetization_mode="cpc">
- 高 CPC 广告推荐:{从微信广告库39个类目中挑选 3-5 个最优项,如"软件工具"、"金融"} — {说明原因,比如为何读者此时会有此类需求}
</if>
- 推荐理由:{为什么这个值得写}
- 历史标记:{如果 history.yaml 中近 7 天有相同关键词,标注"⚠️ 近期已覆盖类似话题"}
```
Expand All @@ -98,16 +125,21 @@

## 常青选题

除了热点选题,额外生成 **2-3 个常青选题**——不依赖时效性,长尾流量价值高。
<if monetization_mode="cpc">
除了热点选题,额外生成 **4-5 个常青选题**(占比提升,专注沉淀高 CPC 价值的长尾流量)——不依赖时效性,商业转化意图强。
</if>
<if monetization_mode="organic">
除了热点选题,额外生成 **2-3 个常青选题**——不依赖时效性。
</if>

常青选题来源:
- 从用户的 `topics` 列表出发,生成教程/方法论/经验总结/工具推荐类选题
- 从用户的 `topics` 列表出发,生成教程/方法论/经验总结/工具推荐/避坑指南类选题
- 参考 SEO 数据中搜索量高但竞争度低的关键词
- 如果有 history.yaml,避免与已写过的常青内容重复

常青选题的评分规则:
- 热度分固定为 5(不依赖热搜,但也不是 0)
- 相关度和切入价值正常评分
- 相关度、切入价值、商业意图正常评分(常青选题的商业意图分通常较高)
- 标注"🌲 常青",与热点选题混排

## 选题不足时的处理
Expand Down
11 changes: 8 additions & 3 deletions references/writing-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,13 @@ AI 段落长度趋于均匀。人类段落忽长忽短。

**要求**:
- 禁止连续 2 个长度接近(±20 字)的段落
- 穿插 1 句话的短段落(强调、转折、吐槽)
- 长段落不超过 150 字
- 偶尔 2-3 个短句连续排列,制造密集节奏
- **多用单句成段**:用 1 句话的短段落(强调、反问、悬念、吐槽)作为段落间的视觉缓冲。
- **允许长段落**:普通长段落建议控制在 150 字以内,用来输出复杂逻辑。
- 偶尔 2-3 个短句连续排列,制造节奏感。

<if monetization_mode="cpc">
*注:在 CPC 模式下,此规则会被 frameworks.md 特化压缩(如限长 100 字内并强化留白),请叠加遵守。*
</if>

**writing-config 参数**:`paragraph_rhythm`(structured/wave/chaotic)

Expand All @@ -107,6 +111,7 @@ AI 段落长度趋于均匀。人类段落忽长忽短。

| 模式 | 特征 | 适合场景 |
|------|------|---------|
| 需求激发 | 制造未完成感("方法讲了,还需要个好工具/指南") | monetization_mode=cpc 时优先使用、干货类、变现类 |
| 自然断流 | 像聊天说到一半停了("我先睡了"/"就这样吧") | 深夜风格、随笔 |
| 未答之问 | 以问题结尾,不给答案 | 争议话题、引发思考 |
| 场景回扣 | 回到开头的意象/场景 | 叙事类、故事驱动 |
Expand Down
9 changes: 9 additions & 0 deletions writing-config.example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@
#
# 参数分三层,对应 writing-guide.md 的反检测结构。

# ============================================================
# 零、全局流量主变现策略
# ============================================================

# 变现模式 (organic / cpc)
# organic: 追求自然流量与留存,重完读率和分享率
# cpc: 高商业变现模式,针对性进行排版和结构优化以提升文中和底部广告 CTR
monetization_mode: "organic"

# ============================================================
# 一、统计反检测参数
# ============================================================
Expand Down