last30days-Skill Einstiegshilfe: Der Informationssammler für Reddit/HN/Polymarket

March 25, 2026

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ängigkeitBeschreibungErforderlich
Node.js 18+Skill-LaufzeitumgebungJa
Python 3.10+HauptskriptspracheJa
ScrapeCreators API KeyReddit/TikTok/Instagram 3-in-1Ja
Claude Code oder Codex CLISkill-AusführungsumgebungJa
X AUTH_TOKEN / CT0X-Suche Authentifizierung (optional)Nein
Bluesky App PasswortBluesky-Suche (optional)Nein
Polymarket Gamma APIPrognosemarktdaten (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:

  1. Besuchen Sie scrapecreators.com, registrieren Sie sich und fordern Sie einen API-Key an.
  2. 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

Updated March 25, 2026