9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini CLI + GitHub Actions = クラウド・自然言語・無料の n8n

Last updated at Posted at 2025-07-04

Gemini CLI 無料枠が大きくて魅力的ですね🤩
無料で使い倒せるので、もっと活用していきたいと思っていたところ、Google 公式から Gemini CLI を GitHub Actions で動かせる gemini-cli-action がリリースされているのを発見しました。
Google公式が出しているだけあって、認証周りも整備されていて、何よりMCPに対応していました。

ということは、、、

  • クラウド(GitHub Actions)で動いて
  • 自然言語で処理を記述できて
  • n8n みたいなサービス連携ワークフローが
  • 無料で構築・運用できてしまう

ということです。

とりあえず実例

実例で見ていただくのが分かりやすいと思います。
私はSlackでRSSを購読して情報収集しているのですが「流れてくる量が多くて、追いつかないなー」という課題を感じていました。
これを解決するため「Slackのチャンネルから昨日分のメッセージを拾って、一日一回要約してくれる」ワークフローを作ってみます。

name: Gemini Slack Summary

on:
  workflow_dispatch: {}
  schedule:
    - cron: '0 23 * * *'  # 毎日日本時間8時(UTC 23時)

jobs:
  summarize-slack:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      contents: read
      id-token: write
    steps:
      - name: Run Gemini Slack Summary
        uses: google-gemini/gemini-cli-action@main
        env:
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
          SLACK_TEAM_ID: ${{ secrets.SLACK_TEAM_ID }}
          SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
        with:
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
          settings_json: |
            {
              "mcpServers": {
                "slack": {
                  "command": "npx",
                  "args": ["-y", "@modelcontextprotocol/server-slack"],
                  "env": {
                    "SLACK_BOT_TOKEN": "$SLACK_BOT_TOKEN",
                    "SLACK_TEAM_ID": "$SLACK_TEAM_ID"
                  }
                }
              },
              "coreTools": [
                "mcp__slack__slack_get_channel_history"
              ]
            }
          prompt: |
            あなたは Slack の要約アシスタントです。
            1. ${{ secrets.SLACK_CHANNEL_ID }} から日本時間で昨日分のメッセージを取得してください。
            2. 主な議論のトピックと頻繁に共有されたリンクを特定してください。
            3. 見つかった内容を短い段落と人気記事の箇条書きでまとめてください。
            4. リンクを含める場合は Slack のリンク形式 `<URL|リンクテキスト>` を使用してください。
            5. 要約を Slack の `#general` チャンネルに投稿します

たったの1ステップだけでできてしまいます🤯

プロンプト設定

注目すべきは一番下の prompt のところです。
日本語でやりたいことを書けば、あとはGeminiが適切なMCPサーバを選択して、よしなに処理してくれます。
仕様書がそのまま動いている感じですね、すごい時代です。

MCP設定

MCPの設定は settings_json の中で設定します。
よくあるJSON形式のMCP設定を書いてあげればOKですが、MCPで使うツールは coreTools の箇所で mcp__${server_name}__${tool_name} のような形で明示してあげる必要があります。
また、ここの coreToolsrun_shell_command(curl) などを追加すれば、シェルコマンドも使えるようになります。

認証設定

認証は GEMINI_API_KEY です。
詳しい手順は公式参照ですが、 Google AI Studio からAPIキーを発行すれば無料枠の範囲内で使えます。

動作確認

実際に動かしてみると、

スクリーンショット 2025-07-04 18.46.16.png

こんな感じで動いて、

スクリーンショット 2025-07-04 18.47.40.png

投稿してくれました 😮

おわり

GitHub Actions や MCP について知らなくてもAIに投げたら、いい感じにワークフローを書いてくれるので、ほんと手間がかからないです。このワークフローもほとんどAIに書いてもらいました。
Gemini CLI の無料枠がいつまで続くかわからないですが、使えるうちは使い倒しておこうかなと思っています。

9
3
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
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?