コンテンツにスキップ

Bot 統合計画・ユーザーマニュアル

関連Issue: #75(手動起動Botの自動化) 親Issue: #73(Bot・スケジューラー常時起動の整備) 作成日: 2026-03-10


1. 現状の Bot 一覧と役割

1-1. scripts/discord_bot/bot.py(MyLab Bot)

種別: Discord常駐Bot(コマンド応答型) 起動ファイル: scripts/discord_bot/start_bot.bat 自動起動: 未登録(手動起動のみ)

コマンド 機能
$help コマンド一覧表示
$status / $ping Bot稼働状況・レスポンス時間
$savelog <title> <summary> 会話ログ保存
$savelog-i インタラクティブモードでログ保存
$likes [platform] Qiitaストック記事取得・要約→Discord投稿
$summary <URL> Web記事を日本語要約(Gemini)
$translate <URL> Web記事を日本語全文翻訳(Gemini)
$summarize <URL> Web記事を日本語要約(Claude API)
$chat <message> Claude AIとの会話(履歴付き)
$ask <question> Claude AIへの単発質問(履歴なし)
$reset 会話履歴リセット
自然言語トリガー 機能
知りたい: <用語> GitHub Issueを自動作成(ラベル: 知りたい用語)
改善: <内容> GitHub Issueを自動作成(ラベル: enhancement)
リアクション 機能
📌 GitHub Issue作成(知りたい用語)
❤️ GitHub Issue作成(idea)
🔧 GitHub Issue作成(enhancement)

依存関係: - Playwright(記事取得) - Gemini API(要約・翻訳) - Claude API(チャット・要約) - GitHub PAT(Issue作成) - anthropic-learn-bot/ の config.yaml・GeminiSummarizer を共有参照


1-2. projects/anthropic-learn-bot/(Anthropic Learn Bot)

種別: 記事収集Bot(Webhook投稿)+ Discord Bot機能(重複あり) 起動ファイル: projects/anthropic-learn-bot/run_bot.bat 自動起動: run_bot.bat + run_bot.vbs が存在するが Task Scheduler への登録は未確認

モード 機能
python main.py Discord Botとして常駐(デフォルト)
python main.py --bot Discord Botとして常駐(明示指定)
python main.py --once anthropic.com/learn の記事を1回収集してWebhookで投稿
python main.py --dry-run 投稿なしで動作確認
python main.py --login ブラウザセッション保存
python main.py --test Discord接続テスト

Discord Botコマンド(anthropic-learn-botが持つBotとして起動した場合): - $summary <URL> - Web記事要約(Gemini) - $translate <URL> - Web記事翻訳(Gemini) - $chat <message> - Claude AIとの会話 - $ask <question> - Claude AIへの単発質問 - $reset - 会話履歴リセット - $help - ヘルプ表示

重要: anthropic-learn-botが持つDiscord Botコマンドは、scripts/discord_bot/bot.py の MyLab Bot に完全に取り込み済みである。MyLab Bot が稼働していれば anthropic-learn-bot を Bot モードで起動する必要はない。


1-3. projects/bookmark-discord-bot/(BookmarkBot)

種別: X(Twitter)ブックマーク収集Bot(Webhook投稿・定期実行) 起動ファイル: projects/bookmark-discord-bot/run_bot.bat(今回新規作成) 自動起動: 未設定 → 今回 register_task.bat を新規作成

モード 機能
python main.py スケジューラーモード(1時間ごとに自動実行)
python main.py --setup Twitterログイン・Cookie保存(初回のみ)
python main.py --test Discord接続テスト
python main.py --dry-run 投稿なしで動作確認
python main.py --once 1回だけ実行して終了

動作フロー: 1. Playwrightを使ってX(Twitter)のブックマークを取得(最大20件/回) 2. 未投稿のブックマークをフィルタリング 3. Gemini APIで要約(100文字以内) 4. Discord Webhookに投稿 5. 投稿済みIDを data/posted_ids.json に保存 6. 1時間後に繰り返し


1-4. projects/buzz-collector/(Buzz Tweet Collector)

種別: X(Twitter)バズツイート収集Bot(定期実行・スプレッドシート保存) 起動ファイル: projects/buzz-collector/run_scheduler_setup.bat(Task Scheduler登録用) 自動起動: Task Scheduler設定スクリプトあり(登録は手動実行が必要)

