Einstieg | 15 Minuten | Beherrschen Sie plattformübergreifende Informationsbeschaffung, verdoppeln Sie Ihre Recherche-Effizienz
TIP
last30days-Skill ist derzeit der umfassendste KI-Recherche-Skill auf ClawHub. Er unterstützt die parallele Suche in über 10 Signalquellen, bietet automatische Dublettenentfernung und Bewertung sowie die Erstellung faktischer Berichte mit Quellenangaben.
GitHub: mvanhorn/last30days-skill
Zielgruppenprofil
- Entwickler mit 1-5 Jahren Erfahrung
- Personen, die täglich KI-Tools auswählen, Wettbewerbsanalysen durchführen oder Technologietrends verfolgen müssen
- Anwender mit Kommandozeilen-Grundlagen, vertraut mit Claude Code oder Codex CLI
- Nutzer, die den fragmentierten Prozess des "Durchsuchens von Reddit/HN nach Informationen" hinter sich lassen wollen
Kernabhängigkeiten und Umgebung
| Abhängigkeit | Beschreibung | Erforderlich |
|---|---|---|
| Node.js 18+ | Skill-Laufzeitumgebung | Ja |
| Python 3.10+ | Hauptskriptsprache | Ja |
| ScrapeCreators API Key | Reddit/TikTok/Instagram 3-in-1 | Ja |
| Claude Code oder Codex CLI | Skill-Ausführungsumgebung | Ja |
| X AUTH_TOKEN / CT0 | X-Suche Authentifizierung (optional) | Nein |
| Bluesky App Passwort | Bluesky-Suche (optional) | Nein |
| Polymarket Gamma API | Prognosemarktdaten (kostenlos) | Nein |
Vollständige Projektstruktur
last30days-skill/
├── SKILL.md # Skill-Definitionsdatei (bereitgestellt unter ~/.claude/skills/)
├── SPEC.md # Vollständige technische Spezifikation
├── CLAUDE.md # Claude Code Entwicklungsleitfaden
├── scripts/
│ ├── last30days.py # Python-Haupteinstieg (Recherche-Engine)
│ ├── sync.sh # Bereitstellungs-Synchronisationsskript
│ └── lib/
│ ├── __init__.py # Paket-Einstieg
│ ├── env.py # Laden von Umgebungsvariablen
│ ├── dates.py # Zeiträume und Konfidenzberechnung
│ ├── cache.py # 24h TTL Cache
│ ├── http.py # Standardbibliothek HTTP-Client
│ ├── models.py # Automatische Auswahl OpenAI/xAI Modelle
│ ├── openai_reddit.py # Reddit-Suche (OpenAI Responses API)
│ ├── xai_x.py # X-Suche (xAI Responses API)
│ ├── reddit_enrich.py # Abruf vertiefter Reddit-Metriken
│ ├── hackernews.py # Hacker News (Kostenlose Algolia API)
│ ├── polymarket.py # Polymarket Prognosemarkt (Gamma API)
│ ├── bluesky.py # Bluesky/AT Protocol Suche
│ ├── truthsocial.py # Truth Social Suche
│ ├── normalize.py # Raw Response → Normalisiertes Schema
│ ├── score.py # Multisignal-Bewertungsmodell
│ ├── dedupe.py # Erkennung von Beinahe-Duplikaten
│ ├── render.py # Markdown / JSON Bericht-Rendering
│ └── schema.py # Typdefinitionen und Validierung
├── skills/last30days/
│ └── last30days.sh # Shell-Wrapper (Claude Code Skill Einstieg)
└── fixtures/ # Testdaten
Schritt 1: Installation und Authentifizierung
1.1 Installation via Claude Code Plugin (Empfohlen)
Wenn Sie bereits Claude Code nutzen, erledigen Sie dies direkt über Plugin-Befehle:
/plugin marketplace add mvanhorn/last30days-skill
/plugin install last30days@last30days-skill
Oder nutzen Sie das offizielle Tool ClawHub zur Installation:
clawhub install last30days-official
WARNING
Die Plugin-Installation setzt voraus, dass Ihre Claude Code Version den Befehl /plugin unterstützt. Bitte prüfen Sie: claude --version >= 1.0.
1.2 Manuelle Installation via Git Clone
Sie möchten keine Plugins nutzen? Klonen Sie das Repository direkt lokal:
# In das Claude Code Skills Verzeichnis klonen
git clone https://github.com/mvanhorn/last30days-skill.git \
~/.claude/skills/last30days
# Verzeichnis aufrufen und Dateien prüfen
cd ~/.claude/skills/last30days
ls -la scripts/
1.3 ScrapeCreators API Key konfigurieren (Erforderlich)
Dies ist der zentrale Zugang für Reddit, TikTok und Instagram. Ein Key reicht für alles:
- Besuchen Sie scrapecreators.com, registrieren Sie sich und fordern Sie einen API-Key an.
- Konfigurationsdatei erstellen:
mkdir -p ~/.config/last30days
cat > ~/.config/last30days/.env << 'EOF'
# Erforderlich: Reddit + TikTok + Instagram 3-in-1 Key
SCRAPECREATORS_API_KEY=sc_xxxxxxxxxxxxxxxxxxxx
# Optional: OpenAI API (kann nach Codex-Login entfallen)
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
EOF
chmod 600 ~/.config/last30days/.env # Sensible Datei schützen
1.4 Optional: X / Bluesky Authentifizierung konfigurieren
X-Suche (Empfohlene Methode):
# 1. Bei x.com anmelden, Browser DevTools öffnen (F12)
# 2. Application → Cookies → Werte von auth_token und ct0 kopieren
# 3. In .env schreiben
cat >> ~/.config/last30days/.env << 'EOF'
# X-Suche Authentifizierung (Cookie-basiert)
AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxx
CT0=xxxxxxxxxxxxxxxxxxxx
# X-Alternative: xAI API (kein Cookie erforderlich)
XAI_API_KEY=xai-xxxxxxxxxxxxxxxxxxxx
EOF
Bluesky-Suche:
# 1. Unter bsky.app/settings/app-passwords ein App-Passwort erstellen
# 2. In .env schreiben
cat >> ~/.config/last30days/.env << 'EOF'
# Bluesky/AT Protocol
BSKY_HANDLE=ihrhandle.bsky.social
BSKY_APP_PASSWORD=xxxx-xxxx-xxxx-xxxx
EOF
TIP
X-Cookies und Bluesky-Passwörter sind optional. Wer es einfach mag: Die kostenlosen Quellen Polymarket, Hacker News und Reddit decken bereits die meisten Szenarien ab.
1.5 Installation erfolgreich verifizieren
# Einfachen Test durchführen (--mock nutzt lokale Testdaten ohne API-Verbrauch)
python3 ~/.claude/skills/last30days/scripts/last30days.py "Claude Code tips" --mock --emit=compact
Wenn Sie eine Ausgabe wie diese sehen, ist alles bereit:
=== last30days Report: Claude Code tips ===
Sources: reddit, hackernews | Time: 2026-03-25 | Mode: mock
[results...]
Schritt 2: Grundlegende Bedienung
2.1 /last30days Kommandozeile
In Claude Code direkt den Befehl eingeben:
/last30days best Claude Code prompts
Via Codex CLI:
python3 ~/.claude/skills/last30days/scripts/last30days.py "best Claude Code prompts" --emit=compact
TIP
Standardmäßig werden die populärsten Inhalte der letzten 30 Tage durchsucht, inklusive Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, Bluesky usw. Eine Suche dauert in der Regel 2-8 Minuten.
2.2 Berichtsstruktur verstehen
Nach Abschluss erhalten Sie einen strukturierten Bericht, etwa so:
# last30days Report: best Claude Code prompts
## Sources Searched (6 active)
reddit | x | hackernews | polymarket | youtube | reddit_threads
## Top Findings
...
## Best Practices (Von der Community bestätigte Methoden)
...
## Prompt Pack (Direkt kopierbar)
...
## Recent Developments
...
## References (Mit Quelllinks)
...
Der Bericht führt automatisch folgendes aus:
- Konvergenzerkennung: Inhalte, die auf mehreren Plattformen erwähnt werden, erhalten eine höhere Gewichtung.
- Deduplizierung: Bei semantisch ähnlichen Posts wird nur der qualitativ beste behalten.
- Aktualitäts-Verlust: Je neuer der Inhalt, desto höher das Ranking.
- Quellenangabe: Jede Schlussfolgerung ist mit einem Originallink versehen.
2.3 --quick Schnellmodus
In Eile? Mit --quick überspringen Sie zeitintensive Tiefensuchen:
python3 ~/.claude/skills/last30days/scripts/last30days.py \
"Cursor AI vs Windsurf" \
--quick \
--emit=compact
2.4 --days=N Benutzerdefiniertes Zeitfenster
Nicht auf 30 Tage begrenzt, der Zeitraum ist anpassbar:
python3 ~/.claude/skills/last30days/scripts/last30days.py \
"OpenClaw latest news" \
--days=7 \
--emit=compact
2.5 --refresh Cache-Aktualisierung erzwingen
Ergebnisse werden standardmäßig für 24 Stunden zwischengespeichert. Um eine neue Suche zu erzwingen:
python3 ~/.claude/skills/last30days/scripts/last30days.py \
"AI code editors comparison" \
--refresh \
--emit=compact
Schritt 3: Parallele Suchmechanismen
3.1 Funktionsweise der Reddit-Suche
Reddit ist die wichtigste Signalquelle. Der Skill arbeitet zweistufig:
# scripts/lib/openai_reddit.py (vereinfacht)
def search_reddit(query: str, days: int = 30) -> list[dict]:
# Schritt 1: Erste Entdeckung via OpenAI Responses API + web_search
response = openai.responses.create(
model="gpt-4o",
input=f"Find active Reddit discussions about: {query}",
tools=[{"type": "web_search"}],
max_tokens=2000
)
# Schritt 2: Abruf der Raw-Post-JSON für echte Upvote-/Kommentarzahlen
enriched = reddit_enrich.fetch_threads(response.urls, days)
return enriched
TIP
Seit v2.9 nutzt Reddit standardmäßig ScrapeCreators. Ein Key deckt Reddit, TikTok und Instagram ab – stabiler als frühere Einzellösungen.
3.2 Hacker News Integration
Kostenloser Zugang ohne API-Key:
# scripts/lib/hackernews.py
def search_hackernews(query: str, days: int = 30) -> list[dict]:
# Die HN Algolia API ist frei zugänglich
url = "https://hn.algolia.com/api/v1/search"
params = {
"query": query,
"tags": "story",
"numericFilters": f"created_at_i>{cutoff_timestamp(days)}"
}
resp = requests.get(url, params=params)
items = resp.json()["hits"]
# Sortierung nach Points + Anzahl der Kommentare
return sorted(items, key=lambda x: x["points"] + x["num_comments"] * 2, reverse=True)
3.3 Polymarket Prognosemarktdaten
Das Alleinstellungsmerkmal von last30days: Es schaut nicht nur darauf, was die Leute "sagen", sondern worauf sie ihr "Geld setzen":
# scripts/lib/polymarket.py
def search_polymarket(query: str) -> list[dict]:
# Gamma API kostenloser Zugriff
url = "https://gamma-api.polymarket.com/markets"
resp = requests.get(url, params={"topic": query, "limit": 20})
markets = resp.json()
# Fünf-Faktoren-Bewertungsmodell
for m in markets:
m["composite_score"] = (
m["text_relevance"] * 0.30 +
m["volume_24h"] * 0.30 +
m["liquidity"] * 0.15 +
m["price_velocity"] * 0.15 +
m["outcome_competitiveness"] * 0.10
)
return sorted(markets, key=lambda x: x["composite_score"], reverse=True)
Praxisbeispiel: Bei einer Suche nach "OpenClaw" sehen Sie nicht nur Reddit-Posts, sondern auch Polymarket-Daten zu "monatlich aktiven Usern". Quoten aus Echtgeldeinsätzen sind oft aussagekräftiger als jeder Post.
3.4 Multisignal-Bewertungsmodell
Alle Ergebnisse fließen in eine einheitliche Scoring-Pipeline:
# scripts/lib/score.py
def compute_composite_score(item: dict, query: str, days: int) -> float:
# 1. Textrelevanz (Bidirektionale Ähnlichkeit + Synonym-Erweiterung)
text_score = bidirectional_similarity(item["text"], query)
# 2. Interaktionsdynamik-Normalisierung
engagement_score = normalize_velocity(item["engagement"])
# 3. Quellautoritäts-Gewichtung (HN > Reddit > X > TikTok)
authority_score = SOURCE_WEIGHTS[item["source"]]
# 4. Plattformübergreifende Konvergenz (Bonus für Präsenz auf mehreren Plattformen)
convergence_score = detect_convergence(item, all_results)
# 5. Aktualitätsverlust (Exponentieller Verfall von 0.98 pro Tag)
recency_score = 0.98 ** days_since_post(item["timestamp"])
return (
text_score * 0.35 +
engagement_score * 0.25 +
authority_score * 0.20 +
convergence_score * 0.10 +
recency_score * 0.10
)
Der Blindtest-Score stieg von v1 (3.73/5.0) auf v2.5 (4.38/5.0), eine Steigerung um ca. 17%.
Schritt 4: Vergleichsmodus (X vs. Y)
4.1 Fallbeispiel "Cursor vs. Windsurf"
Eines der coolsten Features: Der direkte Vergleich von zwei Tools.
/last30days cursor vs windsurf
Oder via Kommandozeile:
python3 ~/.claude/skills/last30days/scripts/last30days.py \
"cursor vs windsurf" \
--emit=compact
4.2 Paralleler Drei-Wege-Recherchemechanismus
Der Vergleichsmodus löst drei unabhängige Recherchen aus:
# scripts/lib/score.py (Zweig für Vergleichsmodus)
def run_comparative_mode(query_a: str, query_b: str, base_query: str):
# Drei parallele Suchen
results_a = run_research(query_a) # Weg 1: Nur Cursor
results_b = run_research(query_b) # Weg 2: Nur Windsurf
results_base = run_research(base_query) # Weg 3: Vergleichsdiskussionen
# Erstellung des Side-by-Side Berichts
return render_comparison(results_a, results_b, results_base)
4.3 Interpretation des Vergleichsberichts
Die Ausgabe folgt diesem Schema:
## Comparative Analysis: Cursor vs Windsurf
### Strengths
| Dimension | Cursor | Windsurf |
|---|---|---|
| Code Completion Speed | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Context Understanding | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Multi-file Editing | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Community Ecosystem | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
### Weaknesses
| Dimension | Cursor | Windsurf |
|---|---|---|
| Memory Footprint | High | Medium |
| Offline Support | Poor | Fair |
### Community Sentiment (30-day)
- Cursor: 78% positive (1,240 discussions)
- Windsurf: 65% positive (890 discussions)
### Data-Driven Verdict
Cursor führt bei Community-Engagement und Code-Completion Qualität.
Windsurf überzeugt durch Kontextverständnis bei komplexen Refactorings.
**Empfehlung**: Cursor für tägliches Coding; Windsurf für Architekturplanung.
Schritt 5: Einbettung in andere Skills / CI-Pipelines
5.1 Injektion als Kontext
Andere Skills können Rechercheergebnisse direkt referenzieren:
## Recent Research Context
!python3 ~/.claude/skills/last30days/scripts/last30days.py \
"your research topic" \
--emit=context
5.2 Kontext aus Datei lesen
## Research Context
!cat ~/.local/share/last30days/out/last30days.context.md
5.3 JSON-Ausgabe für CI/CD
Ergebnisse in automatisierte Workflows einspeisen:
# JSON-Format für Programme ausgeben
python3 ~/.claude/skills/last30days/scripts/last30days.py \
"best LLM for code review 2026" \
--emit=json > research.json
# Die Top 3 empfohlenen Modelle prüfen
python3 -c "
import json
data = json.load(open('research.json'))
for r in data['top_results'][:3]:
print(f\"- {r['title']} (score: {r['score']:.2f})\")
"
5.4 Projektbezogener .env-Override
Statt globaler Konfiguration können Sie eine .claude/last30days.env im Projektstamm nutzen:
mkdir -p .claude
cat > .claude/last30days.env << 'EOF'
# Projektspezifische API-Keys
SCRAPECREATORS_API_KEY=sc_project_specific_key
OPENAI_API_KEY=sk-project-specific-key
EOF
TIP
Besonders nützlich für Teams – jeder nutzt eigene Keys bei identischem Skill-Verhalten.
5.5 Automatische Prüfung beim Session-Start
In v2.9.5 prüft Claude Code beim Start automatisch die Vollständigkeit Ihrer .env Konfiguration:
# Manuelle Prüfung auslösen
python3 ~/.claude/skills/last30days/scripts/last30days.py \
--validate-config
Fehlende Keys werden explizit angezeigt:
❌ SCRAPECREATORS_API_KEY is missing (required)
✅ OPENAI_API_KEY found
⚠️ BSKY_HANDLE is missing (optional)
Fehlerbehebung
Q1: Fehler SCRAPECREATORS_API_KEY fehlt
Ursache: Umgebungsvariablen nicht korrekt geladen.
Lösung:
# Key-Präsenz prüfen
cat ~/.config/last30days/.env | grep SCRAPECREATORS_API_KEY
# Bei Plugin-Installation manuell synchronisieren
bash ~/.claude/skills/last30days/scripts/sync.sh
Q2: X-Suche liefert keine Ergebnisse
Ursache: AUTH_TOKEN / CT0 Cookie abgelaufen.
Lösung:
# 1. Erneut bei x.com anmelden
# 2. Aktuelle Cookies kopieren und .env aktualisieren
# Oder xAI API nutzen (erfordert keine Cookies)
echo "XAI_API_KEY=xai-ihrkey" >> ~/.config/last30days/.env
Q3: Suche ist sehr langsam (> 10 Min)
Ursache: Parallele Abfrage vieler Quellen; Nischen-Themen erfordern API-Retries.
Lösung:
# 1. Mit --quick Zeit sparen
python3 ~/.claude/skills/last30days/scripts/last30days.py "niche topic" --quick
# 2. Einzelne Quellen testen
python3 ~/.claude/skills/last30days/scripts/last30days.py "topic" --sources=reddit
Q4: Polymarket liefert irrelevante Märkte
Ursache: Stichwortbasierter Abgleich; für manche Themen gibt es keine aktiven Märkte.
Lösung:
# Manuelle Stichworterweiterung
python3 ~/.claude/skills/last30days/scripts/last30days.py \
"AI coding assistant" \
--polymarket-tags="artificial intelligence,llm,gpt" \
--emit=compact
Q5: Claude Code meldet Permission denied bei Skripten
Ursache: Fehlende Ausführungsrechte.
Lösung:
chmod +x ~/.claude/skills/last30days/skills/last30days.sh
chmod +x ~/.claude/skills/last30days/scripts/last30days.py
Q6: Wenige Reddit-Posts trotz bekannter Diskussionen
Ursache: Key-Format für ScrapeCreators (v2.9+) fehlerhaft.
Lösung:
# API-Key validieren
curl -H "x-api-key: sc_ihrkey" https://api.scrapecreators.com/v1/reddit/search?q=test
# Falls nötig, ScrapeCreators erzwingen
echo "FORCE_SCRAPECREATORS=1" >> ~/.config/last30days/.env
Weiterführende Richtungen
1. Scoring-Modell anpassen
In scripts/lib/score.py sind die Gewichte festgelegt. Für eigene Präferenzen können Sie den Code forken:
# Hacker News Gewichtung erhöhen
SOURCE_WEIGHTS = {
"hackernews": 0.35, # Von 0.20 erhöht
"reddit": 0.25,
"x": 0.15,
"polymarket": 0.15,
"youtube": 0.10,
}
2. Eigene Quellen hinzufügen
GitHub Issues oder LinkedIn einbinden? Nutzen Sie die Schnittstelle in hackernews.py als Vorlage, erstellen Sie ein Modul in scripts/lib/ und registrieren Sie es in last30days.py.
3. Recherche-Automatisierung
Regelmäßige Berichte via Cron-Job:
# Täglich 8 Uhr morgens Wochenbericht erstellen
0 8 * * * python3 ~/.claude/skills/last30days/scripts/last30days.py \
"AI developer tools weekly" \
--days=7 \
--emit=md \
--output ~/Documents/Last30Days/ai-tools-weekly-$(date +\%Y-\%m-\%d).md
4. Anbindung an Wissensdatenbanken
Rechercheergebnisse direkt in Ihre RAG-Pipeline einspeisen:
python3 ~/.claude/skills/last30days/scripts/last30days.py \
"Claude Code advanced techniques" \
--emit=context > ~/.knowledge/last30_context.md
Ressourcen
- GitHub: mvanhorn/last30days-skill
- ClawHub: last30days-official
- ScrapeCreators API: scrapecreators.com
- OpenClaw Webseite: openclaw.ai
- Hacker News Algolia API: hn.algolia.com/api
- Polymarket Gamma API: gamma-api.polymarket.com