关于 Vox Pop
Vox Pop 搜索公开讨论,呈现用户观点及其随时间的变化。其 MCP 服务结合平台搜索、帖子讨论查看和自动或调用方指定的路由;各平台可用状态不一。
主要功能
- 01搜索公开讨论平台
- 02将查询路由到相关社区
- 03比较历史与近期观点
- 04查看帖子内的观点
- 05检查平台可用状态
- 06无需 API 密钥的本地语义路由
适用场景
- 01比较社区对产品选择的看法
- 02追踪某个话题观点的变化
- 03查找针对具体问题的讨论回复
- 04确认某个平台当前是否可用
MCP 相关
提供搜索观点、比较不同时期看法、查看帖子观点和列出可用平台的工具。调用方 LLM 可传入路由提示词,也可由服务自动路由查询。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
你的大模型知道教科书上写了什么。
这里告诉它人们真正怎么想。
9 个平台 • 语义路由 • 大模型智能层 • 无需 API 密钥即可使用
为什么?
|
不使用 vox-pop
|
使用 vox-pop
|
安装
pip install vox-pop
就这样。全部 9 个平台均可在无需任何 API 密钥的情况下使用。可选的大模型密钥可解锁更智能的路由(参见路由原理)。
快速开始
命令行 — 用一条命令搜索全部 9 个平台:
vox-pop search "should I learn Rust or Go"
视角模式 — 查看观点如何随时间演变:
vox-pop search "rust vs go" --perspective --platforms hackernews,reddit
## hackernews — Then vs Now
Historical (1+ year ago):
> "Rust vs. Go"
— hackernews | +481 points | 580 replies | 2017-01-18
Recent (last 6 months):
> "Rust vs. Go: Memory Management"
— hackernews | +2 points | 2025-11-15
## reddit — Then vs Now
Historical:
> "Experienced developer but total beginner in Rust..."
— reddit | +124 points | 34 replies | 2025-03-14
Recent:
> "I rebuilt the same API in Java, Go, Kotlin, and Rust — here are the numbers"
— reddit | +174 points | 59 replies | 2026-03-19
这种变化讲述了一个故事:2017 年是一场火焰战。2026 年则是领域特定的务实主义。
标准搜索 — 汇总所有平台的平铺结果:
vox-pop search "should I learn Rust or Go" --limit 3
### hackernews (45 found)
> "I am a full stack TypeScript dev looking to broaden my skill set..."
— hackernews | +78 points | 42 replies | by throwaway_dev
Source: https://news.ycombinator.com/item?id=41907717
### 4chan /g/ (12 found)
> "Rust is a mass psychosis. Go is boring but you'll actually ship..."
— 4chan /g/ | 129 replies | by Anonymous
### reddit (8 found)
> "After 2 years with both: Rust for systems, Go for services..."
— reddit | +234 points | 87 replies | by senior_dev_42
Python — 集成到你自己的工具中:
import asyncio
from vox_pop.core import search_multiple, format_context, get_default_providers
async def main():
results = await search_multiple(
"best laptop for programming",
providers=get_default_providers(),
)
print(format_context(results))
asyncio.run(main())
## 平台
无需令牌、OAuth 或为速率限制而烦恼。状态基于实际测量,而非主观预期 —
vox-pop platforms --check 会针对实时端点重新运行此检查。
Reddit 和 Lobsters 目前被屏蔽。 两者都受到 Anubis 工作量证明拦截页的保护,显示的是挑战页面,而非内容。 这不是配置问题,修改请求头也无法绕过。Reddit 支持正在迁移至官方 OAuth API;Lobsters 现在会明确报告屏蔽情况,而不是返回空结果。
| 平台 | 状态 | 来源 | 时间筛选 | 讨论串 | |
|---|---|---|---|---|---|
| HackerNews | 正常 | Algolia Search API | 支持 | 支持 | |
| 被屏蔽 | Pullpush + Arctic Shift + Redlib 回退方案 | 支持 | — | ||
| 4chan | 正常 | 官方 JSON API(自 2012 年起) | — | 支持 | |
| Stack Exchange | 正常 | 官方 API — 180 多个社区 | 支持 | 支持 | |
| Telegram | 仅限近期内容 | 公开频道网页预览(t.me/s/) | — | — | |
| Lobsters | 被屏蔽 | lobste.rs JSON API + 搜索抓取 | 支持 | — | |
| Lemmy | 正常 | 公共 REST API — 联邦实例 | 支持 | 支持 | |
| LessWrong | 正常 | GraphQL API | 支持 | 支持 | |
| XenForo Forums | 不稳定 | HTML 抓取(Head-Fi、AnandTech 等) | — | — |
路由工作原理
查询可以是任何内容 — 一个词、一段文字,或一篇论文长度的 D&D 规则问题。vox-pop 通过四层路由系统理解所有这些内容:
User query: "i was looking into a solid laptop for linux
something from hp, what would a savvy person pick"
│
┌───────────────────────────────▼──────────────────────────────┐
│ Tier 1: MCP Hints │
│ Calling LLM provides routing_hints directly │
│ (skips all other tiers) │
├──────────────────────────────────────────────────────────────┤
│ Tier 2: LLM Query Rewrite ← like Perplexity │
│ Cheap LLM call rewrites query to search-optimized form │
│ "hp laptop linux compatibility" + routes to communities │
│ Supports: Anthropic, OpenAI, Ollama (local/free) │
├──────────────────────────────────────────────────────────────┤
│ Tier 3: Semantic Embeddings ← free, no API key │
│ FastEmbed (33MB model) understands meaning, not keywords │
│ Dynamic catalog: 77 4chan boards + 180 SE sites + static │
│ "contradictory spell behaviour" → SE:rpg, r/DnD, /tg/ │
├──────────────────────────────────────────────────────────────┤
│ Tier 4: Broad Defaults │
│ Search popular destinations everywhere │
└──────────────────────────────────────────────────────────────┘
│
▼
Routes to: r/buildapc, r/linux, r/hardware │ /g/
SE:hardwarerecs, SE:askubuntu │ lemmy:[email protected]
第 2 层的工作方式类似于 Perplexity/ChatGPT Search — 大模型会将对话式查询改写为简洁的搜索词,并选择合适的社区。设置以下任意环境变量即可启用:
ANTHROPIC_API_KEY=... # Uses Claude Haiku (~$0.0003/query)
OPENAI_API_KEY=... # Uses GPT-4o Mini
OLLAMA_HOST=... # Uses local Ollama (free)
第 3 层完全在本地运行,无需任何 API 密钥。一个 33MB 的嵌入模型可以理解“生物身上相互矛盾的法术效果”指的是桌面 RPG 规则 — 无需共享任何关键词。首次运行时,它会动态获取所有 4chan 板块和 Stack Exchange 站点,为所有内容生成嵌入,并缓存到磁盘。
| 冷启动 | 热启动 | 单例 | |
|---|---|---|---|
| 第 3 层耗时 | ~7s | ~1.3s | 即时 |
无需配置。 如果设置了大模型密钥,就会使用第 2 层;否则由第 3 层处理。如果未安装 fastembed,第 4 层(广泛搜索)仍可正常工作。
路由示例
| 查询 | 路由到 |
|---|---|
| "适合 Linux 的最佳 HP 笔记本电脑" | r/buildapc、r/linux、r/hardware、/g/、SE:hardwarerecs、SE:askubuntu |
| "生物身上相互矛盾的法术效果" | r/dndnext、r/DnD、/tg/、SE:rpg |
| "最适合编程的机械键盘" | r/MechanicalKeyboards、/g/、SE:hardwarerecs |
| "收益耕作有哪些风险" | r/CryptoCurrency、SE:tezos、telegram:ethereum |
| "如何制作正宗的韩式泡菜锅" | r/Cooking、/ck/ |
## MCP 服务
适用于 Claude Code、Cursor、Windsurf 和任何兼容 MCP 的客户端。
{
"mcpServers": {
"vox-pop": {
"command": "python",
"args": ["-m", "vox_pop.server"]
}
}
}
你的大模型可使用四种工具:
| 工具 | 功能 |
|---|---|
search_opinions | 跨所有平台搜索关于某个主题的观点 |
search_opinions_perspective | 过去与现在 — 并列呈现历史观点和近期观点 |
get_thread_opinions | 深入查看特定帖子的评论 |
list_available_platforms | 查看可用且运行正常的平台 |
routing_hints 参数允许调用方的大模型指定要在哪些平台搜索:
routing_hints: "reddit:MechanicalKeyboards,4chan:g,stackexchange:hardwarerecs"
如果没有提供提示,路由系统会自动处理。
Claude Code 插件
claude plugin add /path/to/vox-pop
当你的问题适合参考真实观点时,该技能会自动触发。只需自然提问:
> "What do people think about living in Berlin?" → activates
> "Should I use Next.js or Remix?" → activates
> "Best gym routine for beginners?" → activates
> "What's the capital of France?" → does not activate
手动搜索:/vox-search "your query"
架构
┌──────────────────────────────────────────────────────────┐
│ Layer 3: Claude Code / MCP Client │
│ Auto-triggering skill + /vox-search │
├──────────────────────────────────────────────────────────┤
│ Layer 2: MCP Server │
│ search_opinions · perspectives · threads · list │
├──────────────────────────────────────────────────────────┤
│ Layer 1: Python Library │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Smart Router (4-tier) │ │
│ │ MCP hints → LLM rewrite → FastEmbed → broad │ │
│ └────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ 9 Providers with fallback chains │ │
│ │ HN · Reddit · 4chan · SE · Telegram │ │
│ │ Lobsters · Lemmy · LessWrong · XenForo Forums │ │
│ └────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Dynamic Catalog │ │
│ │ 77 4chan boards + 180 SE sites fetched from APIs │ │
│ │ + 120 static destinations · cached to disk │ │
│ └────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
每个数据源都实现了自动回退 — 如果某个来源不可用,就会尝试下一个。仅 Reddit 就有三个回退来源(Pullpush → Arctic Shift → Redlib)。
路线图
| 版本 | 状态 | 内容 |
|---|---|---|
| v0.1 | 已发布 | 5 个数据源(HN、Reddit、4chan、SE、Telegram)、MCP 服务、Claude Code 插件 |
| v0.2 | 当前版本 | 9 个数据源、4 层智能路由、大模型查询改写、FastEmbed 语义路由、动态目录 |
| v0.3 | 进行中 | 通过官方 OAuth API 接入 Reddit — 替换被屏蔽的 Redlib 路径 |
| v0.4 | 尚未开始 | 区域平台 — DC Inside(韩国)、Naver、5ch(日本) |
贡献
New provider? → Subclass Provider in src/vox_pop/providers/base.py
New routing destination → Add to DESTINATIONS in router.py (one line)
Dynamic catalog source → Add a _fetch_*_destinations() function in router.py
Better LLM prompt? → Improve _LLM_SYSTEM in router.py
Multilingual support? → Swap FastEmbed model to bge-m3 in SemanticRouter
Dead instance? → Open an issue with the instance URL
Regional platform? → DC Inside, Naver, 5ch, VK, Bilibili — all welcome
安全
| 数据访问 | 仅限公开数据 — 官方 API 和公开网络端点。不抓取需要登录才能访问的内容。 |
| 凭据 | 不存储任何凭据。可选的大模型密钥会在运行时通过环境变量传入,绝不写入磁盘。 |
| 大模型路由 | 设置 ANTHROPIC_API_KEY 或 OPENAI_API_KEY 后,你的查询文本(最多 4000 个字符)会发送至相应的大模型 API,仅用于路由。未显式提供 API 密钥时,不会向外部发送任何查询。未设置密钥时,路由完全通过 FastEmbed 在本地运行。 |
| 速率限制 | 遵守各平台的速率限制。内置并发控制。 |
| User-Agent | 透明标识:所有请求均使用 vox-pop/0.2。 |
| 缓存 | API 响应(7 天)和嵌入向量缓存在本地 ~/.cache/vox-pop/。不会向第三方发送数据。嵌入向量以 JSON 格式存储,无需序列化依赖。 |
| PII | 仅为注明来源而包含公开帖子的作者姓名。响应返回后绝不保存。 |
民意即天意
人民的声音就是上帝的声音
MIT 许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。