CommunityRecherche & Datenanalysegithub.com

9398-haha/douyin-benchmark

Douyin Benchmark · Gib einen Douyin-Account ein, sammle alle öffentlichen Inhalte und erstelle einen detaillierten Benchmark-Bericht (Rohdaten + Markdown + helles Magazin-HTML). Agent-freundlicher Skill.

Was ist douyin-benchmark?

Dieser Skill dient der systematischen Analyse öffentlicher Douyin-Accounts. Er ruft automatisch alle öffentlich sichtbaren Inhalte eines angegebenen Accounts ab, aggregiert die Daten und generiert drei Ergebnisse: eine JSON-Datei mit Rohdaten, eine vollständige Markdown-Analyse (mit einem neunteiligen Berichtsformat) und ein optisch ansprechendes, helles Magazin-HTML. Der Fokus liegt auf strikter Einhaltung von Datenintegrität und ethischen Grenzen: Es werden keine geschützten APIs geknackt, keine Captchas umgangen und keine nicht-öffentlichen Daten erhoben. Fehlende Werte bleiben als solche erhalten, und die Berichterstattung basiert ausschließlich auf beobachtbaren öffentlichen Daten (Fakten, Beobachtungen, begründete Schlussfolgerungen). Der Skill läuft im Browser mit einer dedizierten Chrome-Instanz und unterstützt sowohl GUI- als auch Headless-Modi. Nach Abschluss kann ein LLM-Agent die generierte `report_data.json` nutzen, um den finalen Markdown-Bericht zu schreiben, ohne dabei die definierten Beweisgrenzen zu überschreiten.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add 9398-haha/douyin-benchmark

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Douyin Benchmark – Vollständige Skills-Beschreibung (lokalisiert)

den öffentlichen Account erfassen, Daten aggregieren und HTML-Rendering an das Skript übergeben; der Agent erstellt auf Basis der report_data.json einen evidenzbasierten Markdown-Bericht.

Grenzen beachten

  • Es werden nur öffentlich sichtbare Daten erfasst; keine Signaturen geknackt, keine Captchas umgangen oder Zugriffskontrollen umgangen.
  • Es wird ausschließlich der dedizierte Login-Status in ~/.douyin-benchmark/chrome-profile verwendet. Das normale Chrome-Benutzerverzeichnis darf weder gelesen, kopiert noch direkt angesprochen werden; Cookie-Werte werden nicht ausgegeben.
  • Fehlende Werte bleiben fehlend, sie werden nicht durch 0 ersetzt. Likes dienen nur als Proxy für öffentliche Beliebtheit, nicht als Indikator für Play-Rate, Interaktionsrate oder Follower-Wachstum.
  • Normale Login-Felder, echte Sicherheitsprüfungen und Seitenfehler werden unterschiedlich behandelt. Bei Sicherheitsprüfungen, Seitenfehlern oder leeren Antworten wird gestoppt; es erfolgen keine Wiederholungsschleifen, IP-Wechsel, automatischen Zeitverzögerungen oder Zusagen für spätere Fertigstellung.

Ersteinrichtung

Im Skill-Verzeichnis ausführen:

npm ci
node scripts/login.js

login.js öffnet einen dedizierten Browser, validiert den echten Account-Zugang und schließt ihn automatisch nach Speicherung. Zur Überprüfung des vorhandenen Login-Status führen Sie node scripts/login.js --check aus.

Ein-Klick-Ausführung

Bevorzugt einen Share-Profil-Shortlink der Douyin-App bereitstellen. Eine numerische Douyin-ID ist keine sec_uid; die direkte Verwendung von /user/<numerisch> könnte still zum Feed zurückkehren.

OUT="$HOME/douyin-benchmark-output/<Account-Identifikator>"
node scripts/run_benchmark.js "<Profil-Share-Link/sec_uid/Douyin-ID/Nickname>" "$OUT" \
  --expected-id "<Douyin-ID, optional>"

Standardmäßig wird Chrome mit GUI verwendet, um die Beobachtbarkeit zu erhöhen und einen realen Browser-UA zu liefern. Nur in GUI-losen Umgebungen wird explizit --headless hinzugefügt. Das Skript führt nacheinander aus:

  1. Parsen des Shortlinks oder der sec_uid; bei Nickname/Douyin-ID wird die interne Suche verwendet.
  2. Erfassen von Profil, Beiträgen und Sammlungen; Schreiben von account_full_raw.json.
  3. Bei vorhandenen Beiträgen werden report_data.json und report.html generiert.
  4. Während des gesamten Vorgangs wird run_status.json aktualisiert; bei Fehlern wird keine weitere Analyse durchgeführt.

Status zuerst lesen, dann Schlussfolgerungen ziehen

