KOL Post Analytics
メンバーマニュアル

最終更新: 2026-07-18 / 対応バージョン: Phase 4++ (⌘K案件検索・stale警告・共同編集者・TT RapidAPI化 対応版)

1. このシステムについて

KOL Post Analytics は、SNSタイアップ投稿 (X / Instagram / TikTok / YouTube) のパフォーマンスを多角的に分析し、広告主向けレポートを自動生成する社内ツールです。

主な機能

  • 投稿パフォーマンス分析 — 再生数・エンゲージメント・コメント傾向を可視化
  • クリエイティブスコア — クリエイターの普段の実績との比較
  • AIコメント分類 — Gemini API で態度変容・ネガティブ等を自動判定
  • 動画コンテンツ分析 — タテ型ショート動画の構成・形式を AI が解析
  • Google検索リフト — ブランド検索の施策前後比較
  • 案件検索コマンドパレット (⌘K) — 大量案件の中から即座に絞り込み・ブックマーク
  • クリエイター履歴 stale 警告 — 7日以上古いキャッシュに自動警告 + まとめて再取得
  • 共同編集者機能 — 最大2名まで case-level で編集権限を委譲 (BAN対策と休暇引継ぎ用)
  • ハッシュタグ波及 — キャンペーンタグの広がりを定量化
  • pptx自動生成 — 広告主向けレポートをワンクリックで出力

アクセス URL

https://um-kol-analysis.duckdns.org

※ ブックマーク推奨。ログインは Google アカウント不要、メアド + パスワード方式です。

役割 (ロール)

ロールできることできないこと
admin 全機能、メンバー管理、設定変更
operator データ取得・分析・レポート生成・編集 メンバー管理
viewer 閲覧のみ (全タブの読み取り) データ取得・編集・スクレイピング

2. 初回ログイン

管理者から メアド + 一時パスワード を受け取ったら、初回ログインを行います。

URL を開く
ブラウザで https://um-kol-analysis.duckdns.org にアクセスします。
ログイン画面で入力
  • メールアドレス: 管理者から伝えられた自分のメアド
  • パスワード: 一時パスワード (英大文字小文字数字混在の12文字)
「ログイン」ボタンをクリック
強制パスワード変更
自動的にパスワード変更画面に切り替わります。次のセクション参照。
⚠️ 一時パスワードはコピペで確実に
英大文字小文字の見間違い (I と l、O と 0 等) を避けるため、必ずコピペしてください。手打ちは推奨しません。

3. パスワード変更

初回ログイン時は自動で変更画面が出ます。任意のタイミングで再変更したい場合は管理者にリセット依頼してください (任意で自分で変える UI は今後追加予定)。

変更画面での入力

  • 現在のパスワード: 一時PW (または現在のPW)
  • 新しいパスワード: 8文字以上、できれば 14文字以上
  • 新しいパスワード (確認): 上と同じものをもう一度

強いパスワードの条件

  • ✅ 14文字以上
  • ✅ 英大文字 / 英小文字 / 数字 / 記号を混在
  • ❌ 他サービスとの使い回し
  • ❌ 個人情報 (誕生日、名前) を含める
  • ❌ 辞書にある単語そのまま
💡 おすすめ: パスワードマネージャ
1Password / Bitwarden / Apple Keychain 等で生成・保存すると忘れる心配なし。

4. パスワードを忘れたら

自分でリセットする機能はありません。管理者に依頼してください。

Slack DM で管理者に連絡
例: 「パスワードを忘れました、リセットお願いします」
管理者が新しい一時PWを発行
管理者は「⚙️ 設定」タブから 30秒で発行できます。
新しい一時PWでログイン → 強制PW変更
通常の初回ログインと同じ流れです。
🚨 パスワード漏洩 / 盗難時
すぐに管理者にリセット依頼してください。漏洩疑いがあれば、管理者が session_secret 全体のローテーション を行って既存セッションを一括無効化することもできます (全員強制ログアウト)。

5. ダッシュボードの構造

ログイン後の画面は、上から順に下記の4ブロックで構成されます。

┌──────────────────────────────────────┐
│ 5-1. ヘッダー                            │
│  📊 ロゴ  | 🔄更新 | 🌙 ダーク | ⚙ jobs | 👤 user │
├──────────────────────────────────────┤
│ 5-2. 案件バー                            │
│  📁 案件:[選択▼] [+新規] [✏編集] [🗑削除]   │
├──────────────────────────────────────┤
│ 5-3. プラットフォームフィルタ              │
│  🌐 全 | 🐦 X | 📸 IG | 🎵 TT | ▶️ YT     │
│  📊 view_mode: 広告込 | オーガニックのみ      │
├──────────────────────────────────────┤
│ 5-4. タブ群 (機能切替)                   │
│  📑 資料作成 | 📈 全体サマリー | 🎯 投稿... │
├──────────────────────────────────────┤
│ メインコンテンツ (選択したタブの中身)         │
└──────────────────────────────────────┘
項目説明
取得日時最後にデータ取得した時刻
🔄 更新サーバーから最新データを再取得
🌙 ダークモードテーマ切替 (ライト ⇄ ダーク)
⚙️ N/Mジョブキューの状況 (実行中/待機中)。クリックで監視タブへ
ユーザバッジ自分のロール・メアド表示、「⎋」でログアウト

5-2. 案件バー

