开源项目 GitHub Trending 2026-07-06T12:02 正文 ok 3809 words

🔥 mvanhorn/last30days-skill:用点赞、金钱与真实参与度评分的 AI 智能体搜索引擎

英文标题:🔥 mvanhorn/last30days-skill

last30days-skill 是一个 AI 智能体技能,可并行搜索 Reddit、X、YouTube、TikTok、Hacker News、Polymarket 等十余个平台,并根据点赞、转发、真金白银押注等社会信号评分,由 AI 代理综合生成简报。v3 版本新增智能预搜索、跨源聚类合并、幽默评分等能力,能在几分钟内完成过去需十余分钟的搜索。该技能无需编辑器干预,以真实用户的注意力投票代替 SEO,为开发者、商务人员在会议准备、招聘信号分析、工具对比、事件追踪等场景提供高时效性情报。
打开原文相关 3 · 机会 3
media1.8 KB media1.3 KB media5.1 KB media59.8 KB media59.7 KB media120.2 KB

中文

今日 GitHub Trending 第一名仓库
覆盖率 ≥60%
mvanhorn/last30days-skill | Trendshift

一个由点赞、喜欢和真金白银评分,而非编辑评分的 AI 智能体驱动的搜索引擎。

此 README 跟踪当前 v3 流水线。运行时技能规范位于 skills/last30days/SKILL.md,这是最新命令和设置行为的唯一权威来源。

Claude Code (推荐——通过市场自动更新):

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

Codex、Cursor、Copilot、Gemini CLI 或任何 50+ Agent Skills 宿主:

npx skills add mvanhorn/last30days-skill -g

(-g 为你的用户全局安装,跨所有项目可用。去掉它则限定当前项目。)

更多安装选项(claude.ai web、OpenClaw、手动)见下方安装章节。

零配置。Reddit、HN、Polymarket 和 GitHub 开箱即用。只需运行一次,设置向导将在 30 秒内解锁 X、YouTube、TikTok 等。


Reddit 的赞。X 的喜欢。YouTube 的字幕。TikTok 的互动。Polymarket 由真金白银和内幕信息支撑的赔率。这意味着每天有数百万人用注意力和钱包在投票。/last30days 并行搜索所有这些,按真人实际参与度评分,并由 AI 智能体裁判综合成一篇简报。

Google 聚合编辑。 /last30days 搜索真实的人。

你在任何其他地方都搜不到这种结果,因为没有单一 AI 能访问所有数据。Google 搜索不触及 Reddit 评论或 X 帖子。ChatGPT 与 Reddit 有协议但无法搜索 X 或 TikTok。Gemini 有 YouTube 但没有 Reddit。Claude 原生一个都没有。每个平台都是围城,有自己的 API、令牌和认证。但你可以带来自己的密钥和浏览器会话,于是 AI 智能体突然可以一次性搜索全部,交叉评分,并告诉你真正重要的是什么。

这就是解锁之处。不是更好的搜索引擎,而是由一个智能体架起的十几个断连平台。

/last30days Peter Steinberger

你明天有个会议。你去 Google 他们。你得到的是 2023 年的 LinkedIn。 /last30days 告诉你他们这个月实际在做什么:加入了 OpenAI 参与 Codex、与 Anthropic 禁止第三方智能体的规定抗争、以 85% 合并率提交了 23 个 PR、在构建跨设备智能体控制项目"LobsterOS"、r/ClaudeCode 上关于他是英雄还是"令人讨厌"的帖子获得了 569 赞。这些信息散布在 X 帖子、Reddit 帖子、YouTube 字幕和 GitHub 提交中,没有一条在谷歌里。

我最初是为了跟上 AI 领域而构建它的。每天一切都在变,Reddit 和 X 上的极客总是最先掌握。我需要更好的提示,而训练数据总是比社区已经搞懂的东西落后数月。

但它变成了更强大的东西。现在,我在销售电话前跑一遍,了解企业过去 30 天的真实情况。会议前跑一遍,读某人的近期推文和播客字幕。去迪士尼世界前跑一遍,知道哪些设施关闭,社区对 Genie+ 怎么说。动手构建任何东西前跑一遍,了解人们实际在撞什么墙。

如果你要和某位 CEO 开会,你读过他们过去 30 天所有的推文和 YouTube 字幕了吗?我读过了。

数据源,由人民评分

