0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルのCLIからクラウドのGrok Botへ GitHubのissueで非同期に調べ物を頼む

0
Last updated at Posted at 2026-10-27

2026年10月27日 日本時間2時時点の情報です。仕組みは自分の環境で動かしているもので、コマンドの説明は手元のスクリプトと README、GitHub CLI の公式マニュアルで、Grok Bot の説明は xAI の公式ドキュメントで確かめています。

3行まとめ

CLIで作業しながら、Xを調べさせる。ターミナルで ask-grokbot "依頼文" と打つと、GitHubのissueを作って担当を付け、Grok Botが起動して調べる。回答をコメントしてissueを閉じると、ターミナルに回答が出る。依頼がない間、Grok Botは動かない。

  • 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 に調べ物を頼める道を作りました。

直接話せない2つのAIの間にissueを置く。ターミナルのAI(Claude Code、Codex CLI)はXの最新投稿を読めない。Grok BotはXの公開投稿とWebを検索できる。GitHubのissueは、どちらからも読み書きできる。

先に知っておく言葉

先に知っておく4つの言葉。CLIはターミナルに文字を打って使うプログラムで、この記事ではターミナルで動くAIのこと。issueはGitHubでやることや相談を1件ずつ書く掲示板。アサインはissueに担当者を付けること。ルーティンは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 やメールなどで何かが起きたことをきっかけに、自動で動きます。

仕組み

依頼から回答までは、次の順に進みます。

依頼から回答までの流れ。ターミナルでask-grokbotを実行し、issueを作り、自分を担当者にする。アサインをきっかけにGrok Botのルーティンが起動し、調べて回答をコメントし、issueを閉じる。ターミナルは20秒ごとに状態を確認し、閉じたら回答を表示する。

  1. CLI の AI が ask-grokbot "依頼文" を実行する
  2. スクリプトが gh issue create で issue を作る。本文は依頼文そのままで、最後に呼び出したフォルダ名と依頼時刻が自動で付く
  3. 続けて gh issue edit --add-assignee @me で、自分を担当者にする
  4. このアサインをきっかけに、Grok Bot のルーティンが起動する
  5. Grok Bot が調べて、結果を issue にコメントし、issue を閉じる
  6. ask-grokbot は20秒ごとに gh issue view --json state で issue の状態を確かめ、閉じられたらコメント本文をターミナルに出して終わる
  7. 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 では作成とアサインを別のコマンドにしています。ルーティンを動かすきっかけを「アサインされた」という出来事にしているので、その出来事を確実に起こすためです。

作成とアサインを分け、アサインで起動させる。gh issue createでissueを作り、別のコマンドgh issue edit --add-assignee @meで担当を付ける。自分が付けたときだけ「アサインされた」で起動する。読むのはその1件だけで、閉じたissueは読み直さない。常に見張らないので、依頼がない間はトークンを使わない。

この形にしたことで、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行で知らせるようにしました。

実際に動かした結果

調べ物の依頼は約2分で回答。20:34に動画編集用のミーム素材探しのissueを作成し、20:36にGrok Botが回答をコメントしてissueを閉じた。

動画編集用のミーム素材探しを頼みました。20:34 に頼み、20:36 に Grok Bot が回答をコメントして issue を閉じました。約2分です。

自分で作るときに確かめること

自分で作るときに確かめる4つ。両方のAIが読み書きできる場所がある。受け取る側は何か起きたときだけ動く。起動のきっかけを自分の操作に絞った。させない操作を決めて、頼まれても断る。

  • 2つの AI の両方が読み書きできる場所はあるか(今回は GitHub の issue と gh コマンド)
  • 受け取る側は、常に見張るのではなく、何かが起きたときだけ動けるか
  • 起動のきっかけを、自分の操作だけに絞れているか(今回は自分がアサインしたときだけ)
  • 受け取る側にさせない操作を決めて、頼まれても断るようにしたか

注意点

  • 同じ依頼を2回出しても、重複は検知しません。ask-grokbot は呼ばれるたびに新しい issue を作るので、どちらも別の依頼として処理されます。
  • 依頼の文面は issue に残ります。API キーやパスワードは書かないでください。

まとめ

直接話せない2つの AI でも、両方が読み書きできる場所が1つあればつなげます。今回はそれが GitHub の issue でした。

効いたのは、作成とアサインを分けて「アサインされた」で Grok Bot を起こす形にしたことです。依頼がない間、Grok Bot は動きません。待つ側も GitHub に状態を聞くだけなので、待っている間は AI のトークンを使いません。

出典

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?