分析対象の案件を選びます。1人のユーザーが複数案件を切り替えながら作業します。案件数が多い場合は下記の 案件検索コマンドパレット が便利です。

🔍 案件検索コマンドパレット (⌘K)

案件バーの案件名ボタンをクリック、または ⌘K (Mac) / Ctrl+K (Win) でキーボードだけで案件を素早く検索・切り替えできます。

  • 検索: 「DMM」「佐貫」「2607」などの部分入力で絞り込み。半角/全角/【】_ - は無視して照合
  • ↑↓ で選択: 検索結果の中を移動
  • Enter で開く: 案件を切替
  • ⭐ ブックマーク: 各行の右端の ☆ をクリック、または ⌘B / Ctrl+B で常用案件をピン留め。次回起動時に「⭐ ブックマーク」セクションに常時表示
  • 🕐 最近開いた: 直近5件が自動記録され、パレットの上位に表示 (LRU)
  • Esc で閉じる
💡 保存場所
ブックマーク・最近開いた案件は ブラウザ端末単位で保持。別 PC・シークレットウィンドウには引き継がれません。ブラウザキャッシュクリアで消えます。

5-3. プラットフォームフィルタ

表示するデータをプラットフォーム別に絞り込みます。「🌐 全プラットフォーム」で全表示。

view_mode トグル

  • 広告込 (total) — 取得した再生数そのまま (デフォルト)
  • オーガニックのみ (organic) — 「💰 広告配信設定」タブで入力した広告分を引いた値

切替えると全レポートが連動して再計算されます。

5-4. タブ群

主要機能の切替。詳細はセクション6で各タブを説明します。

5-5. ロールによる表示差

表示要素adminoperatorviewer
📁 案件 + 新規/編集/削除✅ 全案件✅ 自分の案件 + 共同編集者指定案件表示のみ・編集不可
💰 広告配信設定 タブ
🔔 監視 タブ
🛠️ ツール / URL管理 タブ
⚙️ 設定 タブ

👥 共同編集者機能 (Delegates, 最大 2名)

案件バー右側の 👥 バッジ (0/2) をクリックして、他の operator を 共同編集者に指定 できます。指定された operator は、案件作成者以外でも以下ができるようになります。

  • ✅ URL 追加/削除
  • ✅ スクレイプ実行
  • ✅ コメント分類実行
  • ✅ 広告配信設定の編集
  • ✅ 案件情報 (名前・説明) の編集
  • ❌ 案件削除 / オーナー変更 / 共同編集者の追加・削除 (これは owner + admin のみ)
💡 用途
担当者が休暇・出張中に他メンバーが引き継ぐ用途を想定。最大2名まで、追加・削除は案件作成者 or admin が実施。共同編集者本人による自己解除は不可 (誤操作防止)。

6. 各タブの詳細

📑
資料作成
広告主向けレポート (pptx)
→ 詳細
📈
全体サマリー
KPI 一覧と概況
→ 詳細
🎯
投稿パフォーマンス
散布図 + コンテンツ分析
→ 詳細
💬
コメント分析
AI分類 + 抜粋
→ 詳細
📊
クリエイティブスコア
普段比較ベンチマーク
→ 詳細
📝
投稿一覧
全投稿テーブル
→ 詳細
💰
広告配信設定
広告再生数の入力
→ 詳細
🔔
監視
ジョブキュー + エラー監視
→ 詳細
🛠️
ツール / URL管理
スクレイピング実行
→ 詳細
⚙️
設定 (admin)
メンバー管理
→ 詳細

6-1. 📑 資料作成

広告主提出用のレポート (pptx) を生成するメインタブ。R1〜R8 の各分析を統合します。

サブページ

サブ内容
📋 エグゼクティブサマリー総合評価 ★ + 認知/共感/検討ファネル + 主要KPI
🩺 ヘルスチェック診断D1再生数 / D2訴求 / D3検討 / D4記憶 / D5ネガ の5項目自動診断
🔍 Google検索リフトブランド指名検索の施策前後比較 (R3)
📈 ハッシュタグ波及キャンペーンタグの広がり (R4)
💭 コメントファネル位相4段ファネルマッピング (R5)
▶️ 動画完視聴・滞在価値TT/YT 動画分析 (R6)
📦 pptx 自動生成セクション選択 → ワンクリック生成 (R7)
💡 pptx 生成のコツ
Claude/Gemini APIキー設定が必要です (現状 Gemini 使用)。生成時に文章は AI が書きますが、最後は必ず人間が読んでチェック → 修正してから広告主に提出してください。

6-2. 📈 全体サマリー

案件全体の数値概況を一覧で把握するためのタブ。

表示要素

  • 統計カード: 総再生・総エンゲ・コメント数・CPV/CPE 等
  • プラットフォーム別棒グラフ: X/IG/TT/YT の比較
  • トップ投稿 TOP3: 各KPIで上位を表示
  • センチメント円グラフ: ポジ/ネガ/中立の比率
  • 日次推移: 投稿日からの累積
  • クリエイティブスコア概要: PRcomparison のサマリ

6-3. 🎯 投稿パフォーマンス分析

投稿1つひとつのパフォーマンスを散布図で可視化 + コンテンツ分析機能。

📍 散布図 (投稿パフォーマンス マッピング)

  • X軸/Y軸: 再生数 / エンゲージ数 / 態度変容率 / ネガ率 / クリエイティブスコア から選択可
  • 1点 = 1投稿: 色はプラットフォーム別、アカウント名表示
  • 点クリック: 選択トグル (黄色いリング)
  • Shift+クリック: 投稿一覧へジャンプ
  • クイック選択: Y軸上位3/5/10、右上象限、全YT 等

