Skip to content
Back to skills

Last30days Gemini

ASecurity

Research any topic from the last 30 days. Sources: X (Twitter), YouTube transcripts, web search. Generates expert briefings and copy-paste prompts using Gemini.

  • 14 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 7, 2026
content-marketingpythongobashnodegitapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 7, 2026

npx -y skills add modbender/skill-library-mcp --skill last30days-gemini --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Last30days Gemini?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Last30days Gemini
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/modbender-last30days-gemini/badge)](https://www.skillsdirectory.com/skills/modbender-last30days-gemini)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
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.load(urllib.request.urlopen(req))['candidates'][0]['content']['parts'][0]['text'])
"
```

## Attribution

- **Original Author:** [Mike Van Horn](https://x.com/mvanhorn) ([mvanhorn](https://github.com/mvanhorn))
- **Original Repository:** [github.com/mvanhorn/last30days-skill](https://github.com/mvanhorn/last30days-skill)
- **License:** MIT (per original)
- **Contributors:** Thanks to [@steipete](https://x.com/steipete) for yt-dlp + summarize inspiration

This skill extends the original with Gemini synthesis for automated briefings.

Files in this skill

  • README.md54.1 KB
  • SKILL-original.md14.8 KB
  • SKILL.md3.5 KB
  • SPEC.md3.1 KB
  • TASKS.md1.5 KB
  • agents/openai.yaml456 B
  • plans/feat-add-websearch-source.md14.6 KB
  • plans/fix-strict-date-filtering.md11.3 KB
  • scripts/briefing.py8.2 KB
  • scripts/last30days-synthesize.py4.9 KB
  • scripts/last30days.py42.9 KB
  • scripts/lib/__init__.py30 B
  • scripts/lib/bird_x.py14.7 KB
  • scripts/lib/brave_search.py6.1 KB
  • scripts/lib/cache.py4.8 KB
  • scripts/lib/dates.py3.3 KB
  • scripts/lib/dedupe.py3.6 KB
  • scripts/lib/entity_extract.py4.2 KB
  • scripts/lib/env.py8.8 KB
  • scripts/lib/http.py5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…