2026年10月27日 日本時間2時時点の情報です。仕組みは自分の環境で動かしているもので、コマンドの説明は手元のスクリプトと README、GitHub CLI の公式マニュアルで、Grok Bot の説明は xAI の公式ドキュメントで確かめています。
3行まとめ
- Mac のターミナルで動く AI(Claude Code や Codex CLI)から
ask-grokbot "依頼文"と打つだけで、X の情報集め全般や Web の調べ物を、Grok Bot に頼めるようにしました。 - 2つの AI の間に直接の通り道はないので、GitHub の private リポジトリの issue を受け渡しの場所にしています。
- issue を「作る」と「担当者を付ける」を分け、担当者が付いたときだけ Grok Bot が動くようにしました。依頼がない間、Grok Bot は動きません。
一言でいうと何の話か
ターミナルの AI は X の最新投稿を直接読めません。一方、Grok Bot は X の公開投稿と Web を検索できます。ただ、この2つはお互いに直接やりとりできません。
そこで、両方が読み書きできる GitHub の issue を間に置き、ターミナルの AI が困ったら Grok Bot に調べ物を頼める道を作りました。
先に知っておく言葉
CLI は、ターミナルに文字を打って使うプログラムのことです。この記事では、ターミナルで動く AI(Claude Code、Codex CLI)を「CLI の AI」と呼びます。
issue は、GitHub でリポジトリごとに作れる「やることや相談を1件ずつ書く掲示板」です。誰かがコメントを書いたり、閉じて(close して)完了にしたりできます。
アサインは、issue に担当者を割り当てることです。GitHub CLI(gh コマンド)では gh issue edit 番号 --add-assignee @me と打つと、自分を担当者にできます。
ルーティンは、Grok Bot に保存しておく「やること」です。決まった時刻か、GitHub やメールなどで何かが起きたことをきっかけに、自動で動きます。
仕組み
依頼から回答までは、次の順に進みます。
- CLI の AI が
ask-grokbot "依頼文"を実行する - スクリプトが
gh issue createで issue を作る。本文は依頼文そのままで、最後に呼び出したフォルダ名と依頼時刻が自動で付く - 続けて
gh issue edit --add-assignee @meで、自分を担当者にする - このアサインをきっかけに、Grok Bot のルーティンが起動する
- Grok Bot が調べて、結果を issue にコメントし、issue を閉じる
-
ask-grokbotは20秒ごとにgh issue view --json stateで issue の状態を確かめ、閉じられたらコメント本文をターミナルに出して終わる - Grok Bot は自分のチャットにも、どのリポジトリから何の依頼が来て何をしたかを、issue へのリンクつきで1〜2行で知らせる
ルーティンのきっかけの設定は、次のとおりです。
{"type":"github","repo":"自分の名前/リポジトリ名","events":["issue-assigned"],"userAllowlist":["自分の名前"]}
自分がアサインしたときだけ起動するので、他の人が作った issue では動きません。
なぜ issue を選んだか
CLI の AI と Grok Bot は、お互いに直接メッセージを送れません。両方が触れる場所として、GitHub の issue を選びました。
- CLI 側は、
ghコマンドで issue を作って読める - Grok Bot 側は、GitHub で起きた出来事をきっかけにルーティンを動かせる
- 依頼と回答が issue として残るので、どのフォルダから、いつ、何を頼んだかを後から追える
何をしたか
作成とアサインを分けた
issue を作るときに担当者も一緒に付けることはできますが、ask-grokbot では作成とアサインを別のコマンドにしています。ルーティンを動かすきっかけを「アサインされた」という出来事にしているので、その出来事を確実に起こすためです。
この形にしたことで、Grok Bot は issue を常に見張らなくて済みます。起動したときに読むのはアサインされた issue 1件だけで、閉じた issue は読み直しません。issue の件数が増えても、1回の依頼で使うトークン(AI の利用料の単位)は増えません。依頼がない間はトークンを使いません。
待つ側は20秒ごとに状態だけ見る
回答を待つ間、Mac 側は20秒ごとに issue の状態を GitHub に問い合わせます。これはスクリプトが GitHub に聞いているだけなので、待っている間、CLI の AI はトークンを使いません。CLI の AI がトークンを使うのは、依頼を出すときと、返ってきた回答を読むときです。
ask-grokbot の使い方は次のとおりです。依存しているのは gh コマンドだけの、bash のスクリプトです。
# 依頼して回答を待つ(既定は最大20分)
ask-grokbot "Godot 4.5 の新機能について X で話題になっている投稿をまとめて"
# 標準入力から渡す
echo "Remotion の最新リリースへの反応を X で調べて" | ask-grokbot
# 依頼だけしてすぐ戻る(issue の URL が出る)
ask-grokbot --no-wait "〇〇について調べて"
# 出しておいた依頼 #12 の回答を待つ
ask-grokbot --wait 12
--timeout で待つ時間(分)を変えられます。終了コードは、回答ありが 0、エラーが 1、時間切れが 2 です。時間切れや Ctrl-C で止めたときは、再開用の ask-grokbot --wait 番号 が表示されます。一時的な通信エラーでは止まらず、次の確認まで待ちます。
待たずに頼めるようにした
普通に頼むと、回答が来るまで、呼んだ CLI の AI はそこで止まります(既定で最大20分)。
--no-wait を付けると、issue を作ってすぐ戻ります。CLI の AI は次の作業を続けられます。
調べ物はクラウドの Grok Bot 側で進みます。xAI の説明では、Grok Bot はクラウド上のパソコンで作業し、ノートPCを閉じても作業は止まりません。なので、頼んだあとは Mac の作業も AI の作業も止まりません。
回答は、後で ask-grokbot --wait 番号 で受け取ります。その時点で issue が閉じていれば、待たずにすぐ回答が出ます。
CLI の AI に使い方を覚えさせた
Mac 全体で読まれる AI の設定ファイルに、「X や Web の最新情報が必要なら ask-grokbot を使う」と書きました。Claude Code は ~/.claude/CLAUDE.md、Codex CLI は ~/.codex/AGENTS.md です。これで、どのリポジトリで作業しているときでも使えます。
書いた内容は次のとおりです(README に置いている、AGENTS.md に貼る用の文面)。
## X / Web の調べ物
- X の投稿や Web の最新情報が必要なときは `ask-grokbot "依頼文"` で Grok Bot に調査を頼める。回答は標準出力に返る
- 回答には数分かかる。待つ間に他の作業を進めたいときは `ask-grokbot --no-wait "依頼文"` で依頼し、後で `ask-grokbot --wait <issue番号>` で受け取る
- 終了コード 2 はタイムアウト。表示された `ask-grokbot --wait N` で再開する
- 依頼文に秘密情報を含めない
させない操作を決めた
issue で X への投稿、DM、削除、購入などを頼まれても、Grok Bot は実行せず、できないことをコメントで返します。
依頼の中身は private リポジトリとはいえ issue に残るので、秘密情報は書きません。
依頼が届いたことを知らせるようにした
最初は、依頼が届いたかどうかが分からず不安でした。そこで、依頼のたびに Grok Bot が自分のチャットへ、どのリポジトリから何の依頼が来て何をしたかを、issue へのリンクつきで1〜2行で知らせるようにしました。
実際に動かした結果
動画編集用のミーム素材探しを頼みました。20:34 に頼み、20:36 に Grok Bot が回答をコメントして issue を閉じました。約2分です。
自分で作るときに確かめること
- 2つの AI の両方が読み書きできる場所はあるか(今回は GitHub の issue と
ghコマンド) - 受け取る側は、常に見張るのではなく、何かが起きたときだけ動けるか
- 起動のきっかけを、自分の操作だけに絞れているか(今回は自分がアサインしたときだけ)
- 受け取る側にさせない操作を決めて、頼まれても断るようにしたか
注意点
- 同じ依頼を2回出しても、重複は検知しません。
ask-grokbotは呼ばれるたびに新しい issue を作るので、どちらも別の依頼として処理されます。 - 依頼の文面は issue に残ります。API キーやパスワードは書かないでください。
まとめ
直接話せない2つの AI でも、両方が読み書きできる場所が1つあればつなげます。今回はそれが GitHub の issue でした。
効いたのは、作成とアサインを分けて「アサインされた」で Grok Bot を起こす形にしたことです。依頼がない間、Grok Bot は動きません。待つ側も GitHub に状態を聞くだけなので、待っている間は AI のトークンを使いません。






