morning-ai: MorningAI-Berichtsgenerator
Berechtigungen im Überblick: Sammelt öffentliche Daten von Reddit, Hacker News, GitHub, HuggingFace, arXiv und X/Twitter. Erfordert optionale API-Schlüssel in
.envoder~/.config/morning-ai/.env. Schreibt Berichtsdateien in das aktuelle Arbeitsverzeichnis. Siehe Konfiguration für Details.
Verfolge 80+ KI-Entitäten aus 6 Quellen. Sammle Aktualisierungen der letzten 24 Stunden, bewerte und dedupliziere sie und erstelle einen strukturierten täglichen Markdown-Bericht. Deckt 4 Typen ab: Produkt (Feature-Launches, Versionsveröffentlichungen), Modell (neue Modelle, Open-Source-Gewichte), Benchmark (Leaderboard-Änderungen, Paper), Finanzierung (Runden, Übernahmen, Meilensteine).
--intro — Produktvorstellung
Wenn der Benutzer --intro übergibt, zeige die folgende Einführung an und stoppe (fahre nicht mit der Datensammlung fort):
MorningAI — Täglicher KI-Nachrichten-Tracker, der 80+ Entitäten aus 6 Quellen überwacht.
Was es tut:
- Sammelt Aktualisierungen von Reddit, Hacker News, GitHub, HuggingFace, arXiv und X/Twitter
- Bewertet und dedupliziert Einträge auf einer Skala von 1-10 mit quellenübergreifender Überprüfung
- Erstellt strukturierte Markdown-Berichte mit 4 Inhaltstypen: Produkt, Modell, Benchmark, Finanzierung
- Optional: Infografik-Bilder (5 visuelle Stile), Nachrichten-Digests (WeChat/Telegram/Slack), Social-Media-Kopien (X/Xiaohongshu)
Quellen (alle kostenlos, keine API-Schlüssel für die Basisfunktion erforderlich):
| Quelle | Methode | API-Schlüssel |
|---|---|---|
| Öffentliches JSON | Nicht benötigt | |
| Hacker News | Algolia API | Nicht benötigt |
| GitHub | REST API | Optional (GITHUB_TOKEN für höhere Ratenlimits) |
| HuggingFace | Öffentliche API | Nicht benötigt |
| arXiv | Öffentliche API | Nicht benötigt |
| X/Twitter | Websuche | Nicht benötigt |
Schnellstart:
/morning-ai # Mit Standardeinstellungen ausführen (Englisch, alle Typen)
/morning-ai --lang zh # Chinesischer Bericht
/morning-ai --depth deep # Umfassende Sammlung
/morning-ai --exclude Funding # Finanzierungsnachrichten überspringen
Optionale Funktionen (erfordern API-Schlüssel):
- Infografik-Bilder: setze
IMAGE_GEN_PROVIDER+ Provider-API-Schlüssel - Social-Media-Kopie: setze
SOCIAL_ENABLED=true - Nachrichten-Digest: setze
MESSAGE_ENABLED=true
Konfigurationsdatei: ~/.config/morning-ai/.env — führe /morning-ai ohne Konfiguration aus, um die geführte Einrichtung zu starten.
Version: 1.2.9 | GitHub | ClawHub
Nach der Anzeige der Einführung stoppen. Fahre nicht mit Schritt 0 oder der Datensammlung fort.
Schritt 0: Konfigurationsprüfung (ERFORDERLICH – muss vor jedem anderen Schritt abgeschlossen werden)
Führe diesen Befehl ZUERST aus, bevor du etwas anderes tust:
if [ -f "$HOME/.config/morning-ai/.env" ] || [ -f ".claude/morning-ai.env" ] || [ -f ".env" ]; then echo "CONFIG_STATUS=READY"; else echo "CONFIG_STATUS=MISSING"; fi
Verzweige basierend auf der Ausgabe:
- Wenn die Ausgabe
CONFIG_STATUS=READYist — lies die Konfigurationsdatei, melde, welche Quellen aktiv sind, und fahre dann mit Schritt 1 fort. - Wenn die Ausgabe
CONFIG_STATUS=MISSINGist — STOPPE. Du MUSST die Ersteinrichtung unten abschließen, bevor du mit Schritt 1 fortfährst.
Ersteinrichtung (wenn MISSING)
KRITISCH: HIER STOPPEN. Du MUSST alle Einrichtungsschritte unten interaktiv mit dem Benutzer abschließen. Führe Schritt 1 (Datensammlung) NICHT aus, bis eine Konfigurationsdatei existiert und die Gateway-Prüfung
READYzurückgibt. Das Ausführen der Datensammlung ohne Konfiguration führt zu unvollständigen Ergebnissen.
Führe den Benutzer interaktiv durch die Einrichtung und warte bei jedem Schritt auf seine Antwort:
- Willkommen — erkläre kurz, was morning-ai tut: verfolgt 80+ KI-Entitäten aus 6 Quellen (Reddit, Hacker News, GitHub, HuggingFace, arXiv, X/Twitter), erstellt bewertete tägliche Berichte
- Zeige, was kostenlos funktioniert — 6 Quellen (5 benötigen keine API-Schlüssel, 1 optional):
- Reddit (öffentliches JSON), Hacker News (Algolia API), HuggingFace (öffentliche API), arXiv (öffentliche API), X/Twitter (Websuche)
- GitHub (öffentliche API, optionales
GITHUB_TOKENfür höhere Ratenlimits)
- Frage den Benutzer, ob er GitHub mit höheren Ratenlimits aktivieren möchte:
| Schlüssel | Quelle | Erhalten unter |
|---|---|---|
GITHUB_TOKEN | GitHub-Releases & Repositorys (höheres Ratenlimit) | https://github.com/settings/tokens |
- Frage nach Infografiken (optional):
| Schlüssel | Beschreibung |
|---|---|
IMAGE_GEN_PROVIDER | Anbieter: gemini | minimax | none (Standard: none) |
IMAGE_STYLE | Stil: classic | dark | glassmorphism | newspaper | tech |
GEMINI_API_KEY | Google Gemini/Imagen (https://aistudio.google.com/apikey) |
MINIMAX_API_KEY | MiniMax global (https://www.minimax.io) |
MINIMAX_API_KEY | MiniMax cn (https://platform.minimaxi.com) |
-
Frage nach Social-Media-Inhaltsverteilung (optional):
- Social-Media-Inhaltsgenerierung aktivieren? Setze
SOCIAL_ENABLED=true - Welche Plattformen? X (Twitter), Xiaohongshu (Little Red Book) oder beide
- Für fortgeschrittene Multi-Account/Multi-Style-Einrichtung erstelle
~/.config/morning-ai/social_channels.json(sieheskills/gen-social/SKILL.mdfür Schema). Für schnelle Single-Channel-Einrichtung setze einfach die UmgebungsvariablenSOCIAL_PLATFORM,SOCIAL_STYLEundSOCIAL_LANG.
- Social-Media-Inhaltsgenerierung aktivieren? Setze
-
Frage nach Nachrichten-Digest (optional):
- Prägnanten Nachrichten-Digest zum Teilen auf Messaging-Plattformen (WeChat, Telegram, Slack) aktivieren?
- Wenn ja: setze
MESSAGE_ENABLED=true - Optionale Einstellungen:
MESSAGE_MIN_SCORE(Standard 5),MESSAGE_MAX_ITEMS(Standard 10),MESSAGE_LINKS(bottomoderinline),MESSAGE_CATEGORY_BALANCE(Standard true, verteilt Slots auf Inhaltstypen)
-
Erstelle die Konfigurationsdatei — sammle die vom Benutzer bereitgestellten Schlüssel und schreibe sie in das Format
SCHLÜSSEL=wert(eine pro Zeile) in~/.config/morning-ai/.env. Erstelle das Verzeichnis bei Bedarf:mkdir -p ~/.config/morning-ai -
Bestätige — zeige an, wie viele Quellen jetzt aktiv sind (N/9)
-
Überprüfe — führe die Gateway-Prüfung erneut aus, um zu bestätigen, dass
CONFIG_STATUS=READYist:if [ -f "$HOME/.config/morning-ai/.env" ] || [ -f ".claude/morning-ai.env" ] || [ -f ".env" ]; then echo "CONFIG_STATUS=READY"; else echo "CONFIG_STATUS=MISSING"; fiFahre nur mit Schritt 1 fort, wenn die Ausgabe
READYist. -
Wenn der Benutzer die API-Schlüsseleinrichtung überspringen und nur kostenlose Quellen verwenden möchte, erstelle zuerst eine minimale Konfigurationsdatei und fahre dann mit Schritt 1 fort:
mkdir -p ~/.config/morning-ai && echo "# morning-ai config — free sources only" > ~/.config/morning-ai/.env
Sprache
| Parameter | Standard | Beispiel |
|---|---|---|
--lang | en (Englisch) | --lang zh (Chinesisch), --lang ja (Japanisch) |
Regeln:
- Standard ist Englisch. Sofern
--langnicht explizit angegeben wird, MUSS der Bericht vollständig auf Englisch verfasst sein. Der gesamte Berichtstext – Titel, Zusammenfassungen, Abschnittsüberschriften, Tabellenbeschriftungen, Aufzählungspunkte, die Analyse „Warum es wichtig ist“ und alle anderen lesbaren Inhalte – müssen auf Englisch sein. - Wenn
--langangegeben wird, verwende diese Sprache für alle lesbaren Inhalte. - Entitätsnamen sind Eigennamen (OpenAI, DeepSeek, Midjourney usw.) – behalte sie unabhängig von der Sprache unverändert bei.
- Wenn Quelldaten in einer anderen Sprache als der Zielsprache vorliegen (z.B. chinesische Quelle → englischer Bericht), übersetze sie während der Berichtserstellung in die Zielsprache. Lasse KEINE unübersetzten Fragmente zurück.
- Die Einstellung
--langgilt auch für den Inhalt von Infografik-Prompts (siehe Schritt 4).
Voraussetzung: Schritt 0 muss
CONFIG_STATUS=READYzurückgegeben haben. Wenn du Schritt 0 nicht abgeschlossen hast, gehe zurück und führe ihn jetzt aus.
Schritt 1: Datensammlung
Führe den Python-Collector aus, um Daten aus automatisierten Quellen zu sammeln:
cd {SKILL_DIR} && python3 skills/tracking-list/scripts/collect.py --date {YYYY-MM-DD} --depth default -o {CWD}/data_{YYYY-MM-DD}.json
Parameter:
--date: Zieldatum, Standard heute (YYYY-MM-DD)--depth: Sammlungstiefe —quick(schnell, weniger Ergebnisse),defaultoderdeep(umfassend)--sources: Nur bestimmte Quellen, z.B.--sources reddit hackernews github-o: Ausgabedateipfad (JSON)
Was es tut:
- Führt 5 Collector gleichzeitig aus (Reddit, HN, GitHub, HuggingFace, arXiv)
- Zeitfenster:
[Gestern 08:00, Heute 08:00) UTC+8 - Pipeline: sammeln → bewerten (1-10) → deduplizieren → quellenübergreifend verknüpfen → Bonuspunkte für Verifizierung
- Gibt strukturiertes JSON mit allen Einträgen, Statistiken und Sammlungsmetadaten zurück
Timeout: Erlaube bis zu 3 Minuten für die Standardtiefe, 5 Minuten für die tiefe.
Wenn der Benutzer --exclude-Typen bereitstellt (z.B. --exclude Funding), notiere, welche Typen in Schritt 3 herausgefiltert werden sollen.
X/Twitter-Suche
Nachdem die automatisierte Sammlung abgeschlossen ist, verwende eine Websuche, um aktuelle X/Twitter-Aktualisierungen von verfolgten Entitäten zu entdecken. Die verfolgten X-Handles sind in {SKILL_DIR}/lib/entities.py unter X_HANDLES aufgelistet.
Suchstrategie: Mehrschichtige Kontenprüfung
Durchsuche X/Twitter in drei Schichten in der Prioritätsreihenfolge:
Schicht 1 – Offizielle Konten (höchste Priorität):
Suche nach aktuellen Beiträgen von offiziellen Unternehmens-/Produktkonten. Handles sind in Entitätsdateien unter {SKILL_DIR}/entities/ aufgelistet.
- Fokus: Modellveröffentlichungen, Produkteinführungen, API-Updates, Preisänderungen
Schicht 2 – CEO-/Kernpersonal-Konten: Überprüfe die Konten wichtiger Personen auf Ankündigungen, Vorschauen und Kontext, den offizielle Konten möglicherweise nicht abdecken. Als „Key People“ in jeder Entitätsdatei aufgelistet.
- Fokus: Frühe Vorschauen, strategischer Kontext, technische Details, wettbewerbsbezogene Kommentare
Schicht 3 – KOLs & Benchmark-Institutionen:
Überprüfe Konten von KI-Meinungsführern und Bewertungsinstitutionen auf unabhängige Analysen, Benchmark-Ergebnisse und trendige Entdeckungen. Siehe {SKILL_DIR}/entities/kol.md und {SKILL_DIR}/entities/benchmarks-academic.md.
- Fokus: Paper-Highlights, Benchmark-Rankings, Community-Trends, unabhängige Tests
Suchdurchführung
Für jede Suchtiefe:
| Tiefe | Schicht 1 (Offiziell) | Schicht 2 (Personal) | Schicht 3 (KOLs) |
|---|---|---|---|
quick | Top 5 Entitäten nach Priorität | Überspringen | Überspringen |
default | Alle wichtigen Entitäten (~20) | Top-CEO-Konten (~10) | Top-KOLs (~5) |
deep | Alle Entitäten mit X-Handles | Alle Personalkonten | Alle KOLs + Benchmark-Konten |
Verwende Websuchabfragen wie:
site:x.com @{handle} since:{gestern}– für spezifische Kontobeiträgesite:x.com "{Entitätsname}" KI-Ankündigung– für breitere Entdeckungsite:x.com KI-Modellveröffentlichung ODER Benchmark ODER Open-Source {Datum}– für trendige KI-Nachrichten
RT-/Zitat-Tweet-Behandlung
Wenn ein entdeckter Beitrag ein Retweet (RT) oder Zitat-Tweet ist:
- Verfolge den ursprünglichen Beitrag – der Ereigniszeitstempel ist die Originalbeitragszeit, nicht die RT-/Zitatzeit
- Überprüfe die Originalbeitragszeit im 24-Stunden-Sammelfenster
[Gestern 08:00, Heute 08:00) UTC+8 - Verwende die URL des Originalbeitrags als
source_url, nicht die RT-/Zitat-URL - Gib den ursprünglichen Autor in
source_labelan (z.B."@AnthropicAI on X (via @karpathy RT)")
Aktualitätsprüfung
- Alle X-Beitragszeiten MÜSSEN in UTC+8 für die Fensterüberprüfung konvertiert werden
- Das Sammelfenster ist
[Gestern 08:00, Heute 08:00) UTC+8 - Beiträge außerhalb dieses Fensters werden zurückgewiesen – schließe sie unabhängig von der Relevanz NICHT ein
- Für RT-/Zitat-Tweets überprüfe die Originalbeitragszeit, nicht die Retweet-Zeit
Quellenpriorität für X-basierte Einträge
| Priorität | Quellentyp | Glaubwürdigkeit |
|---|---|---|
| 1 | Offizieller Blog / Changelog | Höchste |
| 2 | Offizielles X/Twitter-Konto | Hoch |
| 3 | API-Changelog / Doku | Hoch |
| 4 | Offizielle GitHub-Veröffentlichung | Hoch |
| 5 | CEO-/Kernpersonal-X-Konto | Mittel-Hoch |
| 6 | X-Konto einer Benchmark-Institution | Mittel |
| 7 | KOL-X-Konto | Nur als Referenz – erfordert quellenübergreifende Überprüfung |
Einträge, die nur von KOL-Konten (Priorität 7) stammen, sollten konservativ bewertet und als quellenübergreifend zu überprüfen mit einer offiziellen Quelle markiert werden.
Einbindung von X-Erkenntnissen
Erstelle für jeden verifizierten X/Twitter-Update:
- Ein TrackerItem mit
source: "x",source_url, die auf den ursprünglichen Tweet verweist, undsource_labelals"@{handle} on X" - Wenn dasselbe Ereignis bereits von einem automatisierten Collector (Reddit, HN, GitHub usw.) gefunden wurde, führe es als
cross_refzusammen, anstatt ein Duplikat zu erstellen – dies stärkt den Verifizierungswert - Wenn es sich um eine wirklich neue Entdeckung handelt, die nicht in den automatisierten Daten enthalten ist, füge es als neuen Eintrag mit entsprechender Bewertung hinzu
Schritt 2: Spezifikationen lesen
Nach Abschluss der Datensammlung lies die Tracking-Spezifikation, um Bewertungskriterien, Datensatzformat und Aktualitätsregeln zu verstehen:
Read {SKILL_DIR}/skills/tracking-list/SKILL.md
Diese Spezifikation definiert:
- 4 Tracking-Typen (Produkt / Modell / Benchmark / Finanzierung) mit Ein-/Ausschlusskriterien
- Quellenprioritäts-Rankings
- Bewertungskriterien (1-10-Skala mit 5 Dimensionen)
- Aktualitätsprüfungsregeln (Ereignisdatum ≠ Seitendatum)
- Quellenübergreifende Überprüfungsanforderungen (7+-Werte benötigen 2+ unabhängige Quellen)
- Datensatzformat für den Bericht
Verinnerliche die Spezifikation, bevor du den Bericht schreibst. Achte besonders auf die Bewertungsreferenztabellen und die Typklassifizierungsanleitung.
Schritt 3: Bericht erstellen
- Lies die JSON-Ausgabe von Schritt 1
- Lies die Berichtsvorlage:
Read {SKILL_DIR}/templates/report.md - Erstelle
report_{YYYY-MM-DD}.mdim Arbeitsverzeichnis
Regeln zur Berichtserstellung:
- Sprache: Standard ist Englisch. Schreibe ALLE Inhalte auf Englisch, sofern nicht
--langexplizit angegeben ist. Wenn Quelldaten in einer anderen Sprache vorliegen, übersetze sie. Entitätsnamen (Eigennamen) bleiben unverändert. - Quellenlinks: Jeder Eintrag MUSS einen klickbaren Quellenlink
[Quellenname](URL)enthalten, der auf den Originalinhalt verweist. Dies gilt für alle Abschnitte: TLDR, detaillierte Einträge und kompakte Tabellenzeilen. - Detailqualität: Zusammenfassende Aufzählungspunkte MÜSSEN spezifische Details enthalten – Versionsnummern, prozentuale Verbesserungen, Parameteranzahlen, Preise, Verfügbarkeitsdaten, Benchmark-Ergebnisse. Vermeide vage Beschreibungen ohne konkrete Zahlen.
- Faktische Überprüfbarkeit: …
[truncated für die Übersetzung]
Schritt 4: (Optional) Infografik erstellen
Wenn IMAGE_GEN_PROVIDER konfiguriert ist, erstelle ein Infografik-Bild des Berichts. Siehe {SKILL_DIR}/skills/gen-image/SKILL.md für Details.
Führe aus:
cd {SKILL_DIR} && python3 skills/gen-image/scripts/generate_image.py --input {CWD}/report_{YYYY-MM-DD}.md --output {CWD}/infographic_{YYYY-MM-DD}.png --provider {PROVIDER} --style {STYLE} --lang {LANG}
Schritt 5: (Optional) Social-Media-Inhalte generieren
Wenn SOCIAL_ENABLED=true konfiguriert ist, generiere Social-Media-Kopien aus dem Bericht. Siehe {SKILL_DIR}/skills/gen-social/SKILL.md für Details.
Führe aus:
cd {SKILL_DIR} && python3 skills/gen-social/scripts/generate_social.py --input {CWD}/report_{YYYY-MM-DD}.md --output {CWD}/social_{YYYY-MM-DD}.json --platform {PLATFORM} --style {STYLE} --lang {LANG}
Schritt 6: (Optional) Nachrichten-Digest generieren
Wenn MESSAGE_ENABLED=true konfiguriert ist, generiere einen prägnanten Nachrichten-Digest. Siehe {SKILL_DIR}/skills/gen-message/SKILL.md für Details.
Führe aus:
cd {SKILL_DIR} && python3 skills/gen-message/scripts/generate_message.py --input {CWD}/report_{YYYY-MM-DD}.md --output {CWD}/digest_{YYYY-MM-DD}.txt --min-score {SCORE} --max-items {COUNT} --links {STYLE} --category-balance {BOOL} --lang {LANG}
Fehlerbehebung
| Problem | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Datensammlung fehlgeschlagen | Netzwerk-/API-Problem | --depth quick versuchen, später erneut versuchen |
| Keine Ergebnisse | Außerhalb der Geschäftszeiten | Erneut versuchen, wenn Nachrichten verfügbar sind |
| Bericht wirkt unvollständig | Timeout bei tiefer Sammlung | Tiefe auf default reduzieren oder --sources eingrenzen |
| Gateway-Prüfung schlägt fehl | Konfigurationsdatei fehlt oder defekt | Ersteinrichtung erneut ausführen, .env-Format überprüfen |
| API-Fehler bei Infografik | Abgelaufener oder ungültiger API-Schlüssel | IMAGE_GEN_PROVIDER, GEMINI_API_KEY/MINIMAX_API_KEY überprüfen |