last30days (Gemini Synthesis)
Research any topic from the last 30 days. Sources: X (Twitter), YouTube transcripts, web search. Generates expert briefings and copy-paste prompts using Gemini. Skill: last30days (Gemini Synthesis) Owner: ralph-oei Summary: Research any topic from the last 30 days. Sources: X (Twitter), YouTube transcripts, web search. Generates expert briefings and copy-paste prompts using Gemini. Tags: latest:1.0.0 Version history: v1.0.0 | 2026-02-17T10:02:16.006Z | auto - Initial release of the last30days-gemini skill. - Researches any topic from the past 30 days using X (Twitter), YouTu
Rank
62
Safety
84
Downloads
546
Updated
Apr 15, 2026
Version
1.0.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 546 downloads reported by the source. Last updated 4/15/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 Apr 15, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Apr 15, 2026
- Adoption signal
- 546 downloadsadoption · observed Apr 15, 2026
- Latest release
- 1.0.0release · observed Feb 17, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install kn74qkj5344raj0tk9txa53xvh81a244:last30days-gemini- 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-ralph-oei-last30days-gemini/snapshot"
Documentation
CLAWHUB
85,862 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: last30days
description: "Research any topic from the last 30 days. Sources: X (Twitter), YouTube transcripts, web search. Generates expert briefings and copy-paste prompts using Gemini."
argument-hint: 'last30 AI agents, last30 marketing automation'
metadata: {"version": "2.1.0", "clawdbot":{"emoji":"🔍","requires":{"bins":["python3","node","yt-dlp"],"env":["AUTH_TOKEN","CT0","BRAVE_API_KEY"]}}, "original_repo": "https://github.com/mvanhorn/last30days-skill", "author": "mvanhorn", "license": "MIT"}
---
> **Credit:** This skill is based on [last30days](https://github.com/mvanhorn/last30days-skill) by [@mvanhorn](https://x.com/mvanhorn). The original skill researches topics across Reddit, X, YouTube, and web. This version adds Gemini synthesis for briefings and prompts.
>
> Original skill: [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
# last30days v2.1
Research any topic across X (Twitter), YouTube, and web. Find what's actually being discussed, recommended, and debated right now.
## Setup
```bash
# Environment (should already be set)
export AUTH_TOKEN=your_x_auth_token
export CT0=your_x_ct0_token
export BRAVE_API_KEY=your_brave_key
# Config
mkdir -p ~/.config/last30days
cat > ~/.config/last30days/.env << 'EOF'
BRAVE_API_KEY=your_key_here
EOF
```
## Usage
```bash
# Quick research (faster, fewer sources)
python3 {baseDir}/scripts/last30days.py "AI agents" --quick
# Full research
python3 {baseDir}/scripts/last30days.py "AI agents"
# Output formats
python3 {baseDir}/scripts/last30days.py "topic" --emit=json # JSON for parsing
python3 {baseDir}/scripts/last30days.py "topic" --emit=compact # Human readable
python3 {baseDir}/scripts/last30days.py "topic" --emit=md # Full report
```
## Output for AI Synthesis
The `--emit=json` flag outputs structured JSON that can be fed to Gemini for:
- Expert briefing generation
- Copy-paste ready prompts
- Trend analysis
## Sources
| Source | Auth | Notes |
|--------|------|-------|
| X/Twitter | Cookies | Uses bird CLI with existing AUTH_TOKEN/CT0 |
| YouTube | None | Requires yt-dlp for transcripts |
| Web | Brave API | Requires BRAVE_API_KEY |
## Synthesis
This skill researches and returns raw data. For AI-generated briefings and prompts, pipe the JSON output to Gemini:
```bash
python3 {baseDir}/scripts/last30days.py "topic" --quick --emit=json | python3 -c "
import json, sys, os
import urllib.request, urllib.parse
data = json.load(sys.stdin)
prompt = f'Synthesize this research into an expert briefing and 3 copy-paste prompts:\\n{json.dumps(data)}'
body = json.dumps({
'contents': [{'parts': [{'text': prompt}]}],
'generationConfig': {'temperature': 0.7, 'maxOutputTokens': 2048}
})
req = urllib.request.Request(
'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=' + os.environ.get('GEMINI_API_KEY'),
data=body.encode(),
headers={'Content-Type': 'application/json'}
)
print(json.variants/open/SKILL.md
---
name: last30days
version: "2.1-open"
description: "Research topics, manage watchlists, get briefings, query history. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web."
argument-hint: 'last30 AI video tools, last30 watch my competitor every week, last30 give me my briefing'
allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch
---
# 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:-}" \
"$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 |
| `PARALLEL_API_KEY` | Optional | Web search via Parallel AI |
| `BRAVE_API_KEY` | Optional | Web search via Brave Search |
| `OPENROUTER_API_KEY` | Optional | Web search via Perplexity Sonar Pro |
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.README.md
# /last30days v2.1 > **OpenClaw Adaptation:** This version includes `last30days-synthesize.py` for Gemini-powered briefings and prompts. For the original Claude Code version, see [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill) by [@mvanhorn](https://x.com/mvanhorn). **The AI world reinvents itself every month. This skill keeps you current.** /last30days researches your topic across Reddit, X, YouTube, and the web from the last 30 days, finds what the community is actually upvoting, sharing, and saying on camera, and writes you a prompt that works today, not six months ago. Whether it's Seedance 2.0 access, Suno music prompts, or the latest Nano Banana Pro techniques, you'll prompt like someone who's been paying attention. **New in V2.1 - three headline features:** 1. **Open-class skill with watchlists.** Add any topic to a watchlist - your competitors, your partners, your board members, an emerging technology - and /last30days re-researches it on demand or via cron. Designed for always-on environments like [Open Claw](https://github.com/openclaw/openclaw) where a bot can run research on a schedule and accumulate findings over time. 2. **YouTube transcripts as a 4th source.** When yt-dlp is installed, /last30days automatically searches YouTube, grabs view counts, and extracts auto-generated transcripts from the top videos. A 20-minute review contains 10x the signal of a single post - now the skill reads it. Inspired by [@steipete](https://x.com/steipete)'s yt-dlp + [summarize](https://github.com/steipete/summarize) toolchain. 3. **Works in OpenAI Codex CLI.** Same skill, same engine. Install to `~/.agents/skills/last30days` and invoke with `$last30days`. Claude Code and Codex users get the same research. **New in V2:** Dramatically better search results. Smarter query construction finds posts that V1 missed entirely, and a new two-phase search automatically discovers key @handles and subreddits from initial results, then drills deeper. Free X search (no xAI key needed), `--days=N` for flexible lookback, and automatic model fallback. [Full changelog below.](#whats-new-in-v2) **The tradeoff:** V2 finds way more content but takes longer - typically 2-8 minutes depending on how niche your topic is. The old V1 was faster but regularly missed results (like returning 0 X posts on trending topics). We think the depth is worth the wait, but if you'd use a faster "quick mode" that trades some depth for speed, let us know: [@mvanhorn](https://x.com/mvanhorn) / [@slashlast30days](https://x.com/slashlast30days). **Best for prompt research**: discover what prompting techniques actually work for any tool (ChatGPT, Midjourney, Claude, Figma AI, etc.) by learning from real community discussions and best practices. **But also great for anything trending**: music, culture, news, product recommendations, viral trends, or any question where "what are people saying right now?" matters. ## Installation ```bash # Clone th
_meta.json
{
"ownerId": "kn74qkj5344raj0tk9txa53xvh81a244",
"slug": "last30days-gemini",
"version": "1.0.0",
"publishedAt": 1771322536006
}variants/open/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
```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/ralph-oei/last30days-gemini",
"sourceUrl": "https://clawhub.ai/ralph-oei/last30days-gemini",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ralph-oei-last30days-gemini/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ralph-oei-last30days-gemini/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "546 downloads",
"href": "https://clawhub.ai/ralph-oei/last30days-gemini",
"sourceUrl": "https://clawhub.ai/ralph-oei/last30days-gemini",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.0",
"href": "https://clawhub.ai/ralph-oei/last30days-gemini",
"sourceUrl": "https://clawhub.ai/ralph-oei/last30days-gemini",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-17T10:02:16.006Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ralph-oei-last30days-gemini/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ralph-oei-last30days-gemini/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.0",
"description": "- Initial release of the last30days-gemini skill. - Researches any topic from the past 30 days using X (Twitter), YouTube transcripts, and web search. - Outputs structured JSON for AI-powered expert briefings and copy-paste prompts via Gemini. - Supports multiple output formats: JSON, compact text, and markdown reports. - Requires minimal setup with API keys and environment variables. - Based on and crediting the original last30days skill, with added Gemini synthesis integration.",
"href": "https://clawhub.ai/ralph-oei/last30days-gemini",
"sourceUrl": "https://clawhub.ai/ralph-oei/last30days-gemini",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-17T10:02:16.006Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
