Written by
John Doe
公開日
2026-03-01

目次

GTMのタグ設定は、慣れた人でも手間がかかる。トリガーの条件を一つ間違えれば計測が壊れるし、変数の命名規則を揃えるだけで半日が飛ぶこともある。そうした作業をAIに任せられるとしたら、試してみたくなるのが自然だろう。

SEM Technologyが公開したオープンソースツール「GTM Copilot」は、まさにそこを狙ったプロダクトだ [1]。GTMのAPIを使い、タグ・トリガー・変数の設定をJSONファイルとして抽出し、AIエージェントに編集させ、そのまま書き戻す。手作業でGTMの管理画面をポチポチ操作する必要がなくなる。

この記事では、GTM Copilotの仕組みから導入手順、そして実際にセットアップする中でハマりやすいポイントまで、一つずつ解説する。

GTM Copilotで何が変わるのか

GTM Copilotの核となる機能は二つある。

機能内容
対話型の構成案生成「GA4の購入完了イベントを計測したい」と伝えるだけで、AIが必要なタグ・トリガー・変数をJSON形式で組み立てる
GTMへの直接インポート生成された設定ファイルをコマンド一つでGTMコンテナに反映できる。管理画面を開いて手動で入力する工程が丸ごと消える

手動の設定作業が減れば、入力ミスも減る。GTMの構成が複雑になればなるほど、この恩恵は大きくなる。

すでにGoogle Ads MCPやMeta Ads MCPなど他の広告系ツールをClaude Codeと連携させている場合、GTM Copilotを加えることで、ターミナルからGTMの操作まで一元管理できるようになる。広告運用とタグ管理を同じワークスペースで完結させたい人にとっては、導入する動機は十分だろう。

動作の仕組み

GTM Copilotの3段階アーキテクチャ
Export→Edit→Importの3段階パイプライン

GTM Copilotの動きは3段階に分かれている [2]

まず抽出(Export)。現在のGTMコンテナからタグ・トリガー・変数の情報をAPIで取得し、ローカルにJSONファイルとして保存する。次に編集。保存されたJSONファイルをAIエージェントが書き換える。ユーザーの指示に応じて、新しいタグを追加したり、トリガーの条件を変更したりする。最後に同期(Import)。編集済みのJSONファイルをAPIでGTMコンテナに書き戻し、変更を反映する。

つまり、GTM Copilotは管理画面の代わりにAPIを使い、設定の読み書きを自動化している。AIが介在するのは、JSONファイルの編集部分だ。

導入・設定ガイド

Google Cloud認証設定
Google Cloudでの認証情報取得プロセス

ここからが本題。設定にはGoogle Cloud Platformでの認証情報の発行が必要になるため、慣れていない人にはやや骨が折れる。ただ、手順どおりに進めれば問題ない。

準備するもの

GTM Copilotを動かすには、Python 3.xの実行環境とGoogleアカウントが必要だ。Pythonが入っていない場合は、python.org からインストーラーをダウンロードして先に入れておく。

STEP 1 GTM Copilotのダウンロード

GitHubのReleasesページ [3] にアクセスし、gtm-copilot_v0.0.1.zipをダウンロードする。解凍するとgtm-copilotフォルダが出てくるので、デスクトップなど分かりやすい場所に置いておく。

フォルダの中身は以下のような構成になっている。

ファイル・フォルダ役割
SKILL.mdスキル定義ファイル。AIエージェントがこのツールの使い方を理解するための説明書
.env.example認証情報を書き込むテンプレート
scripts/bin/auth.py(認証)、export.py(抽出)、import.py(同期)の実行スクリプト
scripts/helpers/GTM APIクライアントや認証モジュールなどの内部ロジック
resources/タグ・トリガー・変数のサンプルJSON。実装時の参考になる

STEP 2 Google Cloudで認証情報を取得する

GTM CopilotがGTMのAPIを叩くには、OAuth 2.0の認証情報が要る。Google Cloud Consoleで発行する [4]

2-1. プロジェクトを作成する

Google Cloud Console にログインし、画面上部のプロジェクト選択メニューから「新しいプロジェクト」を選ぶ。プロジェクト名は何でもいい。GTM-Copilotなど分かりやすい名前を付けて作成する。

