【開発ガイド】Claude CodeからGTM APIを叩いてタグ設定を一括自動化する方法
結論:Claude CodeとGTM APIを組み合わせれば、タグ設定の99%は自動化できる
本記事の結論はシンプルです。Googleタグマネージャー(GTM)のタグ・トリガー・変数の設定は、Claude Code から Google Tag Manager API(以下、GTM API)を叩くことでテンプレ化 & 一括自動化できます。これにより、次のようなメリットが得られます。
- 新規プロパティ・新規コンテナへの初期設定を数分で完了できる
- 人手による設定ミス(抜け・二重登録・命名ゆれ)をほぼゼロにできる
- 複数サイト・複数環境(本番 / ステージング)をコードで一元管理できる
この記事では、Claude Code から GTM API を実行してタグ設定を自動化する手順と、実務で使える設計パターンを、開発者向けに解説します。
GTM API自動化の全体像
GTM API自動化とは何か
GTM API 自動化とは、Google が提供する公式 API を利用して、GTM コンテナ内の下記要素をプログラムから操作することです。
- タグ(Tags)
- トリガー(Triggers)
- 変数(Variables)
- バージョン(Container Versions)
- ワークスペース(Workspaces)
これを手作業ではなく、Claude Code 上のスクリプトから API 経由で一括生成・更新することで、「タグ設定をインフラコードの一部」として管理できるようになります。
なぜClaude Codeを使うのか
一般的には、GTM API のクライアントとしてローカル環境の Node.js や、GCP 上の Cloud Functions などを利用することが多いです。しかし、Claude Code を使うと次のような利点があります。
- ブラウザ上でコードを対話的に生成・修正・実行できる
- 既存のGTMエクスポート(JSON)を読み込ませ、Claude に変換ロジックを自動生成させられる
- 自然言語で「このサイト用のイベント計測タグを一括で作って」と指示できる
実質的に、「AIにタグ実装を丸投げし、GTM API が実行役になる」構成を組めるのが、Claude Code を使う最大のポイントです。
事前準備:GTM APIを叩くためのセットアップ
ステップ一覧
まず、GTM API を利用するための最低限の準備を整理します。
- 1. Google Cloud プロジェクトを作成する
- 2. GTM API を有効化する
- 3. 認証情報(OAuth 2.0 / サービスアカウント)を作成する
- 4. 必要なスコープと権限を確認する
- 5. API クライアントライブラリ(Node.js など)を準備する
GTM APIとは何か(定義)
GTM API とは、Googleタグマネージャーのコンテナ設定をプログラムから読み書きするための REST API 群です。エンドポイント例は以下の通りです。
accounts:アカウント一覧取得containers:コンテナ(Web / App など)一覧取得workspaces:ワークスペース管理tags:タグの作成・更新・削除triggers:トリガーの作成・更新・削除
GTM 管理画面で行っているクリック操作を、HTTP リクエストで再現できるイメージです。
代表的なエンドポイント一覧(例)
| 用途 | HTTPメソッド | エンドポイント例 |
|---|---|---|
| アカウント一覧取得 | GET | https://www.googleapis.com/tagmanager/v2/accounts |
| コンテナ一覧取得 | GET | https://www.googleapis.com/tagmanager/v2/accounts/{accountId}/containers |
| タグ作成 | POST | https://www.googleapis.com/tagmanager/v2/accounts/{accountId}/containers/{containerId}/workspaces/{workspaceId}/tags |
| トリガー作成 | POST | .../triggers |
| 変数作成 | POST | .../variables |
Claude CodeからGTM APIを叩くための基本実装
開発環境の考え方
Claude Code 上では、一般的に以下のような構成を取ります。
- Node.js + TypeScript または JavaScript を採用
googleapisライブラリを利用して認証〜API呼び出しを実装- .env で認証情報やアカウントIDを管理
- タグ・トリガー・変数の定義を JSON / YAML で外部ファイル化
認証処理の基本(例:サービスアカウント)
もっとも扱いやすいのはサービスアカウントによる認証です。以下は、Node.js で GTM API クライアントを初期化する例です。
import { google } from 'googleapis';
async function createGtmClient() {
const auth = new google.auth.GoogleAuth({
keyFile: process.env.GOOGLE_APPLICATION_CREDENTIALS,
scopes: ['https://www.googleapis.com/auth/tagmanager.edit.containers'],
});
const authClient = await auth.getClient();
const tagmanager = google.tagmanager({ version: 'v2', auth: authClient });
return tagmanager;
}
サービスアカウントには、対象の GTM アカウントに対して ユーザーとして招待し、権限(編集権限以上)を付与しておく必要があります。
アカウント・コンテナ・ワークスペースIDの取得
GTM API は、accounts > containers > workspaces の階層構造になっています。まずは ID を取得するコードを書きます。
async function getWorkspacePath(tagmanager: any, accountName: string, containerName: string) {
const accountsRes = await tagmanager.accounts.list();
const account = accountsRes.data.account?.find(a => a.name?.includes(accountName));
if (!account) throw new Error('Account not found');
const containersRes = await tagmanager.accounts.containers.list({ parent: account.path! });
const container = containersRes.data.container?.find(c => c.name === containerName);
if (!container) throw new Error('Container not found');
const workspacesRes = await tagmanager.accounts.containers.workspaces.list({ parent: container.path! });
const workspace = workspacesRes.data.workspace?.[0]; // デフォルトを利用
if (!workspace) throw new Error('Workspace not found');
return workspace.path; // 以降のAPI呼び出しのparentとして利用
}
このように、Claude に「GTM API の階層構造をなめてワークスペースパスを返す関数を書いて」と指示すれば、上記のようなコードを自動生成させることができます。
タグ設定の一括自動化パターン
タグ自動生成ロジックの基本方針
タグ設定の自動化では、以下の 2 レイヤーを分離しておくと保守しやすくなります。
- 定義レイヤー:「何を実装したいか」を JSON / YAML で宣言的に記述
- 適用レイヤー: 定義をパースして GTM API に変換し実行するスクリプト
Claude Code は特に「定義レイヤーのスキーマ設計」と「スキーマ → API ペイロード変換関数」の生成に相性が良く、自然言語で方針を伝えながらスキーマを洗練させていく使い方が有効です。
設定定義の例(YAML)
tags:
- name: GA4 - Page View
type: ga4_config
measurementId: G-XXXXXXX
trigger: All Pages
- name: GA4 - Purchase Event
type: ga4_event
eventName: purchase
params:
- name: value
type: dataLayer
key: ecommerce.value
trigger: Purchase Completion
triggers:
- name: All Pages
type: page_view
- name: Purchase Completion
type: page_path
operator: equals
value: /thank-you
上記のような定義ファイルを複数環境(本番 / ステージング)で使い回すことで、サイト横断の共通タグセットを一元管理できます。
定義ファイルからタグを生成するスクリプト例
async function applyTagsFromConfig(tagmanager: any, workspacePath: string, config: Config) {
// 1. トリガーを先に作成
for (const triggerDef of config.triggers) {
await tagmanager.accounts.containers.workspaces.triggers.create({
parent: workspacePath,
requestBody: buildTriggerPayload(triggerDef),
});
}
// 2. タグを作成
for (const tagDef of config.tags) {
await tagmanager.accounts.containers.workspaces.tags.create({
parent: workspacePath,
requestBody: buildTagPayload(tagDef),
});
}
}
buildTriggerPayload や buildTagPayload の中身は、Claude に 「GTM API v2 のスキーマに沿ってこのYAMLをペイロードに変換して」と指示することで大部分を自動生成できます。
Claude Codeを活用した開発フロー
開発フロー全体
Claude Code を活用した GTM 自動化の典型的なフローは以下の通りです。
- 既存GTMコンテナをエクスポート(JSON)し、Claude に読み込ませる
- 「この構成を再現できる設定スキーマを設計して」と指示する
- Claude が提案したスキーマを微調整し、最終版を決める
- スキーマを入力として GTM API ペイロードを生成するコードを作成してもらう
- Claude Code のターミナルから実際にスクリプトを実行し、テストコンテナに反映
- 動作確認後、本番コンテナに適用する
Claude Codeに任せると効率が上がるポイント
- GTM APIの型定義やレスポンス構造の推論
- 繰り返し出てくるボイラープレートコードの生成
- タグ・トリガーの命名規則に沿った自動リネーム
- 複数コンテナ間の差分比較レポートの生成
特に、既存GTMの構成を「コード化」するフェーズは人手だと煩雑になりやすいため、Claude に「このJSONを読み込んで、構成のサマリと改善提案を出して」と振るのがおすすめです。
エラー・制約への対処とベストプラクティス
よくあるエラーと対処法
| 症状 | 原因 | 対処 |
|---|---|---|
| 401 / 403 エラー | 認証情報の権限不足 / スコープ不足 | サービスアカウントをGTMに招待し、tagmanager.edit.containers 以上の権限を付与 |
| 404 エラー | IDやパスの指定ミス | accounts > containers > workspaces の path をログに出して確認 |
| 400 エラー | ペイロードの必須項目不足 / 型不整合 | 公式ドキュメントとレスポンスサンプルを突き合わせ、Claude に修正を依頼 |
本番運用でのベストプラクティス
- 必ずテスト用コンテナまたはテスト用ワークスペースで検証してから本番に適用する
- 生成したタグは、GTM のプレビュー機能で目視確認する
- 設定ファイルは Git 管理し、Pull Request ベースでレビューする
- 本番適用用スクリプトには 「dry-run モード」を実装しておく
実務での具体的な活用シナリオ
シナリオ1:新規サイト立ち上げ時の初期タグ一括投入
新規サイトを複数立ち上げる際、毎回 GA4、広告タグ、コンバージョンイベントなどを手打ちするのは非効率です。
GTM API 自動化を導入すると、次のような流れで標準タグセットを展開できます。
- 標準タグセットを YAML で定義しておく
- サイトごとの差分(GA4測定ID、広告アカウントIDなど)だけを環境変数またはオーバーライドファイルで指定
- Claude Code から「サイトA用設定を適用するスクリプト」を生成&実行
これにより、サイト追加 = 設定ファイル1枚追加 という状態を作れます。
シナリオ2:既存GTM構成のリファクタリングと標準化
長期間運用された GTM コンテナは、タグとトリガーがスプロールしがちです。Claude Code と GTM API を組み合わせると、
- 既存コンテナのタグ・トリガー・変数を API で一括取得
- Claude に構成の分析と「整理方針」を提案してもらう
- 命名規則やイベント設計ポリシーに沿った新コンテナ定義を自動生成する
といったフローで、混沌としたコンテナを「ほぼ自動」で再設計できます。
シナリオ3:複数ブランド・複数言語サイトの一元管理
グローバルサイトやマルチブランドサイトでは、国・言語・ブランドごとに GTM コンテナや GA4 プロパティが分かれているケースが多いです。
GTM API 自動化と設定ファイルのパラメータ化により、
- 共通イベントスキーマは1つ
- 計測IDや一部のイベントだけをブランド別に切り替え
- 全サイトへ一括で新イベントをロールアウト
といった運用が、コードベースで実現できます。
よくある質問(FAQ)
Q1. Claude CodeからGTM APIを叩くときの認証方式は何を選ぶべき?
A. サーバーサイドで自動実行する用途が多い場合は、サービスアカウントがおすすめです。ブラウザ経由でユーザーごとに操作する用途なら OAuth 2.0 でも構いませんが、タグ設定の一括自動化という文脈ではサービスアカウントが扱いやすく、権限管理もしやすいです。
Q2. GTMのGUIとAPIでできることに差はある?
A. 細かい UI 特有の挙動(プレビュー画面や一部のテンプレート管理など)を除けば、主要なコンテナ設定はほぼ API から操作可能です。タグ・トリガー・変数・フォルダ・バージョン管理など、日常的な運用に必要な要素は API でカバーできます。
Q3. 一括自動化は危なくない?誤設定で大事故にならない?
A. テスト用コンテナやワークスペースでの検証と、dry-run モードの実装を徹底すればリスクはかなり低減できます。実際の本番反映は、GTM のバージョン作成と公開フロー(承認プロセス)を組み合わせることで、手動レビューを維持しつつ自動化の恩恵を受けられます。
Q4. 最初からすべてを自動化しないと意味がない?
A. いいえ。まずは 「新規 GA4 設定だけ」や「特定イベントタグ群だけ」といったスコープで始めるのがおすすめです。部分的にでも自動化すれば、タグ実装フロー全体のボトルネックが見えやすくなります。
Q5. 開発チーム内での分業はどうすればいい?
A. 典型的には、マーケ側(計測要件定義)と開発側(GTM API 実装)で役割を分けます。マーケ側は「どんなイベントを計測したいか」をスプレッドシートや YAML で定義し、開発側はそれをもとに Claude Code に変換ロジックを生成させる、という形が実務では回しやすいです。
まとめ:GTM設定を「AI + API」でコード化しよう
Claude Code から GTM API を叩くことで、
- タグ・トリガー・変数の設定をテンプレート化し、一括自動生成できる
- 複数サイト・複数環境の設定をコードで一元管理できる
- 既存のカオスなGTMコンテナを、AIの力を借りて再設計できる
という、従来は手作業では難しかった運用が現実的になります。
まずは小さなスコープから、GTM API 自動化 + Claude Code の組み合わせを試してみてください。
本記事の内容を動画で確認したい方は、以下のYouTubeもあわせてご覧ください。
https://youtu.be/MDKJA5lqELo?si=bX5t8NNeb_ErYWPN