☰
调查研究-181 last30days-skill 项目解析:给 AI Agent 装上“最近 30 天“的社区情报引擎
2026/10/15 10:10:05 网站建设 项目流程

1. last30days-skill 是什么:给 AI Agent 补上“最近 30 天”的社区感知

大模型的知识有训练截止时间,这个大家都知道。但真正让人头疼的不是“它不知道 2026 年发生了什么”,而是它不知道“最近 30 天真实用户在讨论什么”。你问它某个 AI 工具好不好用,它能给你背出官网的功能列表,却不知道 Reddit 上有人吐槽安装脚本把 shell 配置写坏了,也不知道 Hacker News 上高赞评论在争论它的许可证问题。

last30days-skill 就是冲着这个缺口来的。它是一个面向 AI Agent 的“近 30 天社区研究技能”,由 mvanhorn 维护,当前版本 v3.0.2。它的核心逻辑是:当你在 Claude Code、Codex、Cursor 这类宿主 Agent 里触发它时,它不会直接让模型凭记忆回答,而是先调度一组 Python 脚本去检索 Reddit、X、YouTube、Hacker News、Polymarket、GitHub 等平台最近 30 天的公开讨论,把热度、评论、视频 transcript、PR 活动、市场赔率等信号综合成一份带来源的研究简报,再交给宿主模型做归纳和再加工。

它适合谁?三类人最直接受益。第一类是技术内容创作者,写文章前需要验证选题是不是社区真正在讨论的,而不是自己拍脑袋想的。第二类是开发者,做工具选型时想看到真实用户的踩坑反馈,而不是只看 GitHub star 数。第三类是产品经理或独立开发者,做需求调研时想快速抓到用户的原话和情绪。

一句话概括:last30days-skill 让 AI Agent 从“我知道什么”切换到“最近真实的人在说什么”。它不是搜索引擎的替代品,而是一个前置调研层,把人工打开几十个标签页的成本压下来。

我试过用它做 Claude Code Skills 生态的选题调研,输入/last30days Claude Code skills,它返回的简报里把 Reddit 的安装体验吐槽、HN 的架构讨论、GitHub 的 release 活动分成了几个 cluster,比我自己翻半天效率高不少。当然,结果质量取决于数据源配置和宿主模型是否认真读了输出,这个后面会细说。

2. TaoToken 前置:把 Agent 的模型通道统一到一套 Key

last30days-skill 本身不绑定特定模型供应商,它依赖宿主 Agent 的模型能力来做意图解析和最终综合。问题在于,Claude Code、Codex、Cursor 各自有自己的模型接入方式,如果你同时用多个宿主,Key 管理会变得很碎。这时候把 endpoint 统一到 TaoToken 的 API 通道,能省掉不少切换成本。

TaoToken 提供的是统一的 Key/API 通道,官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。它的作用是让你用一套 Key 去调用不同模型,宿主 Agent 只需要改 Base URL 和 Model ID,不用每个平台单独配一套凭证。

具体到 last30days-skill 的场景,你需要关注三个东西:Base URL、API Key、Model ID。这三件套在 Claude Code 的 settings、Codex 的 auth.json、Cline 的 MCP 配置里都会出现。下面我按宿主分别给配置片段。

先说 Claude Code。它的配置文件通常在~/.claude/settings.json或项目级.claude/settings.json。如果你要把模型通道指向 TaoToken,配置大概长这样:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }

注意这里的ANTHROPIC_BASE_URL不要带末尾斜杠,ANTHROPIC_API_KEY填你在 TaoToken 控制台生成的 Key。Model ID 按你实际要用的模型填,不同模型 ID 不一样,去模型对话页面确认。

再说 Codex。Codex 的凭证文件一般在~/.codex/auth.json,格式是:

{ "OPENAI_API_KEY": "sk-你的TaoToken密钥", "OPENAI_BASE_URL": "https://taotoken.net/api" }

如果你用的是 Cline 并且走 MCP 方式接入,配置会写在 Cline 的 MCP settings 里,通常是这样的结构:

{ "mcpServers": { "taotoken": { "command": "npx", "args": ["-y", "@taotoken/mcp-server"], "env": { "TAOTOKEN_API_KEY": "sk-你的TaoToken密钥", "TAOTOKEN_BASE_URL": "https://taotoken.net/api" } } } }

这三件套的核心逻辑是一样的:Base URL 指向 https://taotoken.net/api ,Key 用 TaoToken 生成的,Model ID 按需选。配好之后,last30days-skill 在调用宿主模型做综合时,走的就是这条统一通道。

这里有个坑要注意:last30days-skill 自己的数据源配置(Reddit、X、YouTube 的 API Key 或 cookie)和模型通道是两回事。前者放在~/.config/last30days/.env或项目级.claude/last30days.env,后者放在宿主 Agent 的配置里。别把两者混在一起,否则排查问题时会很乱。