数据源 人民告诉你什么
Reddit 无过滤的观点。高赞评论附带点赞数,通过公共 JSON 免费获取。谷歌埋没的真实意见。
X / Twitter 热点、专家长帖、突发反应。最先知晓,最先争论。
YouTube 45 分钟的深度剖析。全文字幕搜索那 5 句值得引用的关键句。
TikTok 创作者触达 360 万人,带来你永远无法在谷歌找到的视角。
Instagram Reels 带语音转录的网红视角。视觉文化信号。
Hacker News 开发者共识。825 分,899 条评论。技术人员真正争论的地方。
Polymarket 不是观点,是赔率。由真金白银支撑。专辑销量 96% 置信度。收购 4%。
GitHub 针对个人:PR 速度、按星标排序的顶级仓库、发版说明。针对话题:issue 和讨论。
Digg 来自 Digg AI 1000 排行榜(约 1000 个 X 上高信号 AI 账户)的策展故事集群,带可归因的行内引用(无需 X 认证)。当 digg-pp-cli 在 PATH 上时自动启用。
Threads 后 Twitter 文本层。来自创作者和品牌的对话。
Pinterest 视觉发现。关于产品和创意的 Pin、保存和评论。
Bluesky 去中心化社交层。来自后 Twitter 迁徙的 AT 协议帖子。
Perplexity 基于 Sonar 的综合,原始 Search API 行和深度研究。
网页 编辑报道,博客对比。众多信号之一,而非唯一。

社区贡献者不断加入更多。Truth Social、小红书等已在引擎中,更多在路上。

一个 1500 赞的 Reddit 帖子,比一篇没人读的博客信号更强。一条 360 万播放的 TikTok 比新闻稿更能告诉你文化相关的是什么。由 6.6 万美金交易量支撑的 Polymarket 赔率,比评论员的猜测更难反驳。

最终的综述按真人实际参与度排序。社会相关性,而非 SEO 相关性。

人们实际用它做什么

会议之前。 /last30days Peter Steinberger - 加入了 OpenAI 的 Codex 团队、与 Anthropic 禁止第三方智能体抗争、在 GitHub 上以 85% 合并率合并了 23 个 PR、在构建跨设备智能体控制项目 LobsterOS。r/ClaudeCode:“自从 OpenClaw 发布,众所周知如果你通过非 API 方式运行,迟早会被封禁”(227 赞)。这些不在 LinkedIn 上。

读取招聘信号。 /last30days Listen Labs --hiring-signals - 当前的职位和招聘页面成为重点转移的引用证据:正在招聘企业安全、客户成功、基础设施或产品扩展。报告说明招聘表面上暗示了什么,而不是路线图会交付什么。

当有大事发生时。 /last30days Kanye West - 英国拒签他的签证,Wireless 音乐节取消,赞助商逃离。但 BULLY 专辑 Billboard 第二。Fantano 结束了他的"Yay 假期"来点评(65.3 万次观看)。SoFi 返校演出请来了 Lauryn Hill 和 Travis Scott,唱了 44 首歌。Polymarket:“Kanye 会再发推吗?” 86% 会。23 个 Reddit 帖子,17 个 YouTube 视频,8.6 万赞。

对比工具。 /last30days OpenClaw vs Hermes vs Paperclip - “它们不是竞争对手,是层级。” OpenClaw 是执行器(35.1 万 GitHub 星标,在线),Hermes 是自我进化的大脑(3.1 万星标),Paperclip 是组织架构图(4.9 万星标)。星标数实时来自 GitHub API,而非过时的博客。并排表格包含架构、记忆、安全、最适合场景。引用 @IMJustinBrooke:“OpenClaw = 小火龙,Hermes = 喷火龙。”

理解世界。 /last30days Iran vs USA - 战争第 38 天。特朗普给伊朗重新开放霍尔木兹海峡的最后期限是周二。两架美军战机被击落。油价 126 美元/桶。国际能源署称其为“全球石油市场历史上最大的供应中断”。Polymarket:12 月 31 日前停火概率 74%。27 条 X 帖子,10 个 YouTube 视频,20 个预测市场。

旅行之前。 /last30days Universal Epic Universe - 扩建已在施工。“Project 680”许可已提交。基础设施证实有烟花秀但未官宣。等待时间:矿车疯狂平均 148 分钟。尚无年卡,本地人不满。Stardust Racers 维护至 4 月 5 日。

快速学习某事。 /last30days Nano Banana Pro prompting - JSON 结构提示正在取代标签堆砌。@pictsbyai 的嵌套格式防止“概念漂移”。编辑先行的工作流优于重新生成。然后它会使用社区验证有效的方法,为你写一个生产级提示。

请求 HTML 简报,该技能将保存一个自包含、深色模式、适合打印的文件,你可以放到 Slack、邮件或 Notion。不会有原始 markdown 泄露。内联 CSS,系统字体回退到 Inter 和 JetBrains Mono。无 JavaScript。可离线使用。