モード 機能
python main.py --all-genres 全ジャンルのバズツイートを収集
python main.py --genre <key> 特定ジャンルのみ収集
python main.py --setup twscrapeアカウント登録(初回)
python main.py --setup-bigquery BigQuery初期化(初回)
python main.py --test-connection 接続テスト
python main.py --dry-run 保存なしで確認

対応ジャンル(11種): 犬・猫・小動物・海洋動物・男女関係・政治・野球・キャリア・エンジニア・アダルト動画・漫画

保存先: Google Sheets + BigQuery(1日2回: 9:00 / 21:00)

注意: twscrape(無料)ベースに移行済み。以前使用していた TwitterAPI.io(有料)からすでに変更されている。README.md の記述はまだ古い(TwitterAPI.io の設定手順が残っている)。


2. 重複機能の特定

機能 MyLab Bot Anthropic Learn Bot 備考
$summary <URL> ✅ あり ✅ あり(Bot mode) MyLab Botに統合済み
$translate <URL> ✅ あり ✅ あり(Bot mode) MyLab Botに統合済み
$chat <message> ✅ あり ✅ あり(Bot mode) MyLab Botに統合済み
$ask <question> ✅ あり ✅ あり(Bot mode) MyLab Botに統合済み
$reset ✅ あり ✅ あり(Bot mode) MyLab Botに統合済み
$help ✅ あり ✅ あり(Bot mode) MyLab Botに統合済み
GeminiSummarizer MyLab Bot が anthropic-learn-bot/src/summarizer.pysys.path 経由でインポートして共有 本体 依存関係あり

結論: anthropic-learn-botのDiscord Bot機能はすでにMyLab Botに完全移植されている。anthropic-learn-botは「記事収集 → Webhook投稿」機能のみを残すべきである。


3. 統合方針

3-1. 基本方針

Discord Bot(常駐・コマンド応答)
└── MyLab Bot(scripts/discord_bot/bot.py)  ← 唯一の Discord Bot として継続
    ├── $summary / $translate / $summarize(Web記事要約)
    ├── $chat / $ask / $reset(Claude AI)
    ├── $likes(Qiita記事収集)
    ├── $savelog(会話ログ保存)
    └── GitHub Issue連携(リアクション・自然言語)

記事収集 Bot(定期実行・Webhook投稿)
├── anthropic-learn-bot(anthropic.com/learn 記事 → Discord Webhook)
│   └── --once モードで Task Scheduler から呼び出す ← Bot mode は不要
└── bookmark-discord-bot(X ブックマーク → Discord Webhook)
    └── スケジューラー内蔵(1時間ごとに自動実行)

データ収集 Bot(定期実行・スプレッドシート保存)
└── buzz-collector(バズツイート → Google Sheets + BigQuery)
    └── Task Scheduler で1日2回実行

3-2. anthropic-learn-bot の整理

  • Bot モードは不使用: python main.py --bot / python main.py(デフォルト)での起動は不要
  • 推奨起動方法: python main.py --once を Task Scheduler で定期実行
  • run_bot.bat の内容修正(任意): 現在 main.py --bot で起動しているが、--once + Task Scheduler に切り替えることを推奨

3-3. buzz-collector の方針

  • twscrapeベースに移行済みのため継続稼働可能
  • run_scheduler_setup.bat を実行して Task Scheduler に登録する
  • README.md の TwitterAPI.io 設定手順は実態と乖離しているため更新が必要(別タスク)

4. 自動起動設定

4-1. MyLab Bot(最優先で設定)

ファイル: scripts/discord_bot/start_bot.bat

start_bot.bat には二重起動チェック・venv有効化が実装済みだが Task Scheduler 未登録。

Task Scheduler 登録手順(管理者権限のコマンドプロンプトで実行):

REM ログオン時に非表示で起動するタスクを登録
schtasks /create ^
    /tn "MyLabBot" ^
    /tr "wscript.exe ""D:\Kazuma_Teramachi\MyLab\scripts\discord_bot\start_bot.vbs""" ^
    /sc onlogon ^
    /rl highest ^
    /f

start_bot.vbs が存在しない場合は以下の内容で作成する:

' MyLab Bot - 非表示で起動するVBSラッパー
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """D:\Kazuma_Teramachi\MyLab\scripts\discord_bot\start_bot.bat""", 0, False

4-2. BookmarkBot(今回新規設定)