3. 可复制配置:last30days-skill 安装与数据源接入

这一节给你可以直接复制的配置片段。先装 Skill,再配数据源,最后确认模型通道。

Claude Code 用户走 plugin marketplace 方式:

/plugin marketplace add mvanhorn/last30days-skill /plugin install last30days

Codex、Cursor、Copilot、Gemini CLI 等支持 Agent Skills 的宿主,用 npx 方式全局安装:

npx skills add mvanhorn/last30days-skill -g

装完之后,Skill 的核心文件在skills/last30days/SKILL.md,Python 引擎在scripts/last30days.py。SKILL.md 负责流程规范,Python 脚本负责多平台检索和数据处理。

接下来配数据源。全局配置放~/.config/last30days/.env,项目级配置放.claude/last30days.env,项目级优先级更高。一个典型的数据源配置片段:

# Reddit 数据源 REDDIT_CLIENT_ID=your_reddit_client_id REDDIT_CLIENT_SECRET=your_reddit_client_secret # X/Twitter 数据源 X_BEARER_TOKEN=your_x_bearer_token # YouTube 数据源 YOUTUBE_API_KEY=your_youtube_api_key # GitHub 数据源 GITHUB_TOKEN=ghp_your_github_token # 输出目录 LAST30DAYS_MEMORY_DIR=/Users/yourname/Documents/Last30Days

如果你不想配这么多数据源,也可以先用--diagnose参数跑一次诊断,看看哪些源可用、哪些源缺凭证:

python scripts/last30days.py --diagnose

输出会告诉你每个平台的连通状态。缺凭证的源会标出来,你可以按需补。

模型通道这边,如果你用 Claude Code,确认~/.claude/settings.json里的ANTHROPIC_BASE_URL指向 https://taotoken.net/api ,Key 填 TaoToken 的。Codex 用户确认~/.codex/auth.json里的OPENAI_BASE_URL同样指向这个地址。Cline 用户确认 MCP 配置里的TAOTOKEN_BASE_URL一致。

这里给一个完整的 Claude Code settings 片段,把模型通道和 Skill 环境变量放在一起:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514", "LAST30DAYS_MEMORY_DIR": "/Users/yourname/Documents/Last30Days" } }

注意LAST30DAYS_MEMORY_DIR是给 Skill 用的,ANTHROPIC_*是给宿主模型用的,两者互不干扰。配好之后,Skill 检索到的原始数据会存到指定目录,模型综合时走 TaoToken 通道。

如果你用 Codex,auth.json 里只放模型通道相关字段,数据源配置还是走.env文件。别把 Reddit 的 client secret 写进 auth.json,那样既不安全也不符合 Codex 的配置约定。

4. 验证请求:跑一次真实检索并比对结果

配置写完,得验证它真的能跑通。分两步:先验证模型通道连通,再验证 Skill 检索链路。

模型通道验证,用 curl 直接打 TaoToken 的 API:

curl -X POST https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-你的TaoToken密钥" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 100, "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'

如果返回里有content字段且内容是 OK,说明模型通道通了。如果返回 401,说明 Key 有问题;如果返回local proxy failed,说明 Base URL 写错了或者网络不通。

模型通道通了之后,在 Claude Code 里跑一次 Skill:

/last30days Claude Code skills

正常流程是:Agent 先解析主题,判断查询类型,生成子查询,决定搜索哪些平台,然后调用scripts/last30days.py执行检索。检索完成后,Agent 读取完整输出,补充 WebSearch,最后综合成简报。

你可以观察几个点。第一,输出目录~/Documents/Last30Days/下有没有生成新的 markdown 或 JSON 文件。第二,简报里有没有带来源链接,比如 Reddit 帖子 URL、HN 讨论 URL、GitHub PR 链接。第三,不同来源的信号有没有被合并成 cluster,而不是散成一堆重复链接。

如果简报里只出现单一来源,比如全是 Reddit 没有 HN 和 GitHub,可能是主题太窄导致智能扩展没触发,也可能是某些数据源凭证没配好。这时候用--diagnose再跑一次,看哪些源是空的。

结果比对方面,你可以手动打开 Reddit 搜同一个关键词,按“最近 30 天”排序,看看 Skill 返回的帖子是不是真的在时间窗内。如果它返回了半年前的内容,说明--days参数没生效或者数据源的时间过滤有问题。默认是 30 天,你也可以显式传:

python scripts/last30days.py --days 30 --emit markdown --save-dir ./research

--emit支持 raw markdown、HTML、JSON、SQLite store 等格式。如果你想把每次研究变成可追溯资产,用 SQLite store 比较合适,后续可以查询历史简报。