/last30days OpenClaw --emit=html

或直接用自然语言:

/last30days OpenClaw,给我一份可分享的 HTML 简报 /last30days Cursor IDE 供 slack 使用 /last30days Anthropic 财报导出为 html

该技能照常在聊天中输出综述,同时将简报保存到 ${LAST30DAYS_MEMORY_DIR}/{topic}-brief.html(默认为 ~/Documents/Last30Days/)。聊天响应结尾会显示文件路径,你可以用 open 命令打开或拖到消息中。

文件中包含:徽章、内联元数据行、模型逐字综述及所有引用、引擎页脚(✅ 所有智能体已归队!树),以及说明主题和如何重新运行的页尾。数据质量警告(降级运行、证据稀薄等)保留在引擎的 stderr 日志中,绝对不会泄露到可分享的生成物中。

对于无需模型参与的纯 CLI 使用,引擎也接受 --synthesis-file PATH 将任意 markdown 综述转换为 HTML。

智能搜索:杀手锏

v3 引擎不止搜索你的话题。它在搜索开始前就搞明白该去哪里搜。输入"OpenClaw",引擎解析出 @steipete(Peter Steinberger,创建者)、r/openclaw、r/ClaudeCode,以及正确的 YouTube 频道和 TikTok 标签——全部经由 @j-sperling 构建的 Python 预研究大脑。旧引擎按关键词搜索,新引擎先理解你的主题,再搜索正确的人和社区。

这就是 v3 能找到 v2 永远找不到的内容的原因。"Paperclip" 解析为 @dotta。"Dave Morin" 解析为 @davemorin 加 @OpenClaw 加 TWiST 播客。"Peter Steinberger" 解析为 X 上的 @steipete 和 GitHub 上的 steipete。双向映射:人到公司,产品到创始人,姓名到 GitHub 资料。正确的 subreddit、正确的账号、正确的标签——在第一条 API 调用发出前就已解析完毕。

Reddit 和 X 上的人很有趣。旧引擎因为按相关性而非趣味性评分,埋没了他们最好的内容。v3 有一个第二裁判,在相关性得分之外对每条结果的幽默、机智和传播力打分。Tommy Lloyd 的"我的迈克尔·乔丹是史蒂夫·科尔"在"Arizona Basketball"相关性上得分低,但在趣味性上爆表。现在每份简报末尾都有一个"最佳观点"章节——最聪明的俏皮话、传播最广的引言、让你忍不住分享研究的反应。内置,无需开关。

跨源聚类合并

当同一故事出现在 Reddit、X 和 YouTube 上时,v3 将它们合并为一个聚类,而不是显示三个单独条目。基于实体的重叠检测能捕捉到匹配,即使标题用了不同的词。

"CLI vs MCP" 过去需要三次串行传递(12 分钟以上)。v3 使用一次传递,同时对双方进行实体感知子查询。同等深度,3 分钟。

自动发现的竞品对比

/last30days OpenAI --competitors 告诉宿主推理模型通过 WebSearch 发现前 2 名同行(Anthropic、xAI),为每个实体运行步骤 0.55,并用 "OpenAI vs Anthropic vs xAI" 和每个实体的 --competitors-plan JSON 调用引擎。引擎并行展开 3 条完整流水线,为每个实体保存 *-raw.md 文件,并将它们合并为三方对比。同样的机制直接支持 /last30days "OpenAI vs Anthropic vs xAI"。

当主题是人时,引擎从关键词搜索切换到以作者为中心的查询。它不问"谁在 issue 正文里提到了这个名字",而是回答:他们在交付什么,这些成果落在何处?

/last30days Peter Steinberger --github-user=steipete 显示 22 个 PR 已合并到 3 个仓库,合并率 85%。自有项目附有 README 摘要、星标数和顶部功能请求。本月发货的版本说明。合成器将这些与 X 帖子和 Reddit 帖子编织成一段连贯叙事。

任何研究运行后说“eli5 on”,综述将用简单语言重写。无黑话。同样的数据,同样的数据源,同样的引用——只是更清晰。“Arizona wins by being physical”代替“Arizona's identity is paint scoring (50%+ shooting, 9th nationally)”。说“eli5 off”恢复原样。

  • 免费的 Reddit 评论。 公共 JSON 为你提供帖子和高赞评论及点赞数。无需 API 密钥,无需 ScrapeCreators。开箱即用。
  • 真正有效的 YouTube 字幕。 候选池扩大 3 倍,覆盖音乐视频之外,捕捉带字幕的谈话/评论内容。

English / 原文

GitHub Trending #1 Repository Of The Day
Coverage ≥60%
mvanhorn/last30days-skill | Trendshift

