Reddit 研究技能
通过最可靠的方法进行全面的 Reddit 研究。你确切知道哪些工具可用、哪些不可用,以及何时使用它们。
触发
/reddit-research analyze r/homelab engagement
/reddit-research what subs does u/example_user post in
/reddit-research find deleted posts in r/SUBNAME
/reddit-research discover subreddits about topic X
search reddit for discussions about X
check reddit metrics for these subreddits
方法排名 —— 一条路可用,其余全部失效
最近测试于 2026-09-19。Arctic Shift 是唯一可用的来源。其他所有途径均被屏蔽。 下面的阶梯并非优雅的回退链;其四个阶梯中有三个已不复存在,而关键的失败模式是悄悄用网页搜索替代失效的阶梯,并将结果呈现为 Reddit 数据。
| 途径 | 2026-09-19 状态 | 证据 |
|---|---|---|
| Arctic Shift API | 可用 —— 唯一的一个 | curl .../api/posts/search?subreddit=selfhosted → 200,返回完整帖子对象 |
通过 curl 访问 reddit.com .json | 已失效 —— 403 | 工具链级别的屏蔽;浏览器 User-Agent 也无济于事 |
| 在 reddit.com 上使用 WebFetch / WebSearch | 已失效 | WebSearch 返回 400 domains not accessible |
| 在 old.reddit.com 上使用 Playwright | 不可用 | 需要 Playwright MCP 服务器,而该服务器经常连接失败 |
Arctic Shift —— 主要且实际唯一的途径
- 基础 URL:
https://arctic-shift.photon-reddit.com/api - 使用普通
curl。无需认证,无需浏览器,无需工作量证明。 - 能够看到已删除、已移除和被垃圾邮件过滤的帖子 —— 这是其他任何途径都无法做到的一点。
用于所有用途:历史研究、指标分析、用户活动、规则查看、语气评估、已删除内容恢复。
四个会悄悄破坏运行的陷阱。均经过实际调用验证。
- 参数名不直观,错误猜测会导致硬错误。 全文搜索在
/posts/search上使用title=或selftext=,在/comments/search上使用body=。使用q会返回{"error":"Unknown query parameter: 'q'"}。sort只接受asc/desc。 {"error":"Timeout. Maybe slow down a bit"}在一秒内返回是速率限制,而不是慢查询。 四次未加节奏的调用就足以触发。使用更长的-m或更窄的时间窗口重试无效。调用之间间隔约 4 秒,遇到此错误后按指数退避(8→120 秒)。- 任何错误时响应均为
{"data":null,...}。 直接处理json.data.length的代码会在速率限制响应上抛出异常,而不是报告错误。在访问data之前检查其是否为 null,并在error设置时将其暴露出来。 - 大约 36 小时内的新帖子带有
hide_score:true且score:1—— 在计算任何指标之前过滤掉它们,否则数据是虚假的。没有按分数排序的功能:需要拉取大量数据并在客户端排序。
当 Reddit 确实无法回答时
如果问题需要实时排名、当前订阅数或登录后的视图,Arctic Shift 无法提供,也没有其他途径可用。在交付物中明确指出这一点。 不要让工作流返回零情感分析结果并被解读为“未找到任何内容”——在此之前,两次研究运行消耗了 206 个智能体,却未产生任何 Reddit 数据,直到这个问题被诊断出来。
以下替代方案已验证可用,并且是回答“从业者怎么说”这类问题的诚实回退方案,前提是你标明来源不是 Reddit:
- Hacker News(最佳替代方案):
https://hn.algolia.com/api/v1/search?query=<terms>&tags=story(或&tags=comment),然后使用https://hn.algolia.com/api/v1/items/<objectID>获取完整评论树。要求每条引用都带有其评论 ID,并重新获取以确认字符串存在。 - Lobsters:
https://lobste.rs/search?q=<terms>&what=stories&order=relevance - Stack Exchange:
https://api.stackexchange.com/2.3/search/advanced?order=desc&sort=votes&q=<terms>&site=stackoverflow
不可用的方法 —— 永远不要尝试
| 方法 | 原因 | 结果 |
|---|---|---|
使用 curl / WebFetch 访问 reddit.com(任何路径,包括 .json) | 工具链级别的屏蔽;浏览器 User-Agent 也无法绕过 | 403 |
使用 site:reddit.com 或 allowed_domains:["reddit.com"] 进行 WebSearch | 域名不被允许 | 400 domains not accessible |
通过 curl 访问 Reddit RSS(.rss) | 被专门屏蔽 | 403 |
无 token 访问 oauth.reddit.com | 重定向到 HTML | 301 → HTML |
| redlib / safereddit / libreddit 镜像 | Anubis 工作量证明中间页,需要 JavaScript | 挑战页面,0 个帖子 |
api.pullpush.io(Pushshift 的继任者) | 宕机 | 502 |
在 old.reddit.com 前使用 r.jina.ai 代理 | 代理返回 200,但包裹了 Reddit 自身的 403 | 403 内容体 |
不要浪费一次运行去重新发现这些。如果 Arctic Shift 无法回答,这里也没有任何方法可以。
API 参考
端点、响应字段以及两个来源的陷阱:references/api.md。在构建调用之前阅读它;不要凭记忆重构端点。
互动指标
四个指标(从 Arctic Shift 数据计算)
| 指标 | 公式 | 衡量内容 |
|---|---|---|
| 评论/点赞比 (cmtRatio) | avgCmts / avgScore | 讨论深度 |
| 点赞率 | upvote_ratio 字段 (0-1) | 社区认可度 |
| 每帖平均评论数 | sum(num_comments) / count | 活跃程度 |
| 每帖平均分数 | sum(score) / count | 覆盖/可见度 |
计算
const posts = data.data.filter(p => !p.hide_score && p.score > 1);
const avgScore = posts.reduce((s, p) => s + p.score, 0) / posts.length;
const avgCmts = posts.reduce((s, p) => s + p.num_comments, 0) / posts.length;
const cmtRatio = avgCmts / avgScore;
const avgUpvoteRatio = posts.reduce((s, p) => s + p.upvote_ratio, 0) / posts.length;
讨论深度等级
| 等级 | 阈值 | 含义 |
|---|---|---|
| S | >= 0.70 | 高度对话化 |
| A | >= 0.25 | 强讨论 |
| B | >= 0.10 或平均评论数 >= 10 | 中等,值得参与 |
| C | 0.05-0.10 | 主要为被动/覆盖型子版块 |
| D | < 0.05 | 低互动 |
| E | 平均评论数 < 1 | 死亡或严格限制 |
语气评估
从已获取的帖子数据中进行评估(无需额外调用):
link_flair_text值 - 主题日、分类、明确指示符- 标题模式 - 语言风格、规范
- 高分帖子的
selftext- 文化信号 - 分数分布 - 社区实际奖励的内容
在客户端对获取的帖子按分数排序。前 10-20 名揭示社区价值观。
标准工作流程
每种重复性问题的最小调用方案 —— 研究子版块、调查用户、查找帖子、发现子版块、批量检查、恢复已删除帖子、检测封禁:references/workflows.md。
决策流程图
需要 Reddit 数据?
|
+-- 历史帖子、评论、指标、用户活跃度、规则、已删除内容?
| --> Arctic Shift。这涵盖了该技能实际能回答的所有问题。
|
+-- 实时排名、当前订阅者数量或登录后的视图?
| --> 不可用。reddit.com 对 curl 和 WebFetch 返回 403;WebSearch 拒绝该域名;
| Playwright 需要一个通常宕机的 MCP 服务器。
| 在交付物中明确说明。不要悄悄用网页搜索代替。
|
+-- 封禁检查?
| --> 出于相同原因不可用(它需要 /user/NAME/about.json)。
|
+-- “从业者关于 X 怎么说”,其中 Reddit 只是手段?
| --> HN Algolia / Lobsters / Stack Exchange,并标注来源并非 Reddit。
|
+-- 发帖、评论、私信、版主邮件?
--> 无法通过研究工具实现。请使用 Reddit 自己的界面。
诚实缺口规则: 该技能无法回答的问题应报告为无法回答,并说明原因。一个返回零 Reddit 数据且未说明原因的运行,会被解读为“未找到任何内容”,这是一个不同且错误的说法。
范围边界
- 此技能为只读研究。不支持发帖、评论或写入操作。
- 如果任务需要发帖或帐户操作,请告知用户必须通过 Reddit 界面或经过身份验证的客户端完成。