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 中。
收集工作流
- 明确目标子版块和排名维度。常见选择:
--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:用于主题挖掘。
- 在当前项目的研究区域下,使用明确的
--out-dir参数运行scripts/reddit_mine_posts.py。 - 保留生成的原始文件:
posts.jsonl:每行一个标准化的帖子。comments.jsonl:当请求评论时,每行一个标准化的评论。posts.csv:电子表格友好的帖子表格。index.md:人类可读的热门帖子索引。summary.json:运行元数据和计数。
- 从生成的制品进行分析。除非用户要求更新鲜的数据,否则优先重新读取 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:字段含义、输出约定和后续分析模式。
当用户询问超越简单收集的评分、研究综合、可重用工作区布局或制品解释时,请阅读此参考文件。