📋 コンテンツ分析 (R8)

選択した投稿群とその他を AI が比較分析し、「動画形式 / 構成 / インフルエンサー像 / 推奨秒数」をまとめた「次回オリエンシート」を出力します。

  1. 散布図上で高パフォーマンス投稿を選択
  2. 「📋 コンテンツ分析実行」ボタン
  3. Gemini が動画を直接視聴 (3〜5分)
  4. 結果が4セクション (折畳可) で表示
  5. 「📋 全文コピー」でMarkdown化、オリエンに貼付
⚠️ 解析対象は「タテ型ショート動画」のみ
YouTube は /shorts/ URL、TikTok 全て、Instagram は /reels/ URL のみ対応。長尺YouTube動画は対象外で自動除外されます。

6-4. 💬 コメント分析

「🎯 投稿パフォーマンス分析」のドロップダウンから入れるサブタブ。

機能

  • AIコメント分類: Gemini が brand_find / purchase_intent / question / negative_influencer 等に分類
  • カテゴリ別 投稿×件数 マトリクス: どの投稿のコメントが何の傾向か可視化
  • コメント抜粋: 各カテゴリの代表コメントを表示
  • クリエイター返信検出: クリエイター本人のコメントを別表示
💡 AI分類の実行
「AIコメント分類実行」ボタンを押すと Gemini API が動きます。コメント約 200件で 5円〜10円 程度のコスト。

6-5. 📊 クリエイティブスコア分析

クリエイターの普段のオーガニック投稿との比較で、今回のタイアップが伸びたかを定量化。

クリエイティブスコアとは

クリエイティブスコア (CS) = 今回投稿の再生数 ÷ 過去N件のオーガニック平均
CS値解釈
1.0以上普段の平均以上 ✅ 「効いた」
0.7〜1.0同程度
0.7未満普段を下回る ❌ 効果薄
前提: クリエイター履歴の取得
CS算出にはクリエイターの過去投稿 (最大100件) データが必要。「投稿別 PR効果比較」タブ内 or 「🛠️ ツール」タブで取得してください。TT は自動で 100件、IG/X/YT は 30-100件程度取得されます。

⚠️ 履歴 stale 警告 (7日以上古いキャッシュ)

クリエイター履歴は VPS 側にキャッシュされ、再取得ボタンでのみ更新されます。取得から 7日以上経過 したキャッシュには以下の警告が出ます:

  • 「⚠️ 更新推奨 (N日前)」バッジ — データ取得状況テーブルの該当行が黄色ハイライト
  • 再取得ボタンが黄色で目立つ表示に
  • タブを開くとポップアップ警告: 「N名のクリエイター履歴が7日以上前です。今すぐ更新しますか?」→「まとめて再取得」でサーバ側 dispatcher が PF 別に順次実行 (IG=60秒/X=30秒/TT/YT=5秒間隔で BAN 回避)

放置すると 直近の PR 投稿が「N=0」で検出されず、PR比較が不正確になります。ケロッグ案件などでこの症状が発覚した経緯があるので必ず更新してください。

🔄 「未取得+古い履歴を一括取得」ボタン

従来は「未取得のみ」を取得していましたが、現在は 未取得 + 7日以上古いキャッシュを両方対象 にします。押した際の確認ダイアログに「TT クリエイター N名 順次取得 (目安 M分)」と表示されるので、順序性 (BAN 回避) を意識した設計になっています。

6-6. 📝 投稿一覧

全投稿をテーブル表示。検索・ソート可能。

機能

  • キーワード検索 (アカウント名・本文)
  • ソート: 再生数 / エンゲージ率 / 投稿日 / 等
  • 各投稿カードに: サムネ + 再生数 + 主要KPI
  • カードクリック → 該当投稿の元URLを開く

6-7. 💰 広告配信設定

各投稿の広告配信による再生数を手動入力するタブ。

運用方法

  1. テーブルに全投稿のURLが並ぶ
  2. 「広告再生数」欄に数値を入力 (案件終了後に広告主から取得)
  3. 「保存」
  4. ヘッダー横の view_mode トグルで「オーガニックのみ」に切替えると、保存した広告分が引かれた値で全レポート再計算
⚠️ 入力対象は「今回案件の投稿」のみ
クリエイター履歴 (過去オーガニック投稿) の数値は触らないでください。CS計算が狂います。

📱 Instagram 投稿種別による再生数表示ルール

Instagram は投稿種別により再生数の公開状況が違うため、テーブルでは以下のように表示されます:

種別再生数セル表示広告分入力オーガニック計算
Reel (縦動画)数値 (例: 79万)入力可計算される
静止画 (Feed 写真)— (静止画)入力可 (参考値)— (計算しない)
カルーセル (複数枚)— (カルーセル)入力可 (参考値)— (計算しない)
フィード動画— (フィード動画)入力可 (参考値)— (計算しない)
💡 これは仕様です (バグではない)
Instagram の仕様上、Reel 以外は再生数を非公開にしているためです。いいね数・コメント数・保存数は全種別で取得可能。
他 PF (X / TikTok / YouTube) はこの制限なしで全種別に再生数が入ります。

6-8. 🔔 監視

