last30days
Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, Perplexity, and more. AI agent scores by upvotes, likes, and real money. Also triggered by 'last30'. Skill: last30days Owner: mvanhorn Summary: Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, Perplexity, and more. AI agent scores by upvotes, likes, and real money. Also triggered by 'last30'. Tags: latest:3.0.0-open Version history: v3.0.0-open | 2026-04-08T17:57:27.835Z | auto last30days v3.0.0-open: Major update with multi-mode research, persistent knowledge, and wa
Rank
62
Safety
84
Downloads
9.2k
Updated
Oct 9, 2026
Version
3.0.0-open
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 9.2K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 9.2K downloadsadoption · observed Oct 9, 2026
- Latest release
- 3.0.0-openrelease · observed Apr 8, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17ea85t738dtyvg6gkwt7zt5h84596q:last30days-official- Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-mvanhorn-last30days-official/snapshot"
Documentation
CLAWHUB
148,600 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: last30days
version: "3.0.0-open"
description: "Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, Perplexity, and more. AI agent scores by upvotes, likes, and real money. Also triggered by 'last30'."
argument-hint: 'last30 AI video tools, last30 watch my competitor every week, last30 give me my briefing'
allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch
disable-model-invocation: true
---
# last30days (open variant): Research + Watchlist + Briefings
Multi-mode research skill with persistent knowledge accumulation.
## Command Routing
Parse the user's first argument to determine the mode:
| First word | Mode | Reference |
|---|---|---|
| `watch` | Watchlist management | `references/watchlist.md` |
| `briefing` | Morning briefing | `references/briefing.md` |
| `history` | Query accumulated knowledge | `references/history.md` |
| *(anything else)* | One-shot research | `references/research.md` |
## Setup: Find Skill Root
```bash
for dir in \
"." \
"${CLAUDE_PLUGIN_ROOT:-}" \
"${GEMINI_EXTENSION_DIR:-}" \
"$HOME/.gemini/extensions/last30days-skill" \
"$HOME/.gemini/extensions/last30days" \
"$HOME/.claude/skills/last30days" \
"$HOME/.agents/skills/last30days" \
"$HOME/.codex/skills/last30days"; do
[ -n "$dir" ] && [ -f "$dir/scripts/last30days.py" ] && SKILL_ROOT="$dir" && break
done
if [ -z "${SKILL_ROOT:-}" ]; then
echo "ERROR: Could not find scripts/last30days.py" >&2
exit 1
fi
```
Use `$SKILL_ROOT` for all script and reference file paths.
## Load Context
At session start, read `${SKILL_ROOT}/variants/open/context.md` for user preferences and source quality notes. Update it after interactions.
## Shared Configuration
- **Database**: `~/.local/share/last30days/research.db` (SQLite, WAL mode)
- **Briefings**: `~/.local/share/last30days/briefs/`
- **API keys**: `~/.config/last30days/.env` or environment variables
- **Key priority**: env vars > config file
### API Keys
| Key | Required | Purpose |
|---|---|---|
| `OPENAI_API_KEY` | For Reddit | Reddit search via OpenAI responses API |
| `XAI_API_KEY` | For X (fallback) | X search via xAI Grok API |
| `OPENROUTER_API_KEY` | Optional | Perplexity Sonar Pro search + AI reasoning (planning/reranking). Add `INCLUDE_SOURCES=perplexity` to enable. Use `--deep-research` for exhaustive reports. |
| `PARALLEL_API_KEY` | Optional | Web search via Parallel AI |
| `BRAVE_API_KEY` | Optional | Web search via Brave Search |
Bird CLI provides free X search if installed. YouTube search uses yt-dlp (free).
Run `python3 "${SKILL_ROOT}/scripts/last30days.py" --diagnose` to check source availability.
## Routing Logic
After determining the mode, **read the corresponding reference file** using the Read tool:
```
Read: ${SKILL_ROOT}/variants/open/references/{mode}.md
```
Then follow the instructions in that reference file exactly._meta.json
{
"ownerId": "kn7d7xy7794nh6aaabfga5wwzh7zptdm",
"slug": "last30days-official",
"version": "3.0.0-open",
"publishedAt": 1775671047835
}references/briefing.md
# Morning Briefing
Synthesize accumulated findings into a formatted briefing.
## Commands
| Command | Action |
|---|---|
| `briefing` | Generate today's briefing |
| `briefing --weekly` | Weekly digest with trends |
| `briefing --since YYYY-MM-DD` | Briefing since specific date |
## Generate Briefing
```bash
python3 "${SKILL_ROOT}/scripts/briefing.py" generate [--weekly] [--since DATE]
```
The script returns JSON with per-topic findings, staleness info, and cost data.
## Staleness Check
Before synthesizing, check each topic's freshness:
- **Fresh** (< 12h): show normally
- **Aging** (12-36h): note when last run was
- **Stale** (> 36h): warn user, suggest running `watch run-one "topic"`
## Daily Briefing Format
```
Good morning! Here's your research briefing for [DATE].
TL;DR: [One sentence about the top finding across all topics]
---
**[Topic 1]** (N new findings)
Top signal: [Highest engagement finding with source]
Also trending: [2nd finding], [3rd finding]
**[Topic 2]** (N new findings)
Top signal: [Highest engagement finding]
Also trending: [2nd finding]
---
Cost: $X.XX / $Y.YY budget | N topics active | N findings today
```
## Weekly Digest Format
```
Weekly digest for week of [DATE]:
**[Topic 1]**
This week: N findings (up/down X% from last week)
Trending up: [engagement increasing]
Key voices: @handle1, r/sub1
**[Topic 2]**
This week: N findings
Trending down: [engagement decreasing]
```
## Synthesis Rules
- Lead with people, not publications
- 3-5 topics max per briefing
- 2-3 findings per topic
- Include cost/budget footer
- Note any failed or stale topics
## No Data Handling
If no topics or no findings:
```
No briefing data available.
To get started:
1. Add a topic: /last30days watch add "your topic"
2. Run research: /last30days watch run-all
3. Generate briefing: /last30days briefing
```references/history.md
# History & Knowledge Query
Query the accumulated findings database.
## Commands
| Command | Action |
|---|---|
| `history "topic"` | Show findings for a topic |
| `history "topic" --since=7d` | Findings from last N days |
| `history --search "query"` | Full-text search across all findings |
| `history --trending` | Topics with most recent activity |
| `history --stats` | Watchlist health dashboard |
## Topic History
```bash
python3 "${SKILL_ROOT}/scripts/store.py" query "TOPIC" [--since DAYS]
```
Display findings grouped by date (newest first):
```
**[Topic Name]** — N findings since [date]
[DATE]
- [Reddit] Title (score pts, N comments) — r/subreddit
- [X] Tweet text... (N likes) — @handle
- [YouTube] Video title (N views) — channel
[EARLIER DATE]
- ...
```
Mark updated findings (engagement changed since first seen).
## Full-Text Search
```bash
python3 "${SKILL_ROOT}/scripts/store.py" search "QUERY"
```
Uses FTS5 with BM25 ranking. Show results across all topics:
```
Search: "QUERY" — N results
1. [Reddit] Title — r/subreddit (topic: AI video)
...snippet with **highlighted** matches...
2. [X] Tweet text — @handle (topic: NVIDIA)
...snippet...
```
## Trending Topics
```bash
python3 "${SKILL_ROOT}/scripts/store.py" trending
```
Show topics ranked by recent activity:
```
Trending topics (last 7 days):
1. AI video tools — 12 new findings, engagement up 45%
2. NVIDIA news — 8 new findings, engagement steady
3. Claude Code — 3 new findings, engagement down 20%
```
## Stats Dashboard
```bash
python3 "${SKILL_ROOT}/scripts/store.py" stats
```
Display as a health dashboard:
```
Watchlist Health
- Active topics: N
- Total findings: N
- Database size: N KB
Research Runs (7 days)
- Successful: N
- Failed: N
- Cost: $X.XX
Source Breakdown
- Reddit: N findings
- X: N findings
- YouTube: N findings
- Web: N findings
```
## No Data Handling
If no findings exist:
```
No research history yet.
To start building knowledge:
1. Run research: /last30days "your topic"
2. Or add a watchlist topic: /last30days watch add "topic"
```references/research.md
# One-Shot Research Mode (v3)
Research ANY topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, and the web. Surface what people are actually discussing, recommending, betting on, and debating right now.
---
## 1. Parse User Intent
Before doing anything, parse the user's input for:
1. **TOPIC**: What they want to learn about
2. **TARGET TOOL** (if specified): Where they'll use the prompts
3. **QUERY TYPE**:
- **PROMPTING** - "X prompts", "prompting for X" -> copy-paste prompts
- **RECOMMENDATIONS** - "best X", "top X" -> list of specific things
- **NEWS** - "what's happening with X" -> current events
- **COMPARISON** - "X vs Y", "X versus Y", "compare X and Y" -> side-by-side comparison
- **GENERAL** - anything else -> broad understanding
Common patterns:
- `[topic] for [tool]` -> TOOL IS SPECIFIED
- `[topic] prompts for [tool]` -> TOOL IS SPECIFIED
- Just `[topic]` -> TOOL NOT SPECIFIED, that's OK
- "best [topic]" or "top [topic]" -> QUERY_TYPE = RECOMMENDATIONS
- "X vs Y" or "X versus Y" -> QUERY_TYPE = COMPARISON, TOPIC_A = X, TOPIC_B = Y
**Do NOT ask about target tool before research.** Run research first, ask after.
**Store these variables:**
- `TOPIC = [extracted topic]`
- `TARGET_TOOL = [extracted tool, or "unknown" if not specified]`
- `QUERY_TYPE = [PROMPTING | RECOMMENDATIONS | NEWS | COMPARISON | GENERAL]`
- `TOPIC_A = [first item]` (only if COMPARISON)
- `TOPIC_B = [second item]` (only if COMPARISON)
---
## 2. Confirm Topic
Display a branded one-liner before starting research. Build ACTIVE_SOURCES_LIST by checking what's configured in .env (Reddit, HN, Polymarket are always active; add X, YouTube, TikTok, Instagram, GitHub, Perplexity based on configured keys/tools).
For GENERAL / NEWS / RECOMMENDATIONS / PROMPTING queries:
```
/last30days - searching {ACTIVE_SOURCES_LIST} for what people are saying about {TOPIC}.
```
For COMPARISON queries:
```
/last30days - comparing {TOPIC_A} vs {TOPIC_B} across {ACTIVE_SOURCES_LIST}.
```
Do NOT show a multi-line "Parsed intent" block with TOPIC=, TARGET_TOOL=, QUERY_TYPE= variables. Do NOT promise a specific time. Do NOT list sources that aren't configured.
Then proceed immediately to research execution.
---
## 3. Handle / GitHub Resolution
**OpenClaw does not have WebSearch.** Skip manual handle resolution (Steps 0.5, 0.55, 0.75 from the main skill). Instead, add `--auto-resolve` to the research command. The engine will use configured web search backends (Brave, Exa, Serper) to discover subreddits, X handles, and context before planning.
If the user manually provides handles or community names, pass them through as CLI flags (see the flags list in Research Execution below). But do NOT attempt WebSearch-based resolution yourself.
---
## 4. Agent Mode (--agent flag)
If `--agent` appears in ARGUMENTS (e.g., `/last30days plaud granola --agent`):
1. **Skip** the intro display block
2. **Skip** any `AskUserQuestion` calls - use `TARGET_TOOL AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/mvanhorn/skills/last30days-official",
"sourceUrl": "https://clawhub.ai/mvanhorn/skills/last30days-official",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T02:31:30.020Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-mvanhorn-last30days-official/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mvanhorn-last30days-official/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T02:31:30.020Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "9.2K downloads",
"href": "https://clawhub.ai/mvanhorn/last30days-official",
"sourceUrl": "https://clawhub.ai/mvanhorn/last30days-official",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T02:31:30.020Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "3.0.0-open",
"href": "https://clawhub.ai/mvanhorn/last30days-official",
"sourceUrl": "https://clawhub.ai/mvanhorn/last30days-official",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-08T17:57:27.835Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-mvanhorn-last30days-official/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mvanhorn-last30days-official/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 3.0.0-open",
"description": "last30days v3.0.0-open: Major update with multi-mode research, persistent knowledge, and watchlist features. - Added support for multiple modes: one-shot research, watchlist management, daily briefing, and query of accumulated knowledge. - Introduced persistent storage: SQLite research database and saved briefings. - Expanded sources: now includes Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, Perplexity, and more. - Modular command routing via first argument (e.g. `watch`, `briefing`, `history`, or direct research topic). - Improved API key handling and source availability checks. - Reference-driven flow: each mode uses dedicated instructions, improving reliability and flexibility.",
"href": "https://clawhub.ai/mvanhorn/last30days-official",
"sourceUrl": "https://clawhub.ai/mvanhorn/last30days-official",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-08T17:57:27.835Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
