mcpField
V
Vox Pop

Vox Pop

本地服务
github.com/mushfique-dgist搜索与检索16 周前更新

关于 Vox Pop

Vox Pop 搜索公开讨论,呈现用户观点及其随时间的变化。其 MCP 服务结合平台搜索、帖子讨论查看和自动或调用方指定的路由;各平台可用状态不一。

主要功能

  1. 01搜索公开讨论平台
  2. 02将查询路由到相关社区
  3. 03比较历史与近期观点
  4. 04查看帖子内的观点
  5. 05检查平台可用状态
  6. 06无需 API 密钥的本地语义路由

适用场景

  1. 01比较社区对产品选择的看法
  2. 02追踪某个话题观点的变化
  3. 03查找针对具体问题的讨论回复
  4. 04确认某个平台当前是否可用

MCP 相关

提供搜索观点、比较不同时期看法、查看帖子观点和列出可用平台的工具。调用方 LLM 可传入路由提示词,也可由服务自动路由查询。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mushfique-dgist-vox-pop": {
"command": "uvx",
"args": [
"vox-pop"
]
}
}
}
启动命令uvx vox-pop

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypivox-pop0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍


VOX-POP
你的大模型知道教科书上写了什么。
这里告诉它人们真正怎么想。

9 个平台 • 语义路由 • 大模型智能层 • 无需 API 密钥即可使用

License: MIT Python 3.10+ MCP Compatible No Keys Required

安装 • 快速开始 • 平台 • 路由原理 • MCP 服务 • Claude Code 插件 • 路线图



为什么?

不使用 vox-pop

> How do I debloat my face?

Lymphatic drainage, reduce sodium,
cold compress, drink water,
sleep elevated...

(correct but soulless — same answer
 as every health blog since 2015)

使用 vox-pop

★ Searched: Reddit, 4chan /fit/, SE Fitness

Consensus (70%+ of threads):
 → Reduce sodium + 3L water/day
 → Sleep elevated on back

Controversial:
 → Gua sha: loved on Reddit,
   mocked on /fit/ as placebo

What actually worked:
 → "Cut dairy for 2 weeks — face
    visibly deflated" (847↑ r/SCA)
 → "Minox bloat is real, went away
    month 3" (/fit/, recurring)

⚠ Some suggestions are unvetted.

安装

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 现在会明确报告屏蔽情况,而不是返回空结果。

平台状态来源时间筛选讨论串
HNHackerNews正常Algolia Search API支持支持
RedditReddit被屏蔽Pullpush + Arctic Shift + Redlib 回退方案支持—
4chan4chan正常官方 JSON API(自 2012 年起)—支持
SEStack Exchange正常官方 API — 180 多个社区支持支持
TGTelegram仅限近期内容公开频道网页预览(t.me/s/)——
LobstersLobsters被屏蔽lobste.rs JSON API + 搜索抓取支持—
LemmyLemmy正常公共 REST API — 联邦实例支持支持
LWLessWrong正常GraphQL API支持支持
ForumsXenForo 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 许可证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。