ジョブキューの状況とエラー監視。

⚙️ ジョブキューパネル

5名同時にスクレイピングを押しても、bot検知回避のためプラットフォーム別の上限内でジョブが順次処理されます。

プラットフォーム同時実行1日上限
▶️ YouTube2500投稿
🎵 TikTok1100投稿
📸 Instagram1200投稿
🐦 X1150投稿
  • ジョブ一覧: queued / running / done / failed / cancelled で絞込可
  • キャンセル: queued (待機中) のみキャンセル可。running は不可
  • 5秒毎自動更新

🔔 エラー監視 / Slack通知

スクレイパー失敗・Cookie Pool BAN等を自動記録。Slack Webhook URL を設定すれば重大エラーを即時通知。

6-9. 🛠️ ツール / URL管理

データ取得実行のタブ。最重要かつ最も注意が必要なタブ。

主な機能

  • URL一括追加: テキストエリアにURL貼付 → プラットフォーム自動判別 → 追加
  • 期間設定: 1d / 7d / 30d プリセット または カスタム日付
  • 「今日のスクレイプ実行」: 期間内のURLを取得
  • 「全URL再取得」: 強制的に全URLを再取得
  • クリエイター履歴取得: CS算出用
  • Cookie Pool 管理: IGのスクレイピングアカウント管理
  • スナップショット: 日次の状態保存・比較
🚨 メンバーアカウントの入力時の必須ルール
IG/X認証アカウントは絶対にメインアカウントを使用しないこと。サブ/捨てアカウントのみ使用。BANリスク対策の絶対ルール。
⚠️ 期間設定の罠
URL一覧で1件削除すると、過去には残り全URLの期間が「今日」に書き換わるバグがあった (Phase 4 で修正済)。期間が予期せず変わったら必ず確認。詳細は セクション 8-4

6-10. ⚙️ 設定 (admin専用)

メンバーの追加・削除・PWリセット。admin ロールのみ表示。

👥 メンバー管理

操作手順
新規追加 メアド入力 → ロール選択 (operator/admin) → 「+ 追加」 → 一時PW がモーダル表示 → コピーして本人に伝達
PWリセット 該当行「🔁 PWリセット」 → 一時PW がモーダル表示 → 本人に伝達
削除 該当行「削除」 → 即座にログイン不可になる

🌐 閲覧専用ドメイン

ドメイン (例: uuum.jp) を登録すると、そのドメインのユーザーは viewer ロールでログイン可能。※ 現在は手動で operators.json に viewer を追加する運用 (UI改修予定)。

7. よくある作業フロー

7-1. 新規案件 登録〜分析

案件作成
案件バーの「+ 新規案件」 → 案件名・説明・URL一覧を入力 → 作成
期間設定
URL一覧画面で各URLの取得期間 (start_date / end_date) を設定
スクレイピング実行
「🛠️ ツール」タブから「今日のスクレイプ実行」または「全URL再取得」
取得完了待ち
「🔔 監視」タブでジョブ状況を確認 (10分〜数時間)
AIコメント分類
「💬 コメント分析」タブで「AI分類実行」
クリエイター履歴取得
「🛠️ ツール」でCS算出用に履歴取得
広告再生数入力
案件完了後、広告主から数値受領 → 「💰 広告配信設定」に入力
レポート生成
「📑 資料作成」でセクション選択 → pptx ダウンロード

7-2. 動画解析 (コンテンツ分析)

「🎯 投稿パフォーマンス分析」を開く
散布図上で高パフォーマンス投稿を選択
点を直接クリック (黄色いリング) または クイック選択「Y軸上位3/5/10」「右上象限」
「📋 コンテンツ分析実行」ボタン押下
解析完了まで待機
1投稿 1〜2分、5投稿で 5〜10分。進捗バーで確認
結果の確認 (4セクション折畳)
動画形式 / 動画構成 / インフルエンサー像 / 特徴・ポイント
「📋 全文コピー」
Markdown形式でクリップボードにコピー → オリエンシートに貼付

7-3. レポート pptx 自動生成

「📑 資料作成」タブ
含めるセクション選択
エグゼ / ヘルスチェック / コメントファネル / 動画完視聴 / 検索リフト / ハッシュタグ波及 から ON/OFF
設定の確認
キーワード (ブランド名)、ハッシュタグ、view_mode 等
「pptxを生成」
Claude/Gemini API が動く (1〜2分)
ダウンロード → 内容確認 → 修正
AI生成文章は必ず人間チェック。固有名詞・数値・文体を確認して提出

7-4. ハッシュタグ波及分析

  1. 「📑 資料作成」→ サブページ「📈 ハッシュタグ波及分析」
  2. ハッシュタグ入力 (例: ZOZOTOWN_EDUCATION)、ソース選択 (X / TikTok)
  3. 「取得実行」
  4. キャンペーン期間と施策前期間の投稿数比較グラフが表示
💡 2026-06 アップデート: X が正しく取れるように
X は anti-bot 強化で一時的に取れなくなりましたが、x-client-transaction-id 署名生成 + Pool アカウントローテーション + 期間別 chunked 取得で復活しました。今は半年前のデータまで遡って取得可能。「施策後に急上昇に見える」事象は解消されています。
⚠️ X 取得は admin の事前準備が必要
X Pool に最低 1 個 (推奨 2〜3 個) のサブアカウント cookie が登録されている必要があります。未登録だと取得 0 件になります。詳細は ⓿-2
⚠️ TT は超人気タグだと CAPTCHA 介入の可能性
TikTok クリエイター履歴は RapidAPI (tiktok-scraper7) 経由で取得。Cookie 不要、通常 60-90秒で 100件フル取得。無料枠 500req/月 (月 100-150名分)。超過は $0.002/req 従量。詳細は docs/rapidapi_tiktok_setup.md

