拆抖音对标
公開アカウントの収集、データ集約、HTMLレンダリングをスクリプトに任せ、Agentはreport_data.jsonに基づいてエビデンスの境界を明確にしたMarkdownレポートを作成します。
遵守すべき境界
- ウェブ上で公開されているデータのみを収集します。署名のクラック、CAPTCHAの回避、アクセス制御の迂回は行いません。
- 専用のログイン状態は
~/.douyin-benchmark/chrome-profileのみを使用します。ユーザーの日常的なChromeユーザーディレクトリを読み取ったり、コピーしたり、直接参照したり、Cookieの値を出力したりしないでください。 - 欠損値はそのまま欠損として扱い、
0に書き換えません。いいねは公開ホットネスの代理指標としてのみ扱い、再生数、エンゲージメント率、フォロワー増加率などとは見なしません。 - 通常のログインフォーム、実際のセキュリティ認証、ページのサービス異常はそれぞれ個別に判断します。セキュリティ認証、ページのサービス異常、空の応答によるソフトブロックが発生した場合は停止します。ループリトライ、自動IP変更、自動遅延タスク作成、後で完了するという約束は行いません。
初回準備
このスキルのディレクトリで以下を実行します:
npm ci
node scripts/login.js
login.jsは専用ブラウザを開き、実際のアカウントエントリに認証された後、自動的に保存して閉じます。既存のログイン状態を確認するにはnode scripts/login.js --checkを実行します。
ワンクリック実行
ユーザーには、抖音アプリの「プロフィール共有」ショートリンクを提供することを優先してください。数字の抖音IDはsec_uidではありません。/user/<数字>を直接構築すると、通知なくフィードに戻る可能性があります。
OUT="$HOME/douyin-benchmark-output/<アカウント識別子>"
node scripts/run_benchmark.js "<プロフィール共有リンク/sec_uid/抖音ID/ニックネーム>" "$OUT" \
--expected-id "<抖音ID、省略可>"
デフォルトではヘッド付きChromeを使用し、可観測性を高め、実際のブラウザUAと一致させます。ヘッドレス環境でのみ明示的に--headlessを追加します。スクリプトは順に以下を実行します:
- ショートリンクまたは
sec_uidを解決します。ニックネーム/抖音IDの場合のみサイト内検索を使用します。 - プロフィール、作品、コレクションを収集し、
account_full_raw.jsonに書き込みます。 - 作品がある場合、
report_data.jsonと调研报告.htmlを生成します。 - 全工程で
run_status.jsonを更新し、失敗後も分析を継続しません。
ステータスを読み、結論を書く
run_status.jsonとaccount_full_raw.json.captureを読み取ります:
complete:APIがhas_more=0を返しました。アカウントレベルのレポートを作成できます。それでもプロフィールの作品数と収集数の差異を確認します。partial:「収集サンプルレポート」のみを作成します。タイトル付近にサンプル数、プロフィールの総作品数、カバレッジを明示します。「全量」「アカウント最高」などの表現は使用しません。blocked_empty_body:作品APIがHTTP 200だが空のボディ。リクエストを停止し、プロフィールスナップショットと診断情報のみを提供します。再試行はユーザーが判断し、最大1回のみです。challenge:ユーザーに専用ブラウザで認証を完了させてから再試行します。回避は試みません。login_required:ページは通常のログインフォームであり、セキュリティ認証ではありません。ログインスクリプトを実行し、成功後1回のみ再試行します。page_service_error:作品エリアに「サービス異常、再読み込みしてデータを取得してください」と明示的に表示されます。更新を停止します。ログイン状態を確認後、最大1回再試行します。no_post_response:入力ミス、ページ/APIの変更が考えられます。まずsec_uidとヘッド付きページを確認し、むやみにスクロール回数を増やさないでください。endpoint_error:作品APIがHTTP/APIエラーまたは非JSONコンテンツを返しました。診断情報を保持し分析を停止し、まずページ/APIの変更を確認します。
Markdownの作成
report_data.jsonが存在し、分析可能な作品が含まれている場合のみ、references/report-template.mdを完全に読み取り、9セクション構造に従って$OUT/调研报告.mdに書き込みます。
内容を3つのカテゴリに分類し、明確に表現します:
- 事実:JSON内の公開フィールドと計算結果。
- 観察:タイトル、紹介文、コレクション名、カバー、または実際に開いた動画の表示内容。
- 推測:ペルソナ、収益化パス、コンテンツフォーミュラ。エビデンスと確信度を記載し、事実として扱いません。
コメント本文がない場合は「ホットコメントの感情」を書かず、動画を視聴していない場合はカメラワーク、ナレーション、演技、演出の詳細を主張しません。ユーザーが自身のジャンルを指定した場合のみ、再現可能なリストを定向的に移行します。
検収
account_full_raw.json、run_status.json、report_data.json、调研报告.html、调研报告.mdの状態が一致していること。- HTMLとMarkdownの両方に実際の収集サンプル数、プロフィールの作品数、カバレッジ、
capture_statusが表示されていること。 - ブロック時は
capture.diagnostics.pageを確認します。タイトル、パス、ログイン/チャレンジ/サービス異常のブール値シグナル、動画リンク数のみ記録し、本文やCookieは保存しません。 - 数値は
report_data.jsonと1つずつ照合します。欠損値は—/不明を表示します。 - HTMLはオフラインで開くことができ、外部テキストはエスケープされています。カバー画像の失敗は本文に影響を与えません。
- HTMLにページ全体の横方向オーバーフローが発生しないこと。最新作品のタイトルが読めること。公開頻度は直近12ヶ月を公開作品数で表示し、完全収集の場合のみ欠損月を0で補完します。
- Markdownの9セクションが全て揃っており、データの範囲、エビデンスの境界、再現可能なリスト、そのまま模倣できない項目が含まれていること。
設定
DOUYIN_PROFILE_DIR:専用ログイン状態ディレクトリ。デフォルトは~/.douyin-benchmark/chrome-profile。DOUYIN_BROWSER_CHANNEL:デフォルトはchrome。chromiumを設定する場合、先にPlaywright Chromiumをインストールします。DOUYIN_HEADLESS=true:明示的にヘッドレスモードを有効にします。デフォルトはヘッド付き。DOUYIN_SCROLL_WAIT_MS:スクロール間隔の下限。デフォルトは1600ms。これを高頻度収集に使用しないでください。