An AI agent-led search engine scored by upvotes, likes, and real money - not editors.

This README tracks the current v3 pipeline. The runtime skill spec lives in skills/last30days/SKILL.md, which is the source of truth for the latest command and setup behavior.

Claude Code (recommended — auto-updates via marketplace):

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

Codex, Cursor, Copilot, Gemini CLI, or any of 50+Agent Skills hosts:

npx skills add mvanhorn/last30days-skill -g

(-g installs globally for your user, available across all projects. Drop it to scope per-project.)

More install options (claude.ai web, OpenClaw, manual) in the Install section below.

Zero config. Reddit, HN, Polymarket, and GitHub work immediately. Run it once and the setup wizard unlocks X, YouTube, TikTok, and more in 30 seconds.


Reddit upvotes. X likes. YouTube transcripts. TikTok engagement. Polymarket odds backed by real money and insider information. That's millions of people voting with their attention and their wallets every day. /last30days searches all of it in parallel, scores it by what real people actually engage with, and an AI agent judge synthesizes it into one brief.

Google aggregates editors. /last30days searches people.

You can't get this search anywhere else because no single AI has access to all of it. Google search doesn't touch Reddit comments or X posts. ChatGPT has a deal with Reddit but can't search X or TikTok. Gemini has YouTube but not Reddit. Claude has none of them natively. Each platform is a walled garden with its own API, its own tokens, its own auth. But you can bring your own keys and browser sessions, and suddenly an AI agent can search all of them at once, score them against each other, and tell you what actually matters.

That's the unlock. Not one better search engine. A dozen disconnected platforms, bridged by an agent.

/last30days Peter Steinberger

You have a meeting tomorrow. You Google them. You get their LinkedIn from 2023. /last30days gives you what they're actually doing this month: joined OpenAI to work on Codex, fighting Anthropic's ban on third-party agents, shipping 23 PRs at 85% merge rate, building "LobsterOS" for cross-device agent control, and r/ClaudeCode hit 569 upvotes debating whether he's a hero or "insufferable." Scattered across X posts, Reddit threads, YouTube transcripts, and GitHub commits. None of it was on Google.

I built it to keep up in AI. Everything changes every day and the Reddit and X nerds are always on top of it first. I needed better prompts, and the training data was always months behind what the community had already figured out.

But it turned into something bigger. Now I run it before a sales call to know the last 30 days truth about a business. Before a meeting to read someone's recent tweets and podcast transcripts. Before a Disney World trip to know which rides are closed and what the community says about Genie+. Before I build anything to know what problems people are actually hitting.

If you're meeting with a CEO, have you read all their tweets and YouTube transcripts from the last 30 days? I have.

Sources, scored by the people

Source What the people tell you
Reddit The unfiltered take. Top comments with upvote counts, free via public JSON. The real opinions that Google buries.
X / Twitter The hot take, the expert thread, the breaking reaction. First to know, first to argue.
YouTube The 45-minute deep dive. Full transcripts searched for the 5 quotable sentences that matter.
TikTok The creator reaching 3.6M people with a take you'll never find on Google.
Instagram Reels The influencer perspective with spoken-word transcripts. The visual culture signal.
Hacker News The developer consensus. 825 points, 899 comments. Where technical people actually argue.
Polymarket Not opinions. Odds. Backed by real money. 96% confidence on album sales. 4% on an acquisition.
GitHub For people: PR velocity, top repos by stars, release notes. For topics: issues and discussions.
Digg Curated story clusters from Digg's AI 1000 leaderboard (~1000 high-signal AI accounts on X), with attributable inline quotes (no X auth required). Auto-enabled when digg-pp-cli is on PATH.
Threads The post-Twitter text layer. Conversations from creators and brands.
Pinterest Visual discovery. Pins, saves, and comments on products and ideas.
Bluesky The decentralized social layer. AT Protocol posts from the post-Twitter migration.
Perplexity Grounded Sonar synthesis, raw Search API rows, and Deep Research.
Web The editorial coverage, the blog comparisons. One signal of many, not the only one.

Community contributors keep adding more. Truth Social, Xiaohongshu (RED), and others are in the engine with more on the way.

A Reddit thread with 1,500 upvotes is a stronger signal than a blog post nobody read. A TikTok with 3.6M views tells you more about what's culturally relevant than a press release. Polymarket odds backed by $66K in volume are harder to argue with than a pundit's guess.

The synthesis ranks by what real people actually engaged with. Social relevancy, not SEO relevancy.

What people actually use it for