7-5. Google検索リフト

  1. 「📑 資料作成」→ サブページ「🔍 Google検索リフト分析」
  2. ブランドキーワード入力、ソース選択 (Web / YouTube)、期間 (デフォルト30日)
  3. 取得 (5〜30秒) → 施策前後の平均検索数比較 + 日次グラフ
⚠️ 期間が複数の案件は要注意
施策開始日は「URL の最早 start_date」が自動採用されます。バッチが複数期間にまたがる案件では片方しか分析されないことがあります。

8. 運用上の注意

8-1. BAN対策とアカウント

🚨 メインアカウント絶対禁止
IG/X認証アカウントはサブ・捨てアカウントのみ使用。
メインアカウントを使用するとBAN/凍結リスクで業務不能になります。

並列処理の制限 (システムが自動制御)

  • TT/IG/X は同時 1ジョブまで
  • YT は同時 2ジョブまで
  • 5人が同時に取得ボタン押しても、サーバが順番待ちで平準化
  • 日次上限到達 → 翌日まで待機

8-1b. ⏰ 日次キャップ到達のアラート体制

BAN リスク対策で各プラットフォームに 1日あたりの取得上限 が設定されています。上限到達時のアラート機構を 2026-06 に整備:

プラットフォーム1日上限備考
▶️ YouTube500 (固定)API キャップ + ローカル制限。PLATFORM_DAILY_CAP["youtube"]年齢制限動画 (18+) は 2026-07 実装の ANDROID_TESTSUITE fallback で自動対応 (パチンコ系案件対応)
📸 Instagramactive アカ数 × 200 (動的、上限 2000)active 0 件のときは静的フォールバック 200。HARD_CEILING_PER_PLATFORM=2000 でカット (= Pool 11 個以上で頭打ち)
🐦 X (Twitter)active アカ数 × 150 (動的、上限 2000)active 0 件のときは静的フォールバック 150。Pool 14 個以上で 2000 に頭打ち
🎵 TikTok300 (固定)2026-06 に 100 → 300 へ拡張済。案件本体取得は TikWM API、クリエイター履歴は RapidAPI 経由 (別枠 500req/月)

※ 数値の真値は job_queue.py:42-56PLATFORM_DAILY_CAP / PER_ACCOUNT_DAILY_LIMIT / HARD_CEILING_PER_PLATFORM。横断ジョブ (動画解析・ハッシュタグ・レポート生成) は別枠で 1000/日。

キャップ到達時に何が起こるか

  1. 🔴 全タブ最上部にバナー表示 — 「○○ が本日の取得上限に到達」と現状の説明
  2. 📊 監視タブに詳細パネル — プラットフォーム別の 使用 / 上限、キュー残件数、関係案件名、再開予定時刻
  3. 📋 次回作業指示の自動表示 — 「翌日 00:00 (サーバローカル時刻) 以降に自動再開予定。追加操作は不要です」
  4. 📢 Slack 通知 (Slack Webhook 設定時) — 1 日 1 プラットフォームあたり 1 回の dedup あり。ただし dedup はプロセスメモリ管理のため、Worker / サーバを当日中に再起動すると同一プラットフォームの通知が再度飛ぶことがあります (job_queue.py:490 _cap_hit_notified_today)。
  5. キューに積まれたジョブはそのまま残る — 翌日 0:00 (サーバローカル時刻) になると Worker が自動再開、追加操作不要
⏱️ 「翌日 00:00」はサーバローカル時刻
job_queue.py:419 time.localtime ベースで再開時刻を文字列化します。Mac local 運用 = JST 00:00 / VPS が UTC 設定 = UTC 00:00 (= JST 09:00) になる点に注意。VPS 移行時は TZ 環境変数 (例: TZ=Asia/Tokyo) の設定を必ず確認してください。

IG / X の動的キャップ (Cookie Pool 連動)

2026-06 から IG と X の上限は Cookie Pool の active アカウント数に応じて自動拡張 されます (job_queue.py _effective_daily_cap)。

📌 ここでいう「active アカウント数」とは
cookie_pool 上の status が active 判定のアカウントだけを数えます。次のアカは除外されます:
  • banned (admin が無効化、または検知された BAN)
  • limit_reached (そのアカが今日 200 件使い切った)
  • cooldown (直近のエラーで一時クールダウン中)
そのため 同じ日でも時間帯によって N が減り、合計キャップが下がることがあります (例: 朝 Pool 3 アカ active で 600 件/日 → 夕方 1 アカが limit_reached になると 400 件/日に再計算)。
プラットフォーム1アカあたりPool 1個Pool 2個Pool 3個...ハード上限
📸 Instagram200/日200400600...2000 (Pool 11個以上で頭打ち)
🐦 X (Twitter)150/日150300450...2000 (Pool 14個以上で頭打ち)

HARD_CEILING_PER_PLATFORM=2000 (job_queue.py:56) は Pool 大量追加時の暴走防止。これを超えるアカを追加しても 2000 で頭打ちになります。さらに上げたい場合は admin に相談。