新規作成ファイル: - projects/bookmark-discord-bot/run_bot.bat - 起動スクリプト(異常終了時自動再起動付き) - projects/bookmark-discord-bot/run_bot.vbs - 非表示起動ラッパー - projects/bookmark-discord-bot/register_task.bat - Task Scheduler 登録スクリプト

Task Scheduler 登録手順:

1. register_task.bat を右クリック → 「管理者として実行」
2. 「[OK] タスクの登録が完了しました」と表示されれば成功
3. タスクスケジューラ(taskschd.msc)で "BookmarkBot" タスクが作成されたことを確認

手動登録の場合(管理者権限のコマンドプロンプト):

schtasks /create ^
    /tn "BookmarkBot" ^
    /tr "wscript.exe ""D:\Kazuma_Teramachi\MyLab\projects\bookmark-discord-bot\run_bot.vbs""" ^
    /sc onlogon ^
    /rl highest ^
    /f

4-3. anthropic-learn-bot(Task Scheduler で定期実行)

現状の run_bot.bat は Bot モードで常駐起動しているため修正が必要。

記事収集(--once モード)を Task Scheduler で定期実行する場合:

REM 毎日9:00に記事収集を実行
schtasks /create ^
    /tn "AnthropicLearnBot_Collect" ^
    /tr "D:\Kazuma_Teramachi\MyLab\venv\Scripts\python.exe D:\Kazuma_Teramachi\MyLab\projects\anthropic-learn-bot\main.py --once" ^
    /sc daily ^
    /st 09:00 ^
    /f

注意: 現在 run_bot.bat が起動中の場合(anthropic-learn-bot が Bot モードで常駐している場合)は、MyLab Bot との競合を避けるために停止すること。


4-4. buzz-collector(既存の設定スクリプトを実行)

1. run_scheduler_setup.bat を管理者権限で実行
2. BuzzTweetCollector_Morning(9:00)と BuzzTweetCollector_Evening(21:00)が登録される

5. 移行手順(推奨順序)

ステップ1: 現状確認

REM 現在のタスク一覧を確認
schtasks /query /fo LIST | findstr "タスク名"

REM 実行中のPythonプロセスを確認
wmic process where "name='python.exe'" get commandline

ステップ2: MyLab Bot の自動起動設定

  1. scripts/discord_bot/start_bot.vbs を作成(内容は §4-1 参照)
  2. 管理者権限のコマンドプロンプトで Task Scheduler に登録
  3. 再起動後に自動起動を確認

ステップ3: BookmarkBot の自動起動設定

  1. projects/bookmark-discord-bot/register_task.bat を管理者権限で実行
  2. python projects/bookmark-discord-bot/main.py --setup で Twitter Cookie を保存(未実施の場合)
  3. 再起動後に自動起動を確認

ステップ4: anthropic-learn-bot の整理

  1. run_bot.bat で Bot モード起動中の場合は停止する
  2. Task Scheduler で --once モードの定期実行タスクを登録する(§4-3 参照)
  3. MyLab Bot が $summary / $translate などのコマンドに応答することを確認する

ステップ5: buzz-collector の自動起動設定

  1. projects/buzz-collector/run_scheduler_setup.bat を管理者権限で実行
  2. タスクが登録されたことを確認する

6. 運用マニュアル

6-1. 起動・停止

Bot 起動 停止
MyLab Bot schtasks /run /tn "MyLabBot" または PC再起動 タスクマネージャーで python.exe を終了
BookmarkBot schtasks /run /tn "BookmarkBot" または PC再起動 タスクマネージャーで python.exe を終了
Anthropic Learn Bot(収集) schtasks /run /tn "AnthropicLearnBot_Collect" 自動終了(--onceモード)
Buzz Collector schtasks /run /tn "BuzzTweetCollector_Morning" 自動終了(1回実行後)

手動起動の場合:

REM MyLab Bot
cd D:\Kazuma_Teramachi\MyLab\scripts\discord_bot
call D:\Kazuma_Teramachi\MyLab\venv\Scripts\activate.bat
python bot.py

REM BookmarkBot
cd D:\Kazuma_Teramachi\MyLab\projects\bookmark-discord-bot
call D:\Kazuma_Teramachi\MyLab\venv\Scripts\activate.bat
python main.py

