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-profileverwendet. 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
0ersetzt. 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:
- Parsen des Shortlinks oder der
sec_uid; bei Nickname/Douyin-ID wird die interne Suche verwendet. - Erfassen von Profil, Beiträgen und Sammlungen; Schreiben von
account_full_raw.json. - Bei vorhandenen Beiträgen werden
report_data.jsonundreport.htmlgeneriert. - Während des gesamten Vorgangs wird
run_status.jsonaktualisiert; 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 hathas_more=0zurü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 diesec_uidund 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.htmlundreport.mdkonsistent. - 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.pagegeprü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.jsonabgeglichen; 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: Standardchrome; beichromiumzuerst 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.