💡 容量が足りない時の対処
Pool に新しいサブアカを追加するだけで上限が自動的に上がります (例: X Pool アカ 3個 → 450件/日)。詳細は ⓿-2 Cookie Pool 管理

動的キャップ採用の IG / X では、監視タブのキャップ詳細パネル に「🔄 Pool アカ N × M/アカ = 合計 件/日 (動的)」が併記されます (dashboard.html:14380)。YouTube / TikTok は静的なのでこの行は出ません。

UI バナーの見え方

⏰ 日次キャップ到達のお知らせ
以下のプラットフォームが 本日の取得上限 に到達しました:
  • 🎵 TikTok: 使用 300/300 件、キュー残 30 件 (1 ジョブ) — 案件: default
  • 📸 Instagram: 使用 600/600 件 (🔄 Pool アカ 3 × 200/アカ)、キュー残 50 件 — 案件: uuum_demo
翌日 00:00 (サーバローカル時刻) 以降に 自動再開します。キューに積まれたジョブはそのまま残っているので、追加操作は不要です。

監視タブのキャップ詳細パネル

  • 🟢 緑カード = 余裕あり、🔴 赤カード = 上限到達
  • 進捗バーで使用率を可視化
  • 到達時は該当案件名 + 残作業件数 + 再開予定時刻を明示
  • 5秒毎自動更新
💡 メンバー視点でやること
バナーや監視タブで「⏰ 上限到達 + 翌日 00:00 以降自動再開」と出たら、そのまま放置して翌日確認するだけで OK。再投入や追加操作は不要です。
⚠️ 上限を上げたい場合 (プラットフォーム別に編集箇所が違う)
  • ▶️ YouTube / 🎵 TikTokjob_queue.py:42PLATFORM_DAILY_CAP["youtube"] / ["tiktok"] を編集 → コンテナ再ビルド。
  • 📸 Instagram / 🐦 X — まず Pool にサブアカを追加 (推奨、自動的に N×200 / N×150 で増える)。それでも足りない場合は job_queue.py:51 PER_ACCOUNT_DAILY_LIMIT もしくは HARD_CEILING_PER_PLATFORM=2000 (L56) を編集。PLATFORM_DAILY_CAP["instagram"] を変えても active アカが 1 個以上ある限り効きません (Pool 0 件時のフォールバック値のため)。
上限値は BAN リスクを抑えるための意図的な設定です。むやみに上げると Cookie Pool アカウントが BAN されるので、サブアカ追加で対応するのが安全。

📌 既知の挙動 / 注意点 (2026-06 監査時点)

  • プラットフォーム名は小文字限定 — cookie_pool 側の alias マップ (cookie_pool.py:34 _PLATFORM_ALIASES) は case-sensitive。外部スクリプト等から "Instagram""IG" を渡すと別ディレクトリ cookie_pool/Instagram/ を参照してしまい、Pool が空扱い → cap が静的フォールバック (200) に落ちます。呼び出しは必ず "instagram" / "x" で統一してください。
  • storage_state ファイル欠落アカも active カウントに含まれる — cookie_pool の status 判定 (cookie_pool.py:117-129) は banned / limit_reached / cooldown のみで分岐し、storage_state_exists=False は考慮されません。そのため account_xxx.json を手動削除した直後は UI には ⚠ 表示が出るが、cap 計算上は active として N にカウントされたままになります。ファイルを消したら必ず該当アカウントを Pool UI から削除するか banned 化してください。
  • cookie_pool が import 失敗した環境では静的フォールバックjob_queue.py:69-78try/except で包まれており、cookie_pool モジュール自体が読めない (VPS で playwright が無い等) ケースでも IG=200 / X=150 の静的キャップで動作します (クラッシュしません)。
  • 横断ジョブ (動画解析・ハッシュタグ・レポート生成) は別枠platform=None のジョブは IG/X/TT/YT の cap に影響しません。専用の 1000/日 + 並列 3 で動きます。

8-2. APIコストとキャッシュ

機能1案件あたりコストキャッシュ
AIコメント分類 (Gemini)¥5〜301度実行すれば再実行不要
動画コンテンツ分析 (Gemini Pro)¥60〜200per-投稿で永続キャッシュ
pptx生成 文章 (Gemini)¥5〜10毎回生成
Google Trends無料24時間キャッシュ

キャッシュは _cache_videos / _cache_analysis / _cache_briefs に保存。同じ動画を2度解析しません。コスト節約のために、解析対象投稿はよく選んでください。

8-3. データ取り扱い

  • プロジェクトデータ は VPS の projects/<案件名>/ に保存
  • 毎日深夜に自動バックアップ (7日分保持) → /srv/comment-analyzer/backups/
  • 退職者の Cookie Pool アカウントは 必ず削除依頼してください
  • クライアント機密情報を含むため、URL を SNS等に投稿しない

8-4. 期間設定の落とし穴

⚠️ Phase 4 で修正済の既知バグ
以前 URL を1件削除した時に、残り全URLの期間が「今日 〜 今日+7日」に勝手に書き換わる不具合がありました。現在は修正済で発生しませんが、念のため URL 操作の前後で期間を目視確認することを推奨します。

正しい期間設定の運用

  • 新規案件登録時に「7d / 30d プリセット」または カスタム日付で指定
  • 1度設定したら、URLの追加・削除をしても期間は保持される
  • 意図的に変更したい場合は「期間プリセット適用」で明示的に変更

