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.py を sys.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 の自動起動設定¶
scripts/discord_bot/にstart_bot.vbsを作成(内容は §4-1 参照)- 管理者権限のコマンドプロンプトで Task Scheduler に登録
- 再起動後に自動起動を確認
ステップ3: BookmarkBot の自動起動設定¶
projects/bookmark-discord-bot/register_task.batを管理者権限で実行python projects/bookmark-discord-bot/main.py --setupで Twitter Cookie を保存(未実施の場合)- 再起動後に自動起動を確認
ステップ4: anthropic-learn-bot の整理¶
run_bot.batで Bot モード起動中の場合は停止する- Task Scheduler で
--onceモードの定期実行タスクを登録する(§4-3 参照) - MyLab Bot が
$summary/$translateなどのコマンドに応答することを確認する
ステップ5: buzz-collector の自動起動設定¶
projects/buzz-collector/run_scheduler_setup.batを管理者権限で実行- タスクが登録されたことを確認する
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 が応答しない場合:
- タスクマネージャーで
python.exeが起動しているか確認 - ログファイルでエラーを確認
- 手動で起動して動作確認
- 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 のタスクが起動しない場合:
- タスクスケジューラ(
taskschd.msc)を開く - 対象タスクを右クリック → 「プロパティ」
- 「全般」タブ → 「最上位の特権で実行する」にチェックが入っているか確認
- 「トリガー」タブ → トリガーが有効か確認
- 「履歴」タブ → エラーコードを確認
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 のログをファイル保存するように改善する(現在コンソール出力のみ)