/ Directory / Playground / last30days
● Community mvanhorn ⚡ Instant

last30days

by mvanhorn · mvanhorn/last30days-skill

Search Reddit, X, YouTube, HN, Polymarket, and the web for a topic and get a grounded, dated synthesis — not Claude's pre-trained 'I think...' guess.

last30days is a research skill that hits actual current sources (Reddit, X, YouTube transcripts, Hacker News, Polymarket markets, plus general web search) and writes a structured synthesis with citations, dates, and sentiment per source. Designed to break Claude's tendency to confidently summarize stale knowledge from its training cut-off.

Why use it

Key features

Live Demo

What it looks like in practice

ready

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "last30days-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mvanhorn/last30days-skill",
        "~/.claude/skills/last30days"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "last30days-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mvanhorn/last30days-skill",
        "~/.claude/skills/last30days"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "last30days-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mvanhorn/last30days-skill",
        "~/.claude/skills/last30days"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "last30days-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mvanhorn/last30days-skill",
        "~/.claude/skills/last30days"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "last30days-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mvanhorn/last30days-skill",
        "~/.claude/skills/last30days"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "last30days-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/mvanhorn/last30days-skill",
          "~/.claude/skills/last30days"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add last30days-skill -- git clone https://github.com/mvanhorn/last30days-skill ~/.claude/skills/last30days

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use last30days

What's the current state of <topic> across communities?

👤 Anyone preparing for a meeting, blog post, or investment call ⏱ ~25 min beginner

When to use: You need to walk in with current consensus, not stale impressions.

Prerequisites
  • Skill installed — git clone https://github.com/mvanhorn/last30days-skill ~/.claude/skills/last30days
Flow
  1. Run the sweep
    Use last30days. What's the state of MCP adoption across r/LocalLLaMA, r/ClaudeAI, HN, and YouTube creators in the last 30 days?✓ Copied
    → Per-source summary with quoted highlights
  2. Synthesize
    Now write a 200-word synthesis. Quote at least one citation per claim.✓ Copied
    → Synthesis with footnotes / inline links
  3. Drill
    What's the most-disagreed-on aspect across communities?✓ Copied
    → Disagreement axis named with quotes from each side

Outcome: A grounded brief you can defend in a real meeting.

Pitfalls
  • X / Twitter access is unreliable since the API changes — Skill falls back to nitter mirrors and HN/Reddit when X fails — accept partial coverage
Combine with: filesystem

Combine Polymarket odds with discussion sentiment for an event

👤 Forecasters, analysts, anyone trading event outcomes ⏱ ~20 min intermediate

When to use: Polymarket says X but you wonder if discussion is shifting.

Flow
  1. Fetch market
    Pull the Polymarket market for 'Will Y happen by Z?' and current odds.✓ Copied
    → Market data + 30-day odds chart description
  2. Check discussion
    Now pull discussion on Reddit and X for the same topic in the last 7 days.✓ Copied
    → Sentiment summary by source
  3. Reconcile
    Where does discussion sentiment differ from market odds? Is there a credible reason?✓ Copied
    → Reconciliation note with possible drivers

Outcome: An informed take, not a one-source opinion.

Pitfalls
  • Polymarket market is illiquid → odds noisy — Skill flags volume; ignore signal below threshold

Weekly digest of what people are saying about a competitor

👤 PMs, marketers, founders ⏱ ~15 min beginner

When to use: You want a Monday-morning brief without spending Sunday scrolling.

Prerequisites
  • Cron / scheduler — schedule the skill weekly
Flow
  1. Configure watchlist
    Create a watchlist with company X and Y. Save to /research/watch.json.✓ Copied
    → watch.json written
  2. Run weekly
    Run the watchlist sweep and save output to /research/weekly/$(date +%V).md.✓ Copied
    → Markdown brief saved

Outcome: Monday brief ready every Monday, no manual scrolling.

Pitfalls
  • Brief gets too long — Configure max_words per source so digest stays scannable
Combine with: filesystem

Combinations

Pair with other MCPs for X10 leverage

last30days-skill + filesystem

Persist briefs as a research archive

Save this brief to /research/<topic>/$(date +%F).md.✓ Copied
last30days-skill + obsidian-mcp-tools

Drop briefs straight into your Obsidian vault

After synthesis, write to vault under /Research/<topic>/.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
research query, sources[]?, since_days? Topic sweep 0 (local + free APIs where possible)
synthesize research_output, target_length? Write up after research 0
polymarket_lookup query Event-betting context 0

Cost & Limits

What this costs to run

API quota
Bound by underlying source rate limits (Reddit's main constraint)
Tokens per call
5000–20000 per topic depending on depth
Monetary
Free (uses public APIs / scrapers)
Tip
Cap source count to 3–4 if cost is a concern

Security

Permissions, secrets, blast radius

Minimum scopes: filesystem-write
Credential storage: Optional Reddit/X tokens via env
Data egress: Source APIs (reddit.com, hn, etc.)

Troubleshooting

Common errors and fixes

X / Twitter returns 401 / 429

X API constraints — skill auto-falls back; or set X_BEARER_TOKEN if you have one

YouTube transcript not available

Some videos disable transcripts — skill skips and notes

Synthesis is generic

Increase research depth, narrow query, or add specific subreddits to the watchlist

Alternatives

last30days vs others

AlternativeWhen to use it insteadTradeoff
Manual Perplexity / Grok DeepSearchYou want a one-off, polished UINo agent integration; not scriptable
uditgoenka/autoresearchYou want goal-directed, iterative researchAutoresearch is iterative; last30days is one-shot multi-source

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills