# Reddit Intel

> Scrape Reddit posts by keyword, classify intent and sentiment by industry, translate to Chinese, and export a bilingual Excel intelligence report. Trigger when user says: scrape reddit, reddit analysis, reddit insights, monitor reddit, 爬reddit, reddit舆情, reddit帖子分析, 分析reddit, reddit监控, 帮我看看reddit上, reddit上有什么人说

- Skill: `carrielabs/reddit-intel` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add carrielabs/reddit-intel`
- Raw SKILL.md: https://api.skillmd.com/api/skills/carrielabs/reddit-intel/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: carrielabs (https://skillmd.com/u/carrielabs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/carrielabs/reddit-intel

---


# reddit-intel
## Reddit 舆情情报 Skill

---

## ⚠️ Reddit API 限制说明（永久生效，必须在 Phase 1 告知用户）

**这是 Reddit 的平台政策，不是工具的 bug。**

```
Reddit 官方 API 限制（2023年收紧后）：

① 单次请求：最多返回 100 条帖子
② 搜索总量：同一关键词+排序，分页后约 250-500 条上限
   （Reddit 故意截断，防止大规模数据抓取）
③ 评论获取：需要对每条帖子单独发请求（不含在搜索结果里）
④ 限流：请求过快会被封 IP，需每次间隔 2 秒

我们的策略（4种排序 × 多个版块 × 去重）：
  → 可将单关键词可获取量扩展至 600-1500 条
  → 指定日期范围 = 按周分段请求，不突破单次上限，但总量可叠加

注意：Reddit 有数百万条相关帖子，API 只给你很小的窗口。
      这是平台限制，无法绕过。PullPush.io（第三方历史数据）可选接入，
      但该服务不稳定，随时可能关闭，不作为默认方案。
```

---

## 永久约束（任何阶段均有效）

```
① 禁止捏造数据。字段无法判断时，用兜底规则（见 CLASSIFY_RULES.md），
   不允许输出"无法判断"作为最终结果。

② 批处理强制执行。Phase 3 每批严格处理 10 条，禁止一次性处理全部。

③ 竞品只提取明确出现的品牌名。帖子原文没有的，一律不写。

④ 置信度诚实标注。文本不足以可靠判断时，强制标"低"。

⑤ 行动点必须具体，"值得关注""建议持续观察"直接删除重写。

⑥ 热评精华基于真实评论内容，无内容时留空。

⑦ 概览 Tab（Sheet 2）的统计数字由 Python 计算，不允许 Claude 估算。
```

---

## 架构说明

```
文件加载时序：
Phase 1：READ ${CLAUDE_SKILL_DIR}/SUBREDDIT_MAP.md（行业版块推荐）
Phase 3：READ ${CLAUDE_SKILL_DIR}/CLASSIFY_RULES.md
         READ ${CLAUDE_SKILL_DIR}/TRANSLATE_RULES.md
Phase 4：READ ${CLAUDE_SKILL_DIR}/OUTPUT_SCHEMA.md
```

---

## Phase 1：参数确认

**加载：**
```
READ "${CLAUDE_SKILL_DIR}/SUBREDDIT_MAP.md"
```

向用户一次性问清以下参数：

```
① 关键词是什么？
   支持逻辑运算：
   - AND："Binance AND scam"（同时含两个词）
   - OR： "ChatGPT, Claude, Gemini"（逗号分隔 = OR）
   - NOT："cryptocurrency NOT Bitcoin"（排除词）

② 分析目的是什么？
   A. 品牌/产品研究
      （关键词是产品或公司名，如：Notion / Binance / ChatGPT）
      → 使用产品研究框架（P1-P5）
   B. 行业舆情监控
      （关键词是行业词或话题词，如：加密货币 / AI写作 / 电商退款）
      → 自动匹配行业框架，Claude 根据关键词推断
   C. 自定义分类
      → 追问：你想分哪几类？（3-6个为宜）

③ 时间范围？
   - 近 7 天（默认）
   - 近 30 天
   - 近 3 个月
   - 近一年
   - 自定义：[起始日期] 至 [结束日期]

④ 抓取数量？（默认 100，最多 500；超过 200 条耗时较长）

⑤ 评论模式？
   - 快速模式（默认）：只抓帖子正文，3-5 分钟出结果
   - 深度模式：抓帖子 + 每条热评（耗时 10-15 分钟，数据更丰富）

⑥ 限定版块？（可跳过，跳过则全站搜索；不熟悉版块可说行业，我来推荐）
```

**用户说不知道版块时：**
→ 根据关键词和 SUBREDDIT_MAP.md 推荐 3-5 个版块，让用户确认或调整

**完成后告知 API 限制：**
```
"本次配置预计可获取约 X 条帖子。
 说明：Reddit API 对单关键词每种排序方式约返回 250-500 条，
 多排序合并去重后实际可用量约 [估算范围]。
 这是 Reddit 平台限制，与工具无关。"