2-2. Tag Manager APIを有効にする

作成したプロジェクトを選択した状態で、画面上部の検索バーに「Tag Manager API」と入力する。検索結果に表示された「Tag Manager API」をクリックし、「有効にする」ボタンを押す。

2-3. OAuth同意画面を設定する

左側メニューの「APIとサービス」から「OAuth同意画面」を開く。以下の項目を入力して保存する。

設定項目入力内容
User Type外部
アプリ名GTM Copilot(任意の名前でOK)
ユーザーサポートメール自分のメールアドレス
デベロッパーの連絡先自分のメールアドレス
スコープ追加不要(そのまま次へ進む)
テストユーザー自分のGoogleアカウントのメールアドレスを追加
テストユーザーの追加を忘れると、後の認証ステップでaccess_deniedエラーが出る。OAuth同意画面のステータスが「テスト」の場合、テストユーザーに登録されたアカウントしか認証を通過できない。ここは見落としやすいポイントなので必ず確認してほしい。

2-4. OAuth 2.0 クライアントIDを発行する

「認証情報」メニューに移動し、「+ 認証情報を作成」から「OAuth クライアント ID」を選ぶ。

設定項目入力内容
アプリケーションの種類ウェブ アプリケーション
名前GTM Copilot Client(任意)
承認済みのリダイレクト URIhttp://localhost:8000
「承認済みの JavaScript 生成元」ではなく「承認済みのリダイレクト URI」の方に追加すること。間違えるとredirect_uri_mismatchエラーが発生する。この二つの入力欄は紛らわしいので注意が必要だ。

「作成」をクリックすると、クライアントIDとクライアントシークレットが表示される。この2つは後で使うので、テキストファイルなどに控えておく。

STEP 3 リフレッシュトークンを取得する

クライアントIDとシークレットだけでは、APIを継続的に使うことができない。リフレッシュトークンと呼ばれるもう一つの鍵が必要になる。GTM Copilotにはこのトークンを取得するためのスクリプトが同梱されている。

コマンドプロンプト(Windowsの場合)またはターミナル(Macの場合)を開き、以下のコマンドでGTM Copilotのスクリプトフォルダに移動する。

cd /path/to/gtm-copilot/scripts

次に、認証スクリプトを実行する。

python bin/auth.py
macOS(Sonoma以降)では、システムPythonに直接パッケージをインストールしようとするとerror: externally-managed-environment(PEP 668)というエラーが出る。この場合はPython仮想環境(venv)を使う必要がある。以下のコマンドで仮想環境を作成・有効化してからスクリプトを実行しよう。
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

スクリプトが起動すると、Client IDとClient Secretの入力を求められる。先ほど控えた値をそれぞれ貼り付けてEnterを押す。

すると、ブラウザで開くべきURLが表示される。そのURLをコピーしてブラウザに貼り付けると、Googleアカウントの選択画面が出る。STEP 2-3でテストユーザーに追加したアカウントを選び、アクセスを許可する。

許可後、ブラウザがlocalhost:8000にリダイレクトしようとして「このサイトにアクセスできません」というエラーが出る。これは正常な動作だ。慌てずに、アドレスバーに表示されているURLをよく見てほしい。URLの中にcode=というパラメータが含まれている。code=の直後から&scopeの手前までの文字列をコピーする。

コマンドプロンプトに戻り、コピーした文字列を貼り付けてEnterを押す。画面にGTM_REFRESH_TOKEN=に続く長い文字列が表示されれば成功だ。この値も控えておく。

STEP 4 認証情報を設定ファイルに書き込む

gtm-copilotフォルダ直下にある.env.exampleをコピーし、ファイル名を.envに変更する。テキストエディタで開くと、以下のような行がある。

GTM_CLIENT_ID=
GTM_CLIENT_SECRET=
GTM_REFRESH_TOKEN=

それぞれの=の後ろに、STEP 2とSTEP 3で取得した値を貼り付けて保存する。

GTM_CLIENT_ID=123456789-xxxxxxxxxx.apps.googleusercontent.com
GTM_CLIENT_SECRET=GOCSPX-xxxxxxxxxx
GTM_REFRESH_TOKEN=1//0exxxxxxxxxx

