Content Scout (v2, generisch)
Zweck
Aus Marktsignalen (RSS, Web, Trends) tägliche oder wöchentliche Post-Drafts produzieren, die zur Positionierung des Users passen und SEO-relevant sind. Themen, Quellen, Output, Brand-Voice und Frequenz kommen aus config.md neben diesem Skill. Der Skill bleibt portabel.
Phase 0: Setup laden
config.mdaus demselben Ordner laden.- Wenn nicht vorhanden ODER User-Argument ist
setup: ladeSETUP_WIZARD.mdaus demselben Ordner und folge dem Wizard-Ablauf. Wizard schreibt am Endeconfig.md. Danach mit Schritt 2 weitermachen. - Wenn vorhanden: lesen und parsen.
- Wenn nicht vorhanden ODER User-Argument ist
- Master-Rules laden, sofern im Vault vorhanden (
05_System/_about/master-rules.md). Wenn nicht vorhanden: weiter. - Brand-Referenz aus Config laden (z.B.
brand.md).
Aus Config lesen:
themes: Liste der Kernthemen mit Keywordssources: RSS-Feeds, Websites, optionale Crawl-Targetsoutput_path: Wohin geschrieben wirdfrequency: daily | weeklydrafts_per_run: Anzahl Post-Drafts pro Laufchannels: Liste von Kanälen (linkedin, x, blog, newsletter)brand_voice_ref: Pfad zur Brand-Dateilanguage: de | enmin_signal_score: Schwelle 0 bis 4keyword_sources: welche Tools für Keyword-Recherche aktiviert sind (ahrefs, similarweb, pytrends, perplexity)competitor_domains: optionale Domain-Liste für SimilarWeb-Benchmarking
Phase 1: Quellen scannen
Für jede Quelle in sources:
-
RSS-Feeds (Priorität 1)
- Tool:
firecrawl_scrapemit URL des Feeds, formats: ["markdown"] - Fallback:
web_fetch - Items der letzten N Stunden (daily = 24h, weekly = 168h)
- Extrahiere: Titel, URL, Veröffentlichungsdatum, Snippet
- Tool:
-
Web-Quellen (Priorität 2)
- Tool:
firecrawl_scrapeeinzelne Seiten, oderfirecrawl_crawlfür Sektionen - Nur wenn in Config explizit gelistet
- Tool:
-
Optional: Perplexity Reasoning
- Tool:
perplexity-mcpmit Fokus-Thema, wenn User Argument übergeben hat - Liefert kuratierte aktuelle Quellen
- Tool:
Cap: max 50 Roh-Items pro Lauf. Mehr wird gestaucht, nicht erweitert.
Phase 2: Themen-Match (Relevanz-Filter)
Pro Item:
- Match gegen
themes[].keywords(case-insensitive, Whole-Word + Stemming light) - Score 0 bis 4 nach Kriterien:
- Themen-Match in Titel oder Snippet
- Aktualität (innerhalb der Frequenz-Fenster)
- Substanz (Daten, Studie, Case, konkrete Zahl, namhafte Quelle, nicht reine Meinung)
- Actionability (kann daraus ein Post werden mit eigenem Take)
Nur Items mit Score >= min_signal_score (default 3) weiter.
Phase 3: SEO und Keyword-Check (Cascade)
Für die Top N Items (N = drafts_per_run x 2, für Auswahl). Skill nutzt die beste verfügbare Datenquelle aus der Cascade. Bei jeder Stufe wird geprüft ob das Tool authentifiziert ist (sonst skip).
Cascade-Reihenfolge (beste Daten zuerst)
Stufe 1: Ahrefs (wenn keyword_sources.ahrefs: true und MCP authentifiziert)
- Tool:
mcp__plugin_marketing_ahrefs__* - Pro Themen-Cluster: Keyword Volume, Difficulty, Related Keywords mit Volumen
- Output: harte Suchvolumen-Zahlen, SEO-Difficulty pro Keyword
- Ergebnis: priorisierte Keyword-Liste mit Volume und Difficulty Score
Stufe 2: SimilarWeb (wenn keyword_sources.similarweb: true und MCP authentifiziert)
- Tool:
mcp__plugin_marketing_similarweb__* - Pro Domain in
competitor_domains(oder Branchen-Auto-Discovery): Top Keywords der Konkurrenz, Traffic-Trends, Branchen-Benchmarks - Output: Themen die in der Branche aktuell Traffic ziehen
- Ergebnis: Themen-Discovery + Konkurrenz-Keywords
Stufe 3: pytrends (Google Trends) (wenn keyword_sources.pytrends: true)
- Bash:
pip install pytrends --break-system-packages(einmalig) - Für jeden Themen-Cluster:
interest_over_timeder letzten 30 Tage,related_queries,trending_searchesim Zielmarkt (geoaus Config) - Output: Rising-Queries, Top-Queries pro Cluster, Trend-Richtung
Stufe 4: Perplexity (wenn keyword_sources.perplexity: true oder als Fallback)
- Tool:
mcp__perplexity-mcp__searchmit Query "what are people searching about [topic] right now [Jahr] in [geo]" - Output: qualitative Trending-Signale, kuratierte Quellen
- Auch nützlich für Reasoning warum ein Thema gerade hochkommt
Stufe 5: Config-Backup-Keywords
- Aus jedem Theme die
backup_keywordsals Floor - Wird immer als Sicherheit hinzugefügt, auch wenn andere Stufen Daten liefern
Datenfusion
Pro Themen-Cluster:
- Sammle alle Keywords aus aktiven Stufen
- Dedupliziere (case-insensitive)
- Wenn Ahrefs Daten hat: sortiere nach
volume / max(difficulty, 1)(Sweet Spot) - Wenn nur Trends/Perplexity: sortiere nach "Rising"-Flag, dann Trend-Slope
- Cap: max 20 Keywords pro Cluster für weitere Verarbeitung
Keyword-Set pro Draft zusammenbauen
- 1 Primary Keyword (höchstes Volume bei akzeptabler Difficulty, oder stärkstes Rising-Signal)
- 2 bis 3 Secondary Keywords (Related Queries oder mittleres Volumen)
- 3 bis 5 Hashtags (für LinkedIn/X), wenn Config Hashtags zulässt
- Nur Keywords aufnehmen die echtes Suchvolumen, Rising-Signal oder qualitative Bestätigung haben
- Im Output markieren welche Quelle das Keyword geliefert hat (Ahrefs/SimilarWeb/Trends/Perplexity/Config)
Fehlerbehandlung Cascade
- Tool nicht auth oder Error: Stufe skip, weiter mit nächster
- Alle Stufen 1 bis 4 fehlgeschlagen: Stufe 5 (Config-Backup) als alleinige Quelle, im Output prominent markieren
- Log welche Stufen genutzt wurden in
scout-runs.jsonl
Phase 4: Draft-Erstellung
Aus Top-Items die besten drafts_per_run auswählen. Für jeden Draft:
-
Lade Brand-Voice (
brand_voice_ref). -
Pro Channel in
channelseinen Draft erzeugen. -
Struktur Draft:
- Hook (1 Satz, scharf, ohne Smalltalk)
- Substanz (2 bis 4 Sätze: was, warum, was bedeutet das)
- Take (1 Satz, eigene Sicht, kein Hedging)
- CTA oder Frage (1 Satz, optional)
- Keywords organisch eingebaut, nicht angeklebt
- Hashtags am Ende (nur wenn Channel und Config das wollen)
-
Channel-spezifische Constraints:
- X: max 280 Zeichen, kein Hashtag-Spam, max 2 Hashtags
- LinkedIn: 800 bis 1300 Zeichen optimal, Zeilenumbrüche für Lesbarkeit, max 5 Hashtags, erste Zeile = Hook (Above-the-Fold)
- Blog: 500 bis 1500 Wörter, H2-Struktur, Keyword in Title und ersten 100 Wörtern
- Newsletter: persönlicher Ton, kein Hashtag
-
Brand-Voice-Regeln einhalten (aus
brand_voice_ref): keine Em-Dashes, keine Verbots-Wörter, Sprache aus Config.
Phase 5: Output schreiben
Datei: {output_path}/[YYYY-MM-DD] Content Drafts.md
Struktur:
# Content Drafts [Datum]
## Quelle-Übersicht
- Gescannte Quellen: [N]
- Roh-Items: [N]
- Nach Filter: [N]
- Draft-Kandidaten: [N]
- Keyword-Quellen genutzt: [Ahrefs|SimilarWeb|Trends|Perplexity|Config]
## Trend-Snapshot
- Rising Keywords [Markt]: [Liste]
- Top Themen heute: [Liste]
- Branchen-Keywords (SimilarWeb, optional): [Liste]
- Hartes Volumen (Ahrefs, optional): [Top 5 Keywords mit Volume und Difficulty]
---
## Draft 1: [Working Title]
**Quelle:** [URL]
**Veröffentlicht:** [Datum]
**Themen-Match:** [Theme-Name]
**Signal-Score:** [X/4]
**Primary Keyword:** [Wort] (Source: [Ahrefs|SimilarWeb|Trends|Perplexity|Config], Volume: [N], Difficulty: [N])
**Secondary Keywords:** [Liste mit Source-Tags]
### LinkedIn Draft
[Volltext]
Hashtags: [Liste]
### X Draft
[Volltext, max 280]
---
## Draft 2: [...]
[...]
---
## Archiv (nicht gedraftet, evtl. später)
- [Item Titel] -> [URL] (Score X/4)
Phase 6: Chat-Zusammenfassung
Kurz im Chat:
- Anzahl gefundener Signale
- Top 1 Draft als Vorschau (LinkedIn-Version)
- Link zur vollständigen Datei
- Hinweis auf Trend-Snapshot
Keine vollständige Wiederholung. Detail in der Datei.
Phase 7: Logging
- Run-Log schreiben nach Pfad in dieser Reihenfolge:
- Wenn
scout_log_pathin Config gesetzt: dort - Sonst wenn
05_System/memory/existiert (Obsidian-Vault-Setup): `05_System/memory/scout-runs.j
- Wenn