验证通过的标准很简单:模型通道返回正常,Skill 输出有来源、有时间窗、有多源 cluster。三者都满足,说明配置链路是通的。

5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth

这一节对照真实报错来排查。我把常见症状、根因、定位方法、修复动作列成表,你对着查。

症状根因定位修复
401 UnauthorizedAPI Key 无效或过期检查ANTHROPIC_API_KEY或OPENAI_API_KEY是否填对去 TaoToken 控制台重新生成 Key,确认没有多余空格
local proxy failedBase URL 写错或网络不通检查ANTHROPIC_BASE_URL是否为 https://taotoken.net/api去掉末尾斜杠,确认没有拼写错误
reading choices 报错模型返回格式不符合预期检查 Model ID 是否拼对去模型对话页面确认可用 Model ID
OAuth 相关报错宿主 Agent 走了 OAuth 流程而非 API Key检查 Codex auth.json 是否同时有 OAuth 和 API Key 字段删掉 OAuth 字段,只保留 API Key 和 Base URL
/last30days返回 Unknown commandClaude Code v2.1.105+ 升级后 plugin.json 未声明 skills 目录运行/doctor看报错升级到 v3.0.2+,确认.claude-plugin/plugin.json包含"skills": ["skills"]
出现重复的 last30days-3@last30days-skill用户作用域与项目作用域安装冲突/plugin list看是否有两条同名记录删除 user-scope 重复安装,只保留 project-scope
检索结果只显示单一来源主题太窄,智能扩展未触发检查 SKILL.md 流程是否先做主题扩展在查询里补充人名、账号、repo、channel 等扩展词
平台数据为空或频繁失败X/YouTube/TikTok 访问规则变化,cookie 或 API Key 失效检查~/.config/last30days/.env更新 token,或先用--diagnose确认哪些源可用
总结与来源内容对不上宿主模型未认真读取 JSON 输出检查输出文件是否存在但模型跳读强化 SKILL.md 中“必须读取完整输出”的自检规则
热门结论与事实不符社区热度不等于事实质量检查是否单源高赞贴至少要求 2 个独立来源交叉验证
安装后脚本拒绝运行第三方 Skill 安全审计未通过检查脚本是否请求网络访问或读取浏览器会话安装前审计scripts/last30days.py的网络和文件访问行为
输出保存到默认目录找不到未配置--save-dir或环境变量检查~/Documents/Last30Days路径是否存在设置LAST30DAYS_MEMORY_DIR或传--save-dir

重点说几个高频的。401 和 local proxy failed 基本都出在模型通道配置上,前者是 Key 问题,后者是 URL 问题。这两个错误在 Claude Code、Codex、Cline 里都会出现,排查方法一样:先确认 Base URL 是 https://taotoken.net/api ,再确认 Key 没有多余空格。

OAuth 报错比较隐蔽。Codex 的 auth.json 如果同时存在 OAuth 字段和 API Key 字段,它可能优先走 OAuth 流程,导致你的 TaoToken Key 没被用上。解决办法是删掉 OAuth 相关字段,只保留OPENAI_API_KEY和OPENAI_BASE_URL。

reading choices 报错通常是 Model ID 拼错了。不同模型的 ID 不一样,去模型对话页面复制准确的 ID,别手打。

Unknown command 和重复安装这两个是 Claude Code 特有的。v2.1.105+ 之后 plugin.json 的 skills 声明方式变了,旧版本装的 Skill 可能不认。升级到 v3.0.2+ 能解决大部分问题。重复安装则是作用域冲突,/plugin list一看就知道,删掉 user-scope 那条就行。

6. 语义一致 CTA:按你的场景选入口

排障和接入相关的问题,去 API Keys 页面生成 Key,再去接入文档看完整的 Base URL 和 Model ID 对照表。这两个入口能解决 401、local proxy failed、OAuth 这类配置问题。

验证模型是否可用,去模型对话页面直接试。输入一句话看返回是否正常,比在宿主 Agent 里反复调试快得多。

长期编码和 Agent 工作流,看 Coding Plan。last30days-skill 这类多步骤研究任务会频繁调用模型,用 Coding Plan 比按次计费更划算,也适合把 Skill 检索纳入日常开发流程。

具体入口:

  • API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=api_keys
  • 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=doc
  • 模型对话:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=chat
  • Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=coding_plan

最后说一个实用技巧。last30days-skill 的输出默认存到~/Documents/Last30Days/,你可以把这个目录纳入 git 管理,每次研究生成一份 markdown,时间久了就是一个可追溯的社区情报库。配合 SQLite store 输出,还能写脚本做关键词趋势分析。这比每次重新搜一遍高效得多,也是这个 Skill 从“单次调用”走向“可复用工作流”的关键一步。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询