これで基本的な導入は完了だ。

セットアップ時によくあるトラブルと対処法

CLIワークフローによる自動化
トラブルシューティングを経て安定稼働へ

手順どおりに進めても、環境の違いによってエラーに遭遇することがある。実際にセットアップする中でハマりやすいポイントを整理しておく。

PEP 668エラー(macOS)

macOS Sonoma以降では、Pythonのパッケージ管理にPEP 668という仕組みが導入されている。pip installでライブラリを入れようとすると「externally-managed-environment」というエラーが出る。

対処法はシンプルで、仮想環境(venv)を使えばいい。gtm-copilotのディレクトリ内でpython3 -m venv .venvを実行し、source .venv/bin/activateで有効化する。以降のpipコマンドやスクリプト実行はこの仮想環境の中で行う。

redirect_uri_mismatchエラー

認証スクリプトを実行してGoogleアカウントでログインした後、redirect_uri_mismatchというエラーが表示されることがある。

原因はほぼ確実に、Google Cloudの認証情報でhttp://localhost:8000を「承認済みの JavaScript 生成元」に登録してしまい、「承認済みのリダイレクト URI」に追加していないケースだ。この二つの入力欄は画面上で近い位置にあるため、間違えやすい。リダイレクト URIの方に正しく登録し直せば解決する。

access_deniedエラー

Googleアカウント選択画面でアカウントを選んだ直後に「access_denied」と出る場合は、OAuth同意画面のテストユーザーにそのアカウントが登録されていない。STEP 2-3に戻り、テストユーザーとして自分のGoogleアカウントのメールアドレスを追加する。

MCP設定との競合(Claude Code利用時)

Claude CodeのMCPサーバーとしてGTM Copilotを連携させる場合、既存のMCP設定と競合する可能性がある。他のMCPサーバー(Google Ads MCPやMeta Ads MCPなど)をすでに設定している場合は、~/.claude/settings.jsonmcpServersセクションを確認し、ポートやパスが重複していないことを確かめよう。

接続テストと動作確認

設定が完了したら、GTM APIに正しく接続できるか確認しておきたい。export.pyをテスト実行するのが手っ取り早い。

GTMの管理画面でワークスペースのURLをコピーし、以下のコマンドを実行する。

python bin/export.py --url https://tagmanager.google.com/#/container/accounts/XXXXXX/containers/XXXXXXX/workspaces/X

成功すると、tmpフォルダの中にGTM-XXXXXXというフォルダが作られ、tags.json、triggers.json、variables.jsonが保存される。この時点でGTMアカウント→コンテナ→ワークスペースの階層構造が正しく読み取れていることが確認できる。

複数のGTMアカウントを管理している場合は、それぞれのアカウントでexportを試して、全コンテナにアクセスできることを確認しておくとよい。

基本的な操作フロー

接続が確認できたら、実際の運用フローを見ていこう。

エクスポート(GTMの設定を取得する)

GTMの管理画面でワークスペースを開き、そのURLをコピーする。コマンドプロンプトで以下を実行する。

python bin/export.py --url https://tagmanager.google.com/#/container/accounts/XXXXXX/containers/XXXXXXX/workspaces/X

成功すると、tmpフォルダの中にGTM-XXXXXXというフォルダが作られ、tags.json、triggers.json、variables.jsonが保存される。これが現在のGTMコンテナの設定内容だ。

設定の編集

取得したJSONファイルを編集する。手動で書き換えることもできるし、AIエージェントに指示して書き換えさせることもできる。

たとえば新しいタグを追加する場合、resources/フォルダにあるサンプルJSONを参考にしながらtags.jsonにエントリを追加する。トリガーの参照には数値IDの代わりにトリガー名を使えるため、新規作成したトリガーを参照するタグも問題なく書ける [2]

インポート(GTMに設定を反映する)

編集が終わったら、以下のコマンドで変更をGTMに書き戻す。

python bin/import.py --url https://tagmanager.google.com/#/container/accounts/XXXXXX/containers/XXXXXXX/workspaces/X

スクリプトは変更があった部分だけをAPIで更新する。変更がなければスキップされるので、誤って全体を上書きしてしまう心配はない。