8-5. 最近の仕様変更 (差分のみ、運用面で重要)

📌 2026-06 アップデート (Phase 4+)

  • ⏰ 日次キャップ到達アラート — 上限到達時に全タブ最上部にバナー表示 + 監視タブで詳細パネル + Slack 通知 (Webhook 設定時) + 翌日自動再開の案内 (詳細は 8-1b)
  • 📈 IG / X の動的キャップ拡張 — 従来 200/150 固定だった IG/X の日次上限を Cookie Pool の active アカ数 × 200/150 に動的化 (上限 2000、Pool 0 件時は静的フォールバック)。TikTok は 100 → 300 に拡張。TT/YT の静的キャップ・横断ジョブ枠 (1000)・並列上限は従来通り (詳細は 8-1b)
  • 🔗 共有リンク発行 (admin) — アカウント未発行のクライアント等に期限付きの閲覧専用URLを発行可能 (詳細は ⓿-1)
  • 🔒 案件の所有権制御 — 案件を作った人と admin だけが編集・削除可能に。誤操作事故防止 (詳細は ⓿-3)
  • 🔄 URL 単位の再取得ボタン — 🛠️ ツールタブの URL 一覧の各行右側に 🔄 再取得 ボタン。期間外でも特定URLだけ叩き直し可能
  • 🐦 X (Twitter) ハッシュタグ波及分析の復活 — X が anti-bot を強化したが、x-client-transaction-id 署名生成 + cookie_pool/x + chunked 取得で復旧。半年前のデータまで遡れる
  • 🍪 Cookie Pool 管理 (IG / X) — admin がスクレイピング用サブアカウントを Pool 化。BAN リスク対策で複数アカウント rotation (詳細は ⓿-2)
  • 🎵 TikTok クリエイター履歴の VPS 化 — Mac 専用 (Chrome 必須 / CAPTCHA 手動解除) だった旧版を経て、2026-07 に RapidAPI (tiktok-scraper7) 経由 に置換。Cookie 不要・パズル認証不要・100件フル取得可。API Key は環境変数 RAPIDAPI_TIKTOK_KEY で管理。
  • 📊 YouTube PR 判定の精度改善 — 「商品提供」「協賛」等の本文パターン単独では PR 扱いせず、公式 paid_promotion ラベルか PR ハッシュタグを必須化。長文 description の誤検知大幅減
  • 📖 マニュアル はヘッダー右上 📖 マニュアル ボタンから常時アクセス可能に
💡 メンバー視点の変化
  • 普段の取得作業は変わりません。違いは 🔄 再取得 ボタンが各 URL 行に増えただけ
  • 他人の作った案件は編集できなくなりました (admin に依頼)
  • X の波及分析が以前より正確になりました (古いデータも取れる)

⓿. admin 向け運用 (admin ロールのみ)

⓿-1. 🔗 共有リンクの発行 (アカウント未発行者向け閲覧専用URL)

クライアントや社外関係者など システムのアカウントを持たない人 に、レポートを期限付きで閲覧してもらうための機能です。

用途例

  • 広告主への中間レポート共有 (まだ社内アカウントを発行する段階でない場合)
  • 外部協力会社への結果開示
  • 社内承認プロセス用の一時的閲覧URL

発行手順

⚙️ 設定タブを開く
admin のみに表示。
「🔗 共有リンク」セクションへスクロール
ラベル・案件・有効期限を入力
  • ラベル: 後で誰宛か分かるよう (例: ABC社_6月案件)
  • 案件: 「全案件閲覧可」または特定案件を選択
  • 有効期限: 7/14/30/60/90/180 日から選択 (デフォルト 30 日)