Before a meeting. /last30days Peter Steinberger - joined OpenAI's Codex team, fighting Anthropic's ban on third-party agents, 23 PRs merged at 85% merge rate on GitHub, building LobsterOS for cross-device agent control. r/ClaudeCode: "Ever since OpenClaw released, it was widely known that if you run it through anything other than the API, you were gonna get banned eventually" (227 upvotes). That's not on LinkedIn.

To read hiring signals. /last30days Listen Labs --hiring-signals - current jobs and careers pages become cited evidence for focus shifts: hiring into enterprise security, customer success, infrastructure, or product expansion. The report says what the hiring appears to signal, not what the roadmap will ship.

When something drops. /last30days Kanye West - UK blocked his visa, Wireless Festival canceled, sponsors fled. But BULLY debuted #2 on Billboard. Fantano came back from his "Yay sabbatical" to review it (653K views). SoFi Homecoming brought out Lauryn Hill and Travis Scott for 44 songs. Polymarket: "Will Kanye tweet again?" 86% Yes. 23 Reddit threads, 17 YouTube videos, 86K upvotes.

To compare tools. /last30days OpenClaw vs Hermes vs Paperclip - "These aren't competitors, they're layers." OpenClaw is the executor (351K GitHub stars, live), Hermes is the self-improving brain (31K stars), Paperclip is the org chart (49K stars). Star counts pulled live from the GitHub API, not stale blog posts. Side-by-side table with architecture, memory, security, best-for. Per @IMJustinBrooke: "OpenClaw = Charmander, Hermes = Charizard."

To understand the world. /last30days Iran vs USA - Day 38 of the war. Trump's Tuesday deadline for Iran to reopen the Strait of Hormuz. Two US warplanes downed. Oil at $126/barrel. The IEA called it "the largest supply disruption in the history of the global oil market." Polymarket: ceasefire by Dec 31 at 74%. 27 X posts, 10 YouTube videos, 20 prediction markets.

Before a trip. /last30days Universal Epic Universe - Expansion already under construction. "Project 680" permit filed. Fireworks show confirmed by infrastructure but unannounced. Wait times: Mine-Cart Madness averaging 148 minutes. No annual pass yet, and locals are frustrated. Stardust Racers down for refurbishment through April 5.

To learn something fast. /last30days Nano Banana Pro prompting - JSON-structured prompts are replacing tag soup. @pictsbyai's nested format prevents "concept bleeding." Edit-first workflow beats regeneration. Then it writes you a production prompt using exactly what the community said works.

Ask for an HTML brief and the skill saves a self-contained, dark-mode, print-friendly file you can drop into Slack, email, or Notion. No raw markdown leaks. Inline CSS, system-font fallbacks behind Inter and JetBrains Mono. No JavaScript. Works offline.

/last30days OpenClaw --emit=html

or just ask in plain language:

/last30days OpenClaw, give me a shareable HTML brief
/last30days Cursor IDE for slack
/last30days Anthropic earnings export as html

The skill emits the synthesis in chat as usual AND saves a brief to ${LAST30DAYS_MEMORY_DIR}/{topic}-brief.html (defaults to ~/Documents/Last30Days/). The chat response ends with the file path so you can open it or drag it into a message.

What's in the file: badge, inline metadata line, the model's synthesis verbatim with all citations, the engine footer (✅ All agents reported back! tree), and a colophon noting the topic + how to re-run. Data quality warnings (degraded run, thin evidence, etc.) stay in the engine's stderr logs; they never leak into the shareable artifact.

For direct CLI use without the model in the loop, the engine also accepts --synthesis-file PATH to convert any markdown synthesis to HTML.

Intelligent search: the killer feature

The v3 engine doesn't just search for your topic. It figures out where to search before the search begins. Type "OpenClaw" and the engine resolves @steipete (Peter Steinberger, the creator), r/openclaw, r/ClaudeCode, and the right YouTube channels and TikTok hashtags - all via a new Python pre-research brain built by @j-sperling. The old engine searched keywords. The new engine understands your topic first, then searches the right people and communities.

This is why v3 finds content v2 never could. "Paperclip" resolves @dotta. "Dave Morin" resolves @davemorin plus @OpenClaw plus the TWiST podcast. "Peter Steinberger" resolves @steipete on X and steipete on GitHub. Bidirectional: person to company, product to founder, name to GitHub profile. The right subreddits, the right handles, the right hashtags - resolved before a single API call fires.

Reddit and X people are funny. The old engine buried their best stuff because it scored for relevance, not cleverness. v3 has a second judge that scores every result for humor, wit, and virality alongside the relevance score. Tommy Lloyd's "My Michael Jordan is Steve Kerr" scores low on relevance to "Arizona Basketball" but off the charts on fun. Now every brief ends with a "Best Takes" section - the cleverest one-liners, the most viral quotes, the reactions that make you want to share the research. Built in, not a toggle.