run_status.json und account_full_raw.json.capture lesen:

  • complete: Die API hat has_more=0 zurückgegeben. Ein Account-Level-Bericht kann erstellt werden; dennoch wird die Differenz zwischen der Profil-Beitragsanzahl und der erfassten Anzahl geprüft.
  • partial: Es wird nur ein „Stichprobenbericht“ geschrieben; Stichprobengröße, Gesamtanzahl und Abdeckung werden in der Nähe der Überschrift angegeben; Begriffe wie „vollständig“ oder „höchste Account-Leistung“ werden vermieden.
  • blocked_empty_body: Der Beitrags-Endpoint gibt HTTP 200 mit leerem Body zurück. Die Anfragen werden gestoppt; nur eine Profil-Schnappschuss und Diagnose werden geliefert; spätere Wiederholungen müssen vom Benutzer entschieden werden und sind maximal einmalig.
  • challenge: Der Benutzer muss die Sicherheitsprüfung im dedizierten Browser abschließen, bevor ein weiterer Versuch unternommen wird; keine Umgehungsversuche.
  • login_required: Die Seite zeigt einen normalen Login-Dialog, keine Sicherheitsprüfung. Das Login-Skript wird ausgeführt, und nach erfolgreichem Login wird nur ein weiterer Versuch unternommen.
  • page_service_error: Der Beitragsbereich zeigt deutlich „Dienstfehler, bitte Seite aktualisieren“. Das Aktualisieren wird gestoppt; nach Bestätigung des Login-Status wird maximal ein weiterer Versuch unternommen.
  • no_post_response: Möglicherweise eine falsche Eingabe oder eine Änderung der Seite/API. Zuerst die sec_uid und die GUI-Seite prüfen; keine blinde Erhöhung der Scroll-Versuche.
  • endpoint_error: Der Beitrags-Endpoint gibt einen HTTP/API-Fehler oder Nicht-JSON-Inhalt zurück. Die Diagnose wird gespeichert und die Analyse gestoppt; zuerst die Seite/API-Änderungen prüfen.

Markdown schreiben

Nur wenn report_data.json vorhanden ist und analysierbare Beiträge enthält, wird references/report-template.md vollständig gelesen und nach dem Neunteil-Strukturformat in $OUT/report.md geschrieben.

Der Inhalt wird in drei Kategorien unterteilt und klar formuliert:

  • Fakten: Öffentliche Felder aus dem JSON und berechnete Ergebnisse.
  • Beobachtungen: Titel, Beschreibungen, Sammlungsnamen, Cover oder tatsächlich geöffnete Videos.
  • Schlussfolgerungen: Persona, Monetarisierungspfad, Inhaltsformel; Beweise und Konfidenz angeben, keine Tatsachenbehauptungen.

Ohne Kommentartexte wird keine „emotionale Kommentaranalyse“ geschrieben; ohne angesehene Videos wird keine Aussage über Kameraführung, Voiceover, Storytelling oder Performance-Details getroffen. Wenn der Benutzer die eigene Nische angibt, wird die kopierbare Liste gezielt übertragen.

Abnahme

  • Zustand von account_full_raw.json, run_status.json, report_data.json, report.html und report.md konsistent.
  • HTML und Markdown zeigen die tatsächliche Stichprobengröße, die Gesamtanzahl der Profil-Beiträge, die Abdeckung und den capture_status.
  • Bei Blockierung wird capture.diagnostics.page geprüft: Nur Titel, Pfad, Login/Challenge/Service-Fehler-Boolsche-Signale und Anzahl der Videolinks werden aufgezeichnet; keine Inhalte oder Cookies gespeichert.
  • Zahlen werden einzeln mit report_data.json abgeglichen; fehlende Werte zeigen —/Unbekannt.
  • HTML kann offline geöffnet werden; externe Texte sind escaped; fehlende Cover beeinträchtigen den Text nicht.
  • HTML hat kein horizontales Overflow auf der gesamten Seite; die neuesten Beitragstitel sind lesbar. Die Veröffentlichungsfrequenz wird für die letzten 12 Monate angezeigt, wobei nur bei vollständiger Erfassung fehlende Monate mit 0 aufgefüllt werden.
  • Markdown hat alle neun Abschnitte, einschließlich Datenreichweite, Beweisgrenzen, kopierbare Liste und nicht kopierbare Elemente.

Konfiguration

  • DOUYIN_PROFILE_DIR: Verzeichnis für den dedizierten Login-Status; Standard ~/.douyin-benchmark/chrome-profile.
  • DOUYIN_BROWSER_CHANNEL: Standard chrome; bei chromium zuerst Playwright Chromium installieren.
  • DOUYIN_HEADLESS=true: Explizit Headless-Modus aktivieren; Standard mit GUI.
  • DOUYIN_SCROLL_WAIT_MS: Minimale Scroll-Verzögerung, Standard 1600 ms; nicht für Hochfrequenz-Erfassung verwenden.

Verwandte Skills