「+ 発行」をクリック
モーダルに URL が表示される (例: https://um-kol-analysis.duckdns.org/share/abc...)
「📋 コピー」して Slack/メール 等で共有

受け取り側の体験

  • URL を開くと ログイン不要 でダッシュボードを閲覧可能
  • 編集・削除・取得実行などの操作系ボタンは すべて非表示
  • Cookie Pool 管理 / メンバー管理 / 設定タブ自体 が見えない
  • ブラウザを閉じて開き直しても、有効期限内なら再入場可能
⚠️ 取扱い注意
URL を知っている人なら誰でも閲覧可能 です。Slack の public channel に貼らない・転送NG を相手に伝える等の運用ルールを併用してください。漏洩疑い時は即「失効」で無効化できます。

失効・期限切れ

  • 共有リンク一覧で各 URL の 「失効」 ボタンを押すと即座に無効化 (受け取り側は次のアクセスで「リンク無効」画面)
  • 有効期限が切れたものは自動で「期限切れ」表示
  • 最終アクセス時刻 / アクセス回数 が表示されるので運用監視可能

IG と X のスクレイピングには **logged-in セッション** が必要で、BAN リスク回避のためサブアカウントを 1〜3 個 Pool 化してローテーションさせます。

🚨 必ずサブ/捨てアカウント
絶対にメインアカウント禁止。アカウント発行のルール ([8-1](#caution-ban)) を厳守。BAN で業務不能になります。

📸 Instagram Pool の追加 (Mac 必須)

IG はログイン時の reCAPTCHA / SMS 認証が headless では通らないため、admin の Mac でローカル実行が必要:

Mac のターミナルで
cd "/Users/yuya.m/Desktop/Comment analyzer"
python3 server.py
ブラウザで http://localhost:8080 を開く
⚠️ 本番 URL ではなく localhost
🛠️ ツールタブ → Cookie Pool 管理 (Instagram) → 「+ 追加」
ラベルは空 Enter (username が自動採用される)
headed Chromium が起動 → IG ログイン
必要なら SMS / メール認証も完了
完了後、Mac ローカルの cookie_pool/ig/ に保存される
本番に rsync で同期
rsync -avh --delete \
  "/Users/yuya.m/Desktop/Comment analyzer/cookie_pool/" \
  root@163.44.121.219:/srv/comment-analyzer/cookie_pool/

🐦 X (Twitter) Pool の追加 (本番ダッシュボードから直接)

X は headed ブラウザを使わず、ブラウザ DevTools から Cookie をコピーして登録する方式:

Chrome / 他ブラウザで x.com にサブアカでログイン
DevTools を開く
Mac は 右クリック → 検証 または Cmd+Option+I
Application タブ → Storage → Cookies → ▶ Cookies を展開 → https://x.com をクリック
auth_token の Value をコピー
ct0 の Value をコピー
本番ダッシュボード → 🛠️ ツールタブ → Cookie Pool 管理 (X / Twitter) → 「🐦 X Cookie 追加」
モーダルにラベル + auth_token + ct0 を貼り付け → 保存
ラベル例: miyazaki_xsub1
💡 X のアカウント別ブロック対策
X が個別 sub アカを flag することがあります。Pool に 2〜3 個 入れておくと自動でローテーション (失敗したアカは 5 分 cooldown → 次のアカが使われる)。1個のみだと flag された時に取得不可になります。

運用

  • Cookie の有効期限 (X: 数ヶ月、IG: 数週間〜数ヶ月) が切れたら admin が新値で上書き
  • BAN 検知時は該当アカウントが 🔴 BAN/エラー に自動切替 → 削除 → 新アカ追加
  • メンバーには Cookie Pool 管理セクション自体が表示されない (admin-only UI)

⓿-3. 🔒 案件所有権の運用

2026-06 以降、案件は 作成者と admin だけが編集・削除可能 に変更されました。メンバー間の誤操作事故防止。

ルール

操作case可否
案件名 / URL / 説明文 編集自分が作成
案件名 / URL / 説明文 編集他人が作成❌ 403
案件名 / URL / 説明文 編集admin (誰の案件も)
スクレイプ実行 / 🔄 再取得自分が作成
スクレイプ実行 / 🔄 再取得他人が作成❌ 403
ad_views / コメント分類実行自分が作成
ad_views / コメント分類実行他人が作成❌ 403
案件削除自分が作成
案件削除admin
所有者の変更admin のみ✅ (PATCH /api/projects/<id> body.created_by)

UI 表示

案件バー右側に所有者バッジが出ます:

  • 🟢 🔓 あなたの案件 = 自分が作成 (緑バッジ)
  • 👤 hara_k (admin編集可) = admin が他人案件を表示中 (操作可)
  • 🔴 🔒 hara_k = 他人案件で編集禁止 (✏️/🗑️ ボタンも disabled)
  • 🔓 作成者: 未設定 = 旧案件 (誰でも編集可、後方互換)
⚠️ 既存案件の所有者変更が必要な場合
退職者の案件を引き継ぐ等のシーンでは、admin が PATCH API で created_by を書き換えてください (現状 UI ボタン無し、必要に応じて開発依頼)。

9. FAQ

Q. ログインできません

A. メアド・パスワードのコピペミスを確認 → 改善しなければ管理者に PWリセット依頼。

Q. スクレイピングを押したのに何も動かない

A. 「🔔 監視」タブでジョブキューを確認。queued (待機中) で順番待ち中かもしれません。プラットフォーム別の上限を超えた場合は翌日待ち。

Q. 投稿数が想定より少ない

A. 「💬 コメント分析」タブで「全投稿の AI分類済件数」を確認。IGはコメント取得失敗が稀にあるので、「🛠️ ツール」で再取得を試行。

Q. クリエイティブスコアが表示されない

A. 「🛠️ ツール」でクリエイター履歴を取得していない可能性。各クリエイターの直近10件オーガニック投稿が必要です。

Q. pptx の文章を AI に書き直してもらいたい

A. 「再生成」ボタンで再実行。ただしコストかかるので、できれば手動修正で済ませることを推奨。

Q. 過去の案件データを見たい

A. 案件バーのドロップダウンから過去案件を選択。削除していなければ全データ残っています。

Q. ブラウザを閉じたらログアウトされる?

A. 24時間は再ログイン不要。それ以降は再度ログイン。

Q. スマホで使える?

A. PC推奨ですが、スマホブラウザでも閲覧は可能。ただし散布図の操作・大きなテーブルは PC で。

10. 問い合わせ先

用件連絡先
パスワードリセット / 操作方法管理者 (miyazaki_y@uuum.jp) に Slack DM
機能追加要望 / バグ報告管理者 に Slack DM
本番サーバ障害 (アクセスできない)管理者 + 開発者 同時連絡
クライアントから問い合わせ管理者経由で対応
📚 さらに詳しい情報
サーバの運用ガイド・障害対応プレイブックは社内 GitHub の docs/ ディレクトリ参照。

KOL Post Analytics メンバーマニュアル v1.0
本マニュアルへのフィードバックは管理者まで