Cross-source cluster merging

When the same story appears on Reddit, X, and YouTube, v3 merges them into one cluster instead of showing three separate items. Entity-based overlap detection catches matches even when the titles use different words.

"CLI vs MCP" used to run three serial passes (12+ minutes). v3 runs one pass with entity-aware subqueries for both sides simultaneously. Same depth, 3 minutes.

Auto-discovered competitor comparisons

/last30days OpenAI --competitors tells the hosting reasoning model to discover the top 2 peers via WebSearch (Anthropic, xAI), run Step 0.55 per entity, and invoke the engine with "OpenAI vs Anthropic vs xAI" and a per-entity --competitors-plan JSON. The engine fans out 3 full pipelines in parallel, saves a *-raw.md file per entity, and merges them into a 3-way comparison. Same mechanics power /last30days "OpenAI vs Anthropic vs xAI" directly.

When the topic is a person, the engine switches from keyword search to author-scoped queries. Instead of "who mentioned this name in an issue body," it answers: what are they shipping and where is it landing?

/last30days Peter Steinberger --github-user=steipete shows 22 PRs merged across 3 repos at 85% merge rate. Own projects with README summaries, star counts, and top feature requests. Release notes for what shipped this month. The synthesizer weaves it into the narrative alongside X posts and Reddit threads.