複数アカウントの管理

GTMアカウントを複数持っている場合は、アカウントごとに.envファイルを分けておくと管理しやすい。たとえば.env.account-a.env.account-bのように作成し、操作対象を切り替えるときにファイル名を.envにリネーム(またはシンボリックリンクを切り替え)する運用が実用的だ。

# アカウントAに切り替え
cp .env.account-a .env

# アカウントBに切り替え
cp .env.account-b .env

この方法なら、認証情報の取り違えを防ぎつつ、複数のGTMコンテナを柔軟に操作できる。

Agent Skillsとの関係

GTM Copilotは「Agent Skills」という仕組みに対応した形で配布されている [5]

Agent Skillsは、Anthropicが2025年10月に発表したオープンスタンダードで、AIエージェントに専門的な作業手順を教えるためのパッケージ形式だ。指示書(SKILL.md)、スクリプト、リソースファイルを一つのフォルダにまとめ、対応するAIエージェントに読み込ませることで、そのAIがGTMの操作を自律的にこなせるようになる。

現在、Agent Skillsに対応しているAIエージェントは以下のとおり [6]

AIエージェント提供元
Claude / Claude CodeAnthropic
GitHub CopilotGitHub / Microsoft
CursorCursor
ManusManus
Gemini CLIGoogle
OpenAI CodexOpenAI

これらのエージェントにGTM Copilotのスキルを読み込ませれば、「GA4のページビュータグを追加して」と話しかけるだけで、エクスポートからJSON編集、インポートまでの一連の作業をAIが代行してくれる。

まとめ

GTM Copilotは、GTMの設定作業をAPIとAIで自動化するオープンソースツールだ。認証情報の取得にやや手間がかかるが、OAuth設定の落とし穴(リダイレクトURIの登録先やテストユーザーの追加漏れ)を事前に押さえておけば、セットアップでつまずくことはないだろう。

macOSユーザーはPython仮想環境の作成を忘れずに。複数のGTMアカウントを管理する場合は、.envファイルの切り替え運用で対応できる。

まだバージョン0.0.1の段階であり、今後の開発でさらに使いやすくなっていくだろう。GTMの運用に時間を取られている方は、早めに触っておいて損はない。

参考文献

[1] SEM Technology「GTM実装をAIで完結させる GTM Copilot OSS公開」X, 2026年2月15日 ポスト全文を見る

[2] sem-technology/gtm-copilot「README_ja.md」GitHub 日本語ドキュメント

[3] sem-technology/gtm-copilot「Releases」GitHub リリースページ

[4] sem-technology/gtm-copilot「AGENT.md」GitHub エージェント設定ガイド

[5] Agent Skills「Overview」公式サイト

[6] VoltAgent/awesome-agent-skills GitHub 対応エージェント一覧

Relation

関連記事

This is some text inside of a div block.

【初心者でも簡単】n8nでYouTubeリサーチを自動化する方法 ── 伸びる動画企画を一瞬で見つける全手順

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

GTM Copilotの導入方法と使い方 初心者向け完全ガイド

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

Claude Codeとgit worktreeで開発効率を劇的に向上させる方法【初心者向け解説】

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

Google AntiGravity × Gemini 3.1 Proでプロ品質のランディングページを作る方法【初心者向け完全ガイド】

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

「なんか違う」を直す技術──スマホ表示の最適化からステージング環境構築まで

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

Meta広告のコンバージョンが計測できない?Pixelブロックの原因とCAPIによる解決策

This is some text inside of a div block.
7 min read

現在【毎月先着5社様】限定無料相談受付ます

大変申し訳ありません。私たちのリソースには限りがあり、一社一社に質の高いサービスを提供するため、現在【毎月先着5社様】限定で、この特別な条件(全額返金保証+無料相談)でのご案内とさせていただいております。

さらに、今このページをご覧のあなただけに、無料相談へお申し込みいただいた方限定で、通常5万円相当の【競合サイト分析&改善提案レポート】を無料でプレゼントいたします。

枠がすぐに埋まる可能性がありますので、お早めにお申し込みください。

プライバシーポリシーに同意し、まずは無料相談をおこないます
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.