```

**参数记录（工作记忆）：**
```
QUERY: [处理后的搜索字符串]
LOGIC: [AND / OR / NOT]
LIMIT: [数字]
TIMEFRAME: [week / month / 3month / year / custom:起止日期]
MODE: [fast / deep]
SUBREDDITS: [版块列表，空则全站]
FRAMEWORK: [A=产品研究 / B=行业舆情+行业名 / C=自定义类别列表]
```

---

## Phase 2：数据抓取

执行脚本：

```bash
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch_reddit.py" \
  --query "QUERY" \
  --limit LIMIT \
  --time TIMEFRAME \
  --mode MODE \
  --subreddits "版块1,版块2" \
  --output posts_raw.json
```

**等待脚本完成后：**
1. 读取 `posts_raw.json`
2. 向用户报告：
   ```
   抓取完成：共 X 条帖子
   来源版块：N 个（列举前5个）
   时间跨度：[最早日期] 至 [最新日期]
   内容类型预判：图片帖/自动播报/营销推广 共约 X 条（可能影响分类质量）
   ```
3. 如果 posts_raw.json 为空 → 告知用户并提示调整关键词或去掉版块限制
4. 进入 Phase 3

---

## Phase 3：批量认知处理

**加载：**
```
READ "${CLAUDE_SKILL_DIR}/CLASSIFY_RULES.md"
READ "${CLAUDE_SKILL_DIR}/TRANSLATE_RULES.md"
```

**批处理规则：**
- 每次取 10 条，处理完追加到结果列表，向用户展示进度
- 全部完成后写入 `posts_processed.json`
- 如果中途中断，记录已处理到第几条，告知用户可恢复

**每条帖子必须先做内容质量预判（见 CLASSIFY_RULES.md 第一节），再做分类**

**处理后每条帖子的 JSON 格式：**

```json
{
  "id": "帖子ID",
  "content_type": "内容类型（图片帖/自动播报/营销推广/有效文字）",
  "title_original": "原始标题",
  "title_zh": "中文标题",
  "summary_zh": "中文摘要（≤500字）",
  "core_intent": "核心意图",
  "main_category": "主分类",
  "sub_tags": ["子标签1", "子标签2"],
  "sentiment": "情绪",
  "competitors_mentioned": ["品牌名"],
  "use_case": "使用场景",
  "top_comments_summary": "热评精华",
  "action_item": "行动点",
  "confidence": "置信度",
  "upvotes": 0,
  "num_comments": 0,
  "subreddit": "r/xxx",
  "created_date": "YYYY-MM-DD",
  "url": "https://reddit.com/..."
}
```

**⚠️ 营销推广预警：**
处理完全部帖子后，统计 content_type="营销推广" 的比例。
如果超过 40%，在进入 Phase 4 之前主动提示：
```
"⚠️ 本次结果中 X%（N条）为营销推广内容，有效数据偏少。
建议：在关键词后加 NOT "referral" 或指定更垂直的版块后重试。"
```

---

## Phase 4：生成 Excel

**加载：**
```
READ "${CLAUDE_SKILL_DIR}/OUTPUT_SCHEMA.md"
```

**执行脚本（Python 负责统计，Claude 负责写综合 Action Items）：**

第一步：让 Claude 基于 posts_processed.json 写出 3-5 条综合行动点，
        存入变量 SUMMARY_ACTIONS（供脚本写入 Sheet 2）

第二步：执行导出：
```bash
python3 "${CLAUDE_SKILL_DIR}/scripts/export_excel.py" \
  --input posts_processed.json \
  --keyword "关键词" \
  --actions "综合行动点文字（换行分隔）"
```

**完成后向用户报告：**
```
✅ 完成

文件：reddit_intel_[关键词]_[日期].xlsx
Sheet 1「舆情数据」：X 条帖子，17 列
Sheet 2「概览」：情绪分布 / Top分类 / 高赞帖子 / 综合建议

置信度分布：高 X 条 / 中 Y 条 / 低 Z 条
（低置信度条目建议人工复核，主要来自图片帖和内容过短的帖子）
```

---

## 错误处理

| 错误情况 | 处理方式 |
|---------|---------|
| fetch 返回 0 条 | 提示关键词过冷门或版块限制过严，建议扩展关键词 |
| API 429 限流 | 脚本自动等待 30 秒重试（最多 3 次），超出则保存已有数据 |
| Phase 3 中途中断 | 记录中断位置，告知用户可从中断点恢复，不删除已有结果 |
| export 失败 | 检查 openpyxl 是否安装（`pip install -r requirements.txt`）|
| 营销推广占比 >40% | 提示用户调整关键词，询问是否继续或重新配置 |