Say "eli5 on" after any research run. The synthesis rewrites in plain language. No jargon. Same data, same sources, same citations - just clearer. "Arizona wins by being physical" instead of "Arizona's identity is paint scoring (50%+ shooting, 9th nationally)." Say "eli5 off" to go back.

  • Free Reddit comments. Public JSON gives you threads + top comments with upvote counts. No API key, no ScrapeCreators. Just works.
  • YouTube transcripts that actually work. Widened candidate pool 3x past music videos to reach talk/review content with captions.
  • TikTok, Instagram, Threads. All three activate automatically once SCRAPECREATORS_API_KEY is set — same key, same per-call cost. Suppress any of them with EXCLUDE_SOURCES=tiktok,instagram,threads (any comma-separated subset).
  • Pinterest. Per-query opt-in (visual pins, narrow utility): the model passes --search=pinterest for the runs that need it. Requires SCRAPECREATORS_API_KEY.
  • YouTube comments + transcript fallback. Both activate automatically once SCRAPECREATORS_API_KEY is set, the same default-on backup tier. Transcripts only fall back to ScrapeCreators when yt-dlp fails (no credit spent on success); comments are bounded to the top few videos (~3 extra calls per run). Suppress comments with EXCLUDE_SOURCES=youtube_comments. TikTok comments stay opt-in via INCLUDE_SOURCES=tiktok_comments. Surface top comments with vote counts the same way Reddit does.
  • Perplexity Sonar / Search API / Deep Research. Grounded web search via direct Perplexity (PERPLEXITY_API_KEY) or OpenRouter Sonar fallback (OPENROUTER_API_KEY). Add one of those keys plus INCLUDE_SOURCES=perplexity (it's a separate paid API - opt-in keeps you from being surprise-billed). Direct Perplexity can return Sonar synthesis, raw ranked Search API rows, or both.
  • Polymarket noise filtering. Common-word disambiguation prevents "Apple" from matching "Will Apple release a car?"
  • Resilient Reddit. Timeout budgets and runtime fallback. One slow thread doesn't kill the whole run.
  • Fun judge v2. Humor scoring baked into the narrative. Reddit's cleverest one-liners mixed into the synthesis where they fit, not dumped in a separate section.
  • Polymarket odds, not dollars. The % odds are the magic. Dollar volumes removed from display.
  • Per-author cap. Max 3 items per author prevents any single voice from dominating your brief.
  • Entity disambiguation. When the engine resolves handles, the synthesis trusts them. No more Mallorca resorts winning over Washington athletic clubs.
  • OpenClaw first-class citizen. Auto-resolve for engine-side pre-research. Device auth for frictionless ScrapeCreators signup.
  • 1,012 tests passing.
Surface Install Updates
Claude Code (recommended) /plugin marketplace add mvanhorn/last30days-skill Auto via marketplace, or claude plugin update last30days@last30days-skill
Codex, Cursor, Copilot, Gemini CLI, or any of 50+Agent Skills hosts npx skills add mvanhorn/last30days-skill -g npx skills update last30days -g
claude.ai (web) Download last30days.skill and upload via claude.ai > Customize > Skills > + > Create skill > Upload a skill Re-download and re-upload
Claude Desktop Download the .mcpb for your platform and drag into Settings > Extensions Re-download and drag the new bundle in
OpenClaw clawhub install last30days-official clawhub update last30days-official

Claude Code (recommended)

/plugin marketplace add mvanhorn/last30days-skill

Recommended because the Claude Code marketplace handles updates for you — the plugin cache is versioned and auto-refreshes when a new release publishes. Run claude plugin update last30days@last30days-skill to force a check.

If you'd rather use the agent-skills install path on Claude Code, that's also supported:

npx skills add mvanhorn/last30days-skill -g -a claude-code

The native plugin and the npx skills install can coexist. Note that Claude Code does not dedupe across install methods: if you have both the marketplace plugin and the npx skills copy active, /last30days will show two entries. Use one install method per machine.

Codex, Cursor, Copilot, Gemini CLI, and other Agent Skills hosts

Install via the open Agent Skills CLI — supports 50+ harnesses including codex, cursor, github-copilot, gemini-cli, claude-code, windsurf, cline, continue, roo, aider-desk, opencode, goose, and more (full list on the vercel-labs/skills repo).

npx skills add mvanhorn/last30days-skill -g

The -g (global) flag installs to your user directory so the skill is available across all projects. Without -g, npx skills installs project-locally into ./.skills/ (committed with the repo). For a research-the-world tool, global is what you want.

Codex desktop and other folder-mode hosts can work in ordinary folders as well as Git repos. Before first research, ask the host agent to run the bundled scripts/last30days.py --preflight from the loaded skill directory; in a source checkout, the equivalent command is python3 skills/last30days/scripts/last30days.py --preflight. It shows the config source, browser-cookie plan, planned writes, optional commands, and ignored project config without reading cookies, writing files, or running research.

By default this installs for whichever harness npx skills detects. To target a specific one (or multiple):

npx skills add mvanhorn/last30days-skill -g -a codex
npx skills add mvanhorn/last30days-skill -g -a cursor
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor

Update later with:

npx skills update last30days -g

Or update everything you've installed globally via npx skills:

List and remove with npx skills list -g and npx skills remove last30days -g.

  1. Download last30days.skill from the latest release
  2. Go to claude.ai > Customize > Skills
  3. Click the + button in the Skills panel > click on Create skill > Upload a skill and browse/drop the file in

Enable "Code execution and file creation" under Capabilities first — skills won't run without it.

Claude Desktop installs /last30days as an MCP server via a .mcpb bundle (a one-click Model Context Protocol package).

  1. Go to the latest release and download the .mcpb for your platform:
    • macOS Apple Silicon: last30days-pp-mcp-darwin-arm64.mcpb
    • macOS Intel: last30days-pp-mcp-darwin-amd64.mcpb
    • Linux x86_64: last30days-pp-mcp-linux-amd64.mcpb
  2. Open Claude Desktop, go to Settings > Extensions, and drag the file in.
  3. When prompted, paste API keys for the sources you want to enable. Every field is optional — the engine degrades to web-only mode if you skip them all. Keys are stored in your OS keychain.
  4. Restart Claude Desktop. Ask Claude to "research Peter Steinberger" or any topic and it will call the research tool.

Host requirement: Python 3.12+ on PATH. The bundle ships the engine source but uses your local Python interpreter. Install from python.org on Windows; macOS and most Linux distros ship a compatible version.

Keys don't sync with the Code skill. Claude Desktop and Claude Code maintain separate credential stores by design. If you already configured ~/.config/last30days/.env for the Code skill, you'll re-enter the same keys here once.

Windows support is deferred until per-platform manifest entry points are sorted out; track in a follow-up issue.

clawhub install last30days-official

For X/Twitter action workflows outside /last30days research, such as posting tweets or replies, follower export, media handling, monitors, and giveaway draws, use TweetClaw as the companion OpenClaw plugin. TweetClaw is maintained by Xquik-dev and is listed only as an optional companion path, not a last30days dependency or endorsement.

git clone https://github.com/mvanhorn/last30days-skill.git
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days

The symlink keeps the install in sync with your working tree as you edit — no re-copy needed. For claude.ai, build the .skill file from source: bash skills/last30days/scripts/build-skill.sh produces dist/last30days.skill.

Reddit (with comments), Hacker News, Polymarket, and GitHub work immediately. Zero configuration. Run /last30days once and the setup wizard unlocks more sources in 30 seconds.

These platforms don't have relationships with each other. X doesn't know what Reddit thinks. YouTube doesn't see TikTok. But you can bring your own API keys and browser tokens, and suddenly you have access to all of them at once.

Sources What you need Cost
Reddit (with comments) + HN + Polymarket + GitHub Nothing Free
X / Twitter Log into x.com in any browser, or set XQUIK_API_KEY / XAI_API_KEY Browser cookies are free; keys are provider-specific
YouTube brew install yt-dlp Free
Bluesky App password from bsky.app Free
TikTok + Instagram + Threads + Pinterest + YouTube comments ScrapeCreators key 10,000 free calls, then PAYG
Perplexity Sonar / Search API / Deep Research Perplexity key, or OpenRouter key as Sonar fallback Pay as you go
Web search Brave Search key 2,000 free queries/month

macOS Keychain (optional)

On macOS you can store keys in the system Keychain instead of a .env file. The skill picks them up automatically as the lowest-priority source — .env files and process environment still win on collision.

# Interactive setup — prompts for each known key, skip with empty input
skills/last30days/scripts/setup-keychain.sh

# Or store a single key by hand
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."

# Inspect / clean up
skills/last30days/scripts/setup-keychain.sh --list
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY

Items are stored under service name last30days-<KEY> for the current user. On non-Darwin platforms the loader is a no-op, so there is no behaviour change for Linux/Windows users.

Already have keys under different Keychain service names? Set the non-secret LAST30DAYS_KEYCHAIN_ALIASES mapping described in CONFIGURATION.md instead of copying secrets.

See CONFIGURATION.md for the full per-source key matrix, reasoning provider priority, and web-search backend priority.

Two things you'll likely want to know on day one:

Where research files are saved. LAST30DAYS_MEMORY_DIR defaults to ~/Documents/Last30Days/ (Windows: C:\Users\<you>\Documents\Last30Days\). Override by setting that env var to any path in your shell, or --save-dir <path> per run. Use --output <file> when you need the rendered result at an exact path, using the format selected by --emit. Use --save-suffix=<name> to keep multiple variations of the same topic separate (e.g. per client). Each --save-dir run produces <slug>-raw[-suffix].md. Run python3 skills/last30days/scripts/last30days.py --preflight to review planned writes before a research run.

Trend monitoring across runs. The default mode produces a fresh markdown snapshot per run. To accumulate findings over time, add --store to persist into a SQLite database, then use scripts/watchlist.py for scheduled runs (with optional Slack / webhook delivery on new findings) and scripts/briefing.py for daily / weekly digests. The full cadence pattern is in CONFIGURATION.md.

Per-client wrapper scripts, custom category-peer subreddits, and the experimental beta channel for in-progress customizations are also documented in CONFIGURATION.md.

  1. You type a topic. Person, company, product, technology, "X vs Y." Anything.
  2. The agent resolves who matters. Finds X handles (including founders), GitHub repos, subreddits, TikTok hashtags, YouTube channels. For "Kanye West" it knows r/hiphopheads, @kanyewest, and "bully review" on YouTube. For "OpenClaw" it resolves openclaw/openclaw on GitHub and fetches live star counts.
  3. All sources searched in parallel. Multi-query expansion. Results scored by engagement, relevance, freshness.
  4. The depth nobody else has. Full YouTube transcripts from reaction videos. Top Reddit comments with upvote counts. TikTok captions. Polymarket odds. Not just titles and links.
  5. Same story, merged. Wireless Festival announced on Reddit, discussed on X, ticket prices on TikTok = one cluster, not three separate items.
  6. Synthesized into one brief. Grounded in specific data. Cited by source. Ranked by what people actually engage with. Not "here's what I found." It's "here's what matters."
  7. Then it becomes your expert. After one run, your Claude session knows everything the community knows. Ask follow-up questions. Have it write prompts, draft emails, plan trips, architect systems - all grounded in what's real right now.

"I found a Claude Code skill that researches any topic across Reddit, X, YouTube, and HN from the last 30 days. Then writes the prompts for you. I've been manually searching Reddit and X for research before every piece of content I write. Tab by tab. Thread by thread. That's the part that takes 90 minutes. This eliminates it." -@itsjasonai

"This one skill replaced my entire research workflow. You give it a topic, it scrapes Reddit, X, and the web for what people are actually talking about. Not old blog posts. Real conversations from the last 30 days." -@itswilsoncharles

"5 of the 10 trending repos on GitHub today are Claude tools. #1: mvanhorn/last30days-skill" -@yieldhunter95

MIT license. No tracking. No analytics. Your research stays on your machine. 1,012 tests.

Built with Python 3.12+, yt-dlp, Node.js (vendored Bird client for X search), and ScrapeCreators API. v3 engine architecture by @j-sperling.

See CONTRIBUTORS.md for the full list of community contributors and CHANGELOG.md for version history.

Star History Chart


@slashlast30days · github.com/mvanhorn/last30days-skill