REM Anthropic Learn Bot(1回収集)
cd D:\Kazuma_Teramachi\MyLab\projects\anthropic-learn-bot
call D:\Kazuma_Teramachi\MyLab\venv\Scripts\activate.bat
python main.py --once

REM buzz-collector(全ジャンル収集)
cd D:\Kazuma_Teramachi\MyLab\projects\buzz-collector
call D:\Kazuma_Teramachi\MyLab\venv\Scripts\activate.bat
python main.py --all-genres

6-2. ログ確認

Bot ログの場所
MyLab Bot コンソール出力のみ(ファイル保存なし)
BookmarkBot projects/bookmark-discord-bot/logs/YYYYMMDD_HHMMSS.log
Anthropic Learn Bot projects/anthropic-learn-bot/logs/YYYYMMDD_HHMMSS.log
Buzz Collector projects/buzz-collector/logs/YYYYMMDD_HHMMSS.log
Task Scheduler タスクスケジューラ → タスク選択 → 「履歴」タブ

最新ログをPowerShellで確認する例:

# BookmarkBot の最新ログ
Get-ChildItem "D:\Kazuma_Teramachi\MyLab\projects\bookmark-discord-bot\logs\" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -First 1 |
    Get-Content -Encoding UTF8

# Anthropic Learn Bot の最新ログ
Get-ChildItem "D:\Kazuma_Teramachi\MyLab\projects\anthropic-learn-bot\logs\" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -First 1 |
    Get-Content -Encoding UTF8

6-3. タスクの管理

REM タスク一覧の確認
schtasks /query /fo TABLE

REM 特定タスクの詳細確認
schtasks /query /tn "BookmarkBot" /fo LIST /v

REM タスクの削除
schtasks /delete /tn "BookmarkBot" /f
schtasks /delete /tn "MyLabBot" /f
schtasks /delete /tn "AnthropicLearnBot_Collect" /f
schtasks /delete /tn "BuzzTweetCollector_Morning" /f
schtasks /delete /tn "BuzzTweetCollector_Evening" /f

6-4. トラブルシューティング

Bot が応答しない場合:

  1. タスクマネージャーで python.exe が起動しているか確認
  2. ログファイルでエラーを確認
  3. 手動で起動して動作確認
  4. Discord Token / Webhook URL が有効か確認(Credentials/ 内のファイルを確認)

二重起動が発生している場合:

REM 実行中のPythonプロセスを確認
wmic process where "name='python.exe'" get processid, commandline

REM PIDを指定して終了(例: PID 1234)
taskkill /pid 1234 /f

Task Scheduler のタスクが起動しない場合:

  1. タスクスケジューラ(taskschd.msc)を開く
  2. 対象タスクを右クリック → 「プロパティ」
  3. 「全般」タブ → 「最上位の特権で実行する」にチェックが入っているか確認
  4. 「トリガー」タブ → トリガーが有効か確認
  5. 「履歴」タブ → エラーコードを確認

7. 認証情報の管理

各 Bot の認証情報は D:\Kazuma_Teramachi\MyLab\Credentials\ に集約されている。

ファイル 用途 対応Bot
Credentials/mylab_discord_bot.json Discord Bot Token, Guild ID MyLab Bot
Credentials/anthropic_learn_bot.json Discord Webhook URL, Anthropic API Key Anthropic Learn Bot, MyLab Bot
Credentials/discord_webhook.json Discord Webhook URL BookmarkBot
Credentials/gemini_api.json Gemini API Key 各Bot
Credentials/github_pat.json GitHub PAT MyLab Bot(Issue作成)
Credentials/x/twscrape_accounts.db X(Twitter)アカウント情報 buzz-collector, x-bookmark-insights

8. 今後の課題

  • scripts/discord_bot/start_bot.vbs を作成して MyLab Bot の自動起動を設定する
  • bookmark-discord-bot/register_task.bat を管理者権限で実行して BookmarkBot を自動起動に登録する
  • BookmarkBot の初回セットアップ(python main.py --setup)で Twitter Cookie を保存する
  • anthropic-learn-bot の run_bot.bat を Bot モードから --once + Task Scheduler に移行する
  • buzz-collector の run_scheduler_setup.bat を実行してタスクを登録する
  • buzz-collector の README.md を twscrape ベースの実態に合わせて更新する(TwitterAPI.io の記述を削除)
  • MyLab Bot のログをファイル保存するように改善する(現在コンソール出力のみ)