Community写作与编辑github.com

zicojiao/reddit-skill

可安装的 AI 智能体技能,用于通过 PRAW 挖掘 Reddit 子版块帖子。

reddit-skill 是什么?

该技能是一个专为 AI 智能体(如 Claude Code、Cursor、Codex)设计的可安装功能模块,用于系统性地收集和处理 Reddit 数据。它基于 PRAW 库,通过 OAuth 认证从指定子版块或 r/all 获取结构化的研究数据。技能的核心价值在于优先获取原始数据制品(如 JSONL、CSV 文件),确保后续的重新排序、摘要、导入或翻译分析无需重复抓取 Reddit。它支持多种排序(热门、最新、置顶、搜索)和多时间范围选择。技能还包含语言自适应策略:用户报告、Markdown 索引和 CLI 消息会镜像用户的语言(如中文),而原始数据模式和字段则保持稳定。用户需要先在 Reddit 开发者页面注册 OAuth 应用,并通过内置的 setup_reddit_env.py 脚本配置环境变量。

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add zicojiao/reddit-skill

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Reddit 技能

概述

使用此技能,通过 OAuth 认证的 PRAW 从一个子版块或 r/all 收集可重现的 Reddit 研究数据。优先获取原始数据制品,然后再进行分析,这样同一运行结果可以在不重新抓取 Reddit 的情况下,稍后进行重新排名、摘要、导入或翻译。

语言策略

对于面向用户的输出,镜像用户的语言。如果用户使用中文书写,或者项目上下文是中文,则生成的中文报告、笔记、Markdown 索引、审核队列、摘要和建议都应使用中文。

保持原始数据模式稳定:JSON 键、CSV 表头、Reddit 标题、帖子正文、评论、URL 和 API 字段名可以保留其原始语言。在中文上下文中运行捆绑脚本时,请传递 --language zh,以便 index.md 和 CLI 面向用户的消息使用中文标签。

必需设置

如果缺少 Python 依赖项,请安装:

python3 -m pip install praw

首次使用时,在收集之前请先进行凭证设置。最简单的流程是:

python3 scripts/setup_reddit_env.py

该脚本会询问用户:

REDDIT_CLIENT_ID=your_reddit_client_id
REDDIT_CLIENT_SECRET=your_reddit_client_secret

并将其写入 ~/.config/reddit-skill/.env,scripts/reddit_mine_posts.py 会自动读取该文件。收集器也会读取项目本地的 .env 文件和进程环境变量。

如果用户已有 Reddit OAuth 应用,请告知他们使用现有的应用 ID 作为 REDDIT_CLIENT_ID,应用 secret 作为 REDDIT_CLIENT_SECRET。

如果用户还没有凭证,请说明 https://www.reddit.com/prefs/apps 是一个传统的 OAuth 应用页面,登录后可能仍然有效,但可能不是唯一的当前注册路径。当它可以工作时,创建一个 script 应用,使用任意应用名称,将重定向 URI 设置为 http://localhost:8080,然后将应用 ID 复制为 REDDIT_CLIENT_ID,secret 复制为 REDDIT_CLIENT_SECRET。如果传统页面不允许创建应用,请引导用户访问官方 Reddit 帮助开发者页面中的当前 Reddit 数据 API 注册/请求流程。

请勿将 Reddit 凭证存储在技能仓库内。将其存储在环境变量、项目 .env 或 ~/.config/reddit-skill/.env 中。

收集工作流

  1. 明确目标子版块和排名维度。常见选择:
    • --listing top --time-filter all:用于历史最佳帖子。
    • --listing top --time-filter month:用于近期热门帖子。
    • --listing hot:用于当前活跃帖子。
    • --listing new 或 --listing rising:用于早期发现。
    • --listing search --query "keyword" --search-sort comments --time-filter year:用于主题挖掘。
  2. 在当前项目的研究区域下,使用明确的 --out-dir 参数运行 scripts/reddit_mine_posts.py。
  3. 保留生成的原始文件:
    • posts.jsonl:每行一个标准化的帖子。
    • comments.jsonl:当请求评论时,每行一个标准化的评论。
    • posts.csv:电子表格友好的帖子表格。
    • index.md:人类可读的热门帖子索引。
    • summary.json:运行元数据和计数。
  4. 从生成的制品进行分析。除非用户要求更新鲜的数据,否则优先重新读取 JSONL/CSV 文件,而不是重新查询 Reddit。

快速命令

从包含此 SKILL.md 的目录运行这些命令,或者将 scripts/reddit_mine_posts.py 替换为已安装技能脚本的绝对路径。

收集一个子版块中所有时间的热门帖子:

python3 scripts/reddit_mine_posts.py \
  --subreddit LocalLLaMA \
  --listing top \
  --time-filter all \
  --language zh \
  --limit 100 \
  --include-comments \
  --max-comments 8 \
  --out-dir research/reddit/localllama-top-all

挖掘 r/all 中最热门的帖子:

python3 scripts/reddit_mine_posts.py \
  --subreddit all \
  --listing hot \
  --language zh \
  --limit 100 \
  --out-dir research/reddit/all-hot

按主题搜索子版块并按评论数量排名:

python3 scripts/reddit_mine_posts.py \
  --subreddit SaaS \
  --listing search \
  --query "voice agent" \
  --search-sort comments \
  --time-filter year \
  --language zh \
  --limit 75 \
  --include-comments \
  --out-dir research/reddit/saas-voice-agent-comments

分析指导

  • 同时根据 score 和 num_comments 对帖子进行排名;对于痛点挖掘,高评论数可能比高分更有用。
  • 对于内容策略,首先检查标题模式,然后检查评论模式。
  • 除非用户明确要求,否则将 Reddit 发帖或回复保留为人工审核队列。
  • 当公共匿名 .json 端点返回 403 或稀疏数据时,视为不可靠。优先使用带有 OAuth 凭证的 PRAW。
  • 对于开发者关系或产品线索挖掘,根据标题、selftext 和热门评论共同评估意图。

资源

  • scripts/setup_reddit_env.py:REDDIT_CLIENT_ID 和 REDDIT_CLIENT_SECRET 的交互式设置辅助程序。
  • scripts/reddit_mine_posts.py:用于子版块列表、搜索、评论和研究制品的 PRAW 收集器。
  • references/reddit-research-patterns.md:字段含义、输出约定和后续分析模式。

当用户询问超越简单收集的评分、研究综合、可重用工作区布局或制品解释时,请阅读此参考文件。

相关技能