Discordに投稿したYouTube動画URLをBotが検知し、Antigravityで要約とMarkdown保存を自動化する仕組みを解説します。Webhookの仕様制限からBot作成、特権インテントの有効化、外部スキルによるインラインファクトチェック、PDFの自動生成、定期巡回の常駐化手順までを整理しました。
はじめに
スマートフォンやPCのDiscordチャンネルへYouTubeのURLを投稿するだけで、自動的に文字起こしと内容要約を行い、Googleドライブ上のナレッジベース(Markdownファイル)へ自動追記した上で、読みやすくレイアウトされたPDFレポートをスマホへ添付返信する完全自動化システムを構築できます。
この仕組みを実現するには、送信専用であるWebhookの制約を理解し、メッセージ読み取り権限を持つDiscord Botを作成する必要があります。さらに、プロンプトをコードから分離した外部スキル管理、事実関係を各論点直下で検証するインラインファクトチェック、そしてスマートフォンの画面で閲覧しやすいPDF自動生成パイプラインを組み合わせることで、実用性の極めて高い情報収集基盤が完成します。
本記事では、Botの作成手順から必要な権限設定、スキルの設計思想、美麗PDF変換、定期巡回の運用方式までを順を追って解説します。
動画分析手法の比較
AIエージェントによる動画データの処理は、取得元の仕様や計算リソースに応じて主に3つの方式に分類されます。
| 分析手法 | 処理の流れ | メリット | デメリット・制約 |
|---|---|---|---|
| 字幕スクレイピング | YouTubeの字幕データを取得してテキスト解析 | 高速かつ低リソースで動作し追加費用なし | 字幕非公開の動画には非対応、画面内の図表は取得不可 |
| Gemini API直接連携 | APIへURLやファイルを渡し一括解析 | 音声、BGM、画面内の資料や数値を完全解析可能 | APIキーの設定が必要、動画の長さに応じてクォータ消費 |
| 音声抽出とローカル認識 | 音声データを抽出し端末内モデルで文字起こし | 字幕のない動画に対応可能、外部APIキー不要 | 映像情報は認識不可、端末の計算資源と処理時間を消費 |
日常的なテキスト中心の要約には、低負荷かつ短時間で完了する字幕スクレイピングが適しています。スライド資料や画面上のコード表示など、視覚情報が主体の動画を扱う場合はマルチモーダル解析へのフォールバックを適用します。
DiscordのWebhookとBotの違い
Webhookは外部サービスからDiscordへメッセージを投稿する送信専用のインターフェースです。チャンネル内の投稿内容を取得する権限を持たないため、ユーザーがスマホから投稿したURLを読み取ることができません。
これに対し、Discord BotはGateway APIを経由してチャンネル内の投稿をリアルタイムまたは定期的に取得できます。メッセージの本文を解析し、外部スクリプトやAIエージェントと連携して高度な要約処理やファイル送信を実行できます。
| 機能項目 | Webhook | Discord Bot |
|---|---|---|
| 通信方向 | 送信(書き込み)専用 | 双方向(読み取りおよび送信) |
| 認証方式 | Webhook URL | Bot Token |
| メッセージ本文の取得 | 不可 | 可能(特権インテントが必要) |
| ファイル添付送信 | 可能 | 可能(Markdown、PDF等) |
| リアクションの追加 | 不可 | 可能(処理済みの可視化) |
| 主な用途 | 処理完了通知・ファイル送信 | チャンネル巡回監視および対話処理 |
本システムでは、「Bot Tokenで未処理メッセージを巡回取得・リアクション付与」し、「Webhookで要約サマリーと生成PDFを高速送信」するという両者の長所を組み合わせたハイブリッド構成を採用しています。
Discord Botの作成と初期設定
Discordチャンネル内の投稿を取得するために、Discord Developer Portalから専用のBotを作成します。
手順1: アプリケーションとBotの作成
- ブラウザで Discord Developer Portal へアクセスします。
- 画面右上にある「New Application」を選択します。
- アプリケーション名(例:
Antigravity)を入力し、作成ボタンを押します。 - 左側メニューの「Bot」を選択します。
- 「Reset Token」を実行し、表示されたBot Tokenを安全な場所に控えます。
手順2: 特権インテント(Message Content Intent)の有効化
Botがメッセージのテキスト本文(URL等)を読み取るためには、特権インテントの明示的な許可が必須です。ここがOFFのままだと、APIから取得できるメッセージ本文が空文字("")になり、URLを抽出できません。
- Bot設定画面内の「Privileged Gateway Intents」セクションまでスクロールします。
- 「MESSAGE CONTENT INTENT」 のスイッチをクリックして有効(青色/ON)にします。
- 画面下部に表示される緑色の「Save Changes」を選択して設定を保存します。
- ※「アプリ認証(100件を超えるサーバーへの拡大)」の警告は一般配布用のため、個人利用では放置して構いません。
手順3: 権限の付与とサーバーへの招待
Botがメッセージの読み取り、返信、リアクション付与を行えるように権限を設定した招待URLを生成します。
- 左側メニューの「OAuth2」から「URL Generator」を開きます。
- SCOPES一覧から「bot」を選択します。
- BOT PERMISSIONS一覧から以下の必要な権限を選択します。
- 画面最下部に生成されたURLをブラウザの別タブで開き、導入先のサーバーを選択して認証・参加させます。
| 権限名 | 用途 |
|---|---|
| View Channels | チャンネルの閲覧とメッセージ受信 |
| Read Message History | チャンネル内の過去メッセージの巡回取得 |
| Send Messages | 要約サマリーのテキスト返信 |
| Attach Files | 整形済みPDFレポートの添付返信 |
| Add Reactions | 処理完了を示すチェックスタンプ(✅)の付与 |
※個人運用のサーバーで権限管理を簡素化したい場合は、管理者権限(Administrator)を付与することで上記すべての権限をまとめて適用できます。
プロンプト外部化とインラインファクトチェック設計
保守性と要約精度の向上のため、プログラムのコードや引数にプロンプトを直接記述せず、独立したスキル定義ファイル(SKILL.md)を動的に読み込むアーキテクチャを採用しています。
【管理】ルール・作業用コード/
├── SKILL/
│ ├── content-summarization/ # 動画・PDF・Web等あらゆる媒体を統合要約するスキル
│ │ └── SKILL.md
│ └── fact-check-add/ # 各段落直下にインラインで妥当性・一次情報を追記するスキル
│ └── SKILL.md
├── skill_loader.py # スキルを動的に読み込みプロンプトを構築するローダー
└── md_to_pdf.py # Chrome Headlessを用いた美麗PDF変換ツール
1. 媒体統合要約スキル(content-summarization)
従来の動画用スキル(video-summarization)と文書用スキル(doc-summarization)を統合し、YouTube動画のタイムスタンプ付き構造化テキストだけでなく、PDF資料やWeb記事にも同一パイプラインで自動適応する汎用スキルです。
2. インラインファクトチェック追加スキル(fact-check-add)
従来の末尾に独立した別表を配置する形式から改良し、要約テキストの各段落やタイムスタンプごとの発言内容の直下にインラインで検証ブロックを挿入します。
【00:03:14】 ①部屋の空間が予想より狭くなってしまい後悔:一条工務店の高断熱工法による壁厚の影響で...(本文テキスト)
> 🔍 **ファクトチェック【妥当】**: 一条工務店(i-smart等)の外壁厚は約190〜200mm以上あり、一般的な木造(約130mm)に比べ内法有効寸法が狭小化する現象は建築工法上の事実と一致。
> 📚 **根拠・一次情報**: 一条工務店公式仕様(外内ダブル断熱構法)、JIS A 0001
読者は本文を読み進めながら、主張の客観的な妥当性(妥当/過大表現/根拠不足/誤り)とその公的根拠をその場で瞬時に把握できます。
自動処理パイプラインのデータフロー
Botが取得した動画情報は、以下のステップを経て自動処理され、永続化とスマホへのフィードバックが行われます。
【① スマホ(Discord)】
YouTube動画のURLをチャンネルへ投稿
↓
【② 定期巡回スクリプト】
未処理メッセージを抽出し、URLを取得
↓
【③ スキル連携 & ナレッジ蓄積(PC)】
1. skill_loader.py 経由で「content-summarization」を呼び出し構造化要約
2. skill_loader.py 経由で「fact-check-add」を呼び出しインライン検証を追記(最終版作成)
3. 内容に応じて既存の専用ナレッジファイル(例:「【3次】【家】注文住宅.md」)末尾へ追記
4. タイムスタンプ正規化(clean_markdown_timestamps.py)と目次(INDEX.md)の自動更新
↓
【④ 美麗PDF化 & Discord返信】
1. md_to_pdf.py を実行し、Chrome HeadlessでA4最適化デザインのPDFを生成
2. 元投稿に「✅」リアクションを付与(重複防止)
3. Webhook経由で要約サマリーEmbedと【PDFファイル】を添付返信!
スマートフォン閲覧に最適化した美麗PDF自動生成
MarkdownファイルをそのままスマホのDiscordで閲覧すると、テーブルの崩れや装飾の欠落が発生しがちです。本システムでは、macOS環境の Google Chrome Headless(--headless --print-to-pdf)を活用し、外部ライブラリを追加することなく、以下のCSSデザインを適用したA4縦レイアウトのPDFを瞬時に生成します:
- 美しいタイポグラフィ: 日本語システムフォント(Hiragino Sans / Noto Sans JP)に最適化。
- 見出し・テーブル装飾: カラーアクセント付きの見出しボーダー、交互背景色の表組み。
- ファクトチェック枠: コールアウト(引用枠)に緑や黄の境界線と背景色を付与し、検証結果を一目で判別可能に。
- タイムスタンプバッジ:
【00:00:00】をインラインバッジとして視認性向上。
これにより、外出先でもスマホのDiscordから添付PDFをタップするだけで、プロフェッショナルなレポートを快適に閲覧・保管できます。
定期巡回実行の常駐化方式
Discordのチャンネルを定期的にチェックして自動処理を実行させる方式には、OS標準のデーモンを利用する方法と、作業セッション内のスケジューラを利用する方法の2種類が存在します。
| 方式 | 実行基盤 | 長所 | 短所 |
|---|---|---|---|
| launchd常駐(推奨) | macOSバックグラウンド (~/Library/LaunchAgents/) |
アプリ終了時やMac再起動後も完全自動で30分おきに常駐巡回する | plist設定ファイルの登録が必要 |
| セッション内タイマー | Antigravity チャットセッション内部 | チャット上からの指示のみで手軽に開始・停止ができる | アプリを閉じると停止し、タスクが実行中表示として残る |
常時稼働しているMac mini等が存在する場合は、OS標準の launchd による自動常駐が最も安定しており、画面上のタスク残存も発生しないため最適です。
まとめ
Webhookの送信機能とBotの巡回取得機能を組み合わせ、外部スキルによるインラインファクトチェックとChrome Headlessによる美麗PDF生成を連携させることで、スマートフォンとPC、そしてローカルナレッジベースが完全にシームレスに結びつきました。
スマホで気になった動画をDiscordに共有しておくだけで、一次情報に基づく検証済みの知識が自動的にGoogleドライブへ蓄積され、美しいレポートが手元に届く理想的な情報収集環境が構築できます。
関連コンテンツ

コメント