
Last30days
Pull what Reddit, X, YouTube, and the web are saying about a topic in the last 30 days and turn it into cited synthesis plus reusable prompts.
Overview
Last 30 Days is an agent skill most often used in Idea (also Validate and Grow) that researches a topic across Reddit, X, YouTube, and the web from the last 30 days and synthesizes cited takeaways plus copy-paste prompts
Install
npx skills add https://github.com/mvanhorn/last30days-skill --skill last30daysWhat is this skill?
- Cross-engine research across Reddit, X, YouTube, and the open web for the last 30 days
- Chat-first synthesis with badge, bold lead-ins, citations, and a KEY PATTERNS block
- Optional shareable HTML brief saved to disk when the user explicitly asks (Slack, Notion, export)
- Default prompt tuned for “what people are saying, upvoting, and sharing right now”
- Copy-paste prompts derived from the synthesis for follow-on agent work
- Sources span Reddit, X, YouTube, and the open web within a 30-day window
- Chat synthesis includes a KEY PATTERNS list and optional HTML brief export on request
Adoption & trust: 7.6k installs on skills.sh; 32.8k GitHub stars; 0/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need current community and creator signal on a topic, but manual tab-hopping across Reddit, X, and YouTube leaves you with stale or unsourced notes.
Who is it for?
Solo builders validating positioning, offer ideas, or content angles using live social and web conversation from the past month.
Skip if: Teams that already have a locked, approved spec and only need implementation—or workflows that require historical analysis beyond 30 days without other tools.
When should I use this skill?
User wants research on any topic from the last 30 days across Reddit, X, YouTube, and web—or asks for a shareable HTML brief of that synthesis.
What do I get? / Deliverables
You get a cited 30-day synthesis in chat—and an optional on-disk HTML brief when requested—ready to feed scope decisions, copy drafts, or the next planning skill.
- Structured chat synthesis with citations and KEY PATTERNS
- Optional HTML brief file on disk when export is requested
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Idea because the skill’s core job is discovery and signal-gathering before you commit to a product or campaign direction. Research is the best fit: it aggregates recent community conversation and web signal rather than building, shipping, or operating production systems.
Where it fits
Compare how builders talk about a competitor category on Reddit and X before picking a wedge.
Pull recent complaint patterns from YouTube comments and threads to narrow MVP features.
Draft a newsletter angle grounded in KEY PATTERNS from the last month of discourse.
See which hooks and objections creators repeated recently before scheduling a launch thread.
How it compares
Use instead of generic web search snippets when you need multi-platform, recency-bounded community signal in one agent turn.
Common Questions / FAQ
Who is last30days for?
Indie and solo builders using Claude Code, Codex, or Cursor who want fast, cited research from Reddit, X, YouTube, and the web before they commit to a build or launch bet.
When should I use last30days?
In Idea/research when exploring niches; in Validate/scope when pressure-testing demand language; in Grow/content when drafting posts grounded in what people shared this month; anytime you need a synthesized 30-day pulse with optional HTML export.
Is last30days safe to install?
Review the Security Audits panel on this Prism page for published audit results; the skill performs live research over the network, so treat outputs as untrusted input and avoid sending secrets in prompts.
SKILL.md
READMESKILL.md - Last30days
interface: display_name: "Last 30 Days" short_description: "Research any topic across Reddit, X, YouTube, and the web from the last 30 days. Returns synthesized expert answers and copy-paste prompts." default_prompt: "Research this topic from the last 30 days across Reddit, X, YouTube, and web. Synthesize what people are actually saying, upvoting, and sharing right now." brand_color: "#FF6B35" policy: allow_implicit_invocation: true # Save shareable HTML brief This reference file is loaded by the main `SKILL.md` when the user asked for an HTML brief (either explicitly via `--emit=html` / `--emit:html` / `--html`, or in natural language - "give me a shareable HTML brief", "for Slack", "for Notion", "export as HTML", etc.). The detection happens in `SKILL.md` so that the common no-HTML path stays short; the implementation lives here. The contract: the synthesis still appears in chat as the primary output. The HTML is an additional artifact saved to disk for sharing. Both happen in the same turn. ## When to fire this flow - After you have already emitted the full chat response: badge, "What I learned:" (or comparison title), bold-lead-in paragraphs with citations, KEY PATTERNS list, engine footer pass-through, invitation block. - BEFORE the WAIT FOR USER'S RESPONSE pause. - ONLY if the user asked. Do NOT save HTML when the user didn't ask for it. ## How to fire it ```bash # 1. Write your synthesis prose VERBATIM to a temp file. The synthesis is the # "What I learned:" prose label, the bold-lead-in paragraphs with their # inline citations as you wrote them in chat, and the "KEY PATTERNS from # the research:" numbered list. Do NOT include the badge or the engine # footer in the temp file - the engine adds those when it renders the HTML. # Use the EXACT text you just wrote in chat. Do not paraphrase, do not # summarize, do not reorder. The HTML must read identically to the chat # response in voice and citations. SYNTHESIS_FILE="/tmp/last30days-synthesis-${CLAUDE_SESSION_ID}.md" cat > "$SYNTHESIS_FILE" <<'SYNTHESIS_EOF' What I learned: **{First headline}** - {body with [name](url) inline citations} **{Second headline}** - {body} **{Third headline}** - {body} KEY PATTERNS from the research: 1. {pattern} - per [@handle](url) 2. {pattern} - per [r/sub](url) 3. {pattern} - per [@handle](url) SYNTHESIS_EOF # 2. Convert the synthesis to a self-contained HTML file via the engine. # The engine reuses the cache from your earlier engine run (same topic # + plan), so this second invocation is typically <1s on cache hit. SLUG=$(echo "$TOPIC" | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-' | sed 's/^-//;s/-$//') HTML_PATH="${LAST30DAYS_MEMORY_DIR}/${SLUG}-brief.html" "${LAST30DAYS_PYTHON}" "${SKILL_ROOT}/scripts/last30days.py" "${TOPIC}" \ --emit=html \ --synthesis-file "$SYNTHESIS_FILE" \ > "$HTML_PATH" # 3. Append ONE line to your already-emitted chat response, after the # invitation block. Use a paperclip emoji as a visible signal that an # artifact was produced: echo "📎 Shareable brief saved to $HTML_PATH" ``` ## What ends up in the HTML file The engine's `--emit=html` renderer combines: - The badge (`🌐 last30days vX.Y.Z · synced YYYY-MM-DD`) at the top - A single inline metadata line (`{date range} · {active sources}`) below the badge - Your synthesis verbatim, with prose labels promoted to `<h2>` and bold lead-ins preserved - All `[name](url)` citations rendered as `<a>` tags - The engine footer (`✅ All agents reported back!` tree) preserved verbatim in monospace - A colophon with the topic and a re-run hint The renderer strips engine-internal noise that doesn't belong in a shareable artifact: the `# last30days vX.Y.Z: TOPIC` debug file header, the model-facing `> Safety note:` blockquote, and the `I'm now an expert on X` invitation block. Data quality warnings (degraded run, thin evidence, etc.) stay in the engine's stderr logs - they never leak into the share-ready f