YouTube の A/B テスト設定、API ないけど Playwright Skills で自動化した
2026/05/05 03:22 公開
2026/05/05 04:04 更新
YouTube Data APIは動画のアップロード・予約投稿・タイトル/サムネ更新まで一通りできます。ただしタイトル/サムネのA/Bテスト設定だけはWeb UI必須。スキーマにエンドポイントが存在しません。
YouTubeは最近サムネに加えてタイトルもA/B比較できるようになりました。最大3案、勝った方を自動採用までやってくれる、地味に強い機能です。 ただAPIがないせいで、毎回Studioを手で開いて画像をドラッグして…という手作業に逆戻りしていました。
そこでClaude Code Skills + Playwright CLIで自動化しました。
一発で動く
code~/.claude/skills/youtube-abtest/run.sh /tmp/input.json
入力JSONの例:
json[
{
"videoId": "txXWWjOIHf4",
"titleB": "B案として登録したいタイトル",
"thumbBPath": "/abs/path/to/thumbnail-b.png"
}
]
これだけでStudioの編集ページに飛んで、A/Bダイアログを開き、タイトルとサムネをB案として登録、保存まで完走します。複数動画を配列で渡せばまとめて処理できます。
試した結果
自社で運営しているYouTubeチャンネルの最新動画で実演しました。
- A案:もともと付けていたタイトルとサムネをそのまま使用
- B案:別案のタイトルと、gpt-imageで生成した新しいサムネ

タイトルのA/Bテストが2案分セットされた状態(保存後)

サムネイルもA案・B案を上下に並べて登録できる
設定後はこんな感じ
緑チェックで「タイトルとサムネイルのテストの準備ができました」が出れば成功です。
やってる中身
中で動いているのは、Playwright CLI経由でこんなフローを回しているだけです:
- 動画の編集ページを新タブで開く
- snapshotを撮ってタイトル欄下の「A/Bテスト」ボタンを探す
- クリック → ダイアログ表示 → 「タイトルとサムネイル」タブに切り替え
- タイトルBをfill
- サムネBのアップロードボタンをclick → upload
- 「テストを設定」ボタン(disabledが外れる)をclick
- 編集画面に戻って右上「保存」ボタンをclick
UIに出ている要素を都度snapshotから探してクリックしているだけです。複雑な状態管理はしていません。
前提:Chromeをattachする
このフロー、ログイン済みのChromeにPlaywrightをCDPでattachする仕組みが必要です。 そこは別のSkillsで用意してあるので、前回の記事に詳細を書いています:
→ Claude Codeでブラウザ操作するならPlaywright CLI + Skills一択だった
要は/chrome Skillsを起動しておけば、普段使いのChromeのCookieを継承した別プロファイルChromeが立ち上がってattach済みになります。あとはplaywright-cliから自由に操作できます。
つまづきポイント
実装中に気づいた、地味だけど大事な3点です。
1. アップロードファイルはDownloads配下のみ受付
playwright-cliはセキュリティ上、対象ファイルが許可ディレクトリ(~/Downloads/.playwright-cli/)の中にないと弾きます。Skills内では一旦そこにコピーしてからuploadしています。
2. refをハードコードしない
snapshotで取れる[ref=eXXX]は毎回採番が変わります。テキストマッチ(button "A/B テスト"の行をgrep)で動的に取ります。
3. 動画がscheduledだと「対象外」表示になる(が設定自体は通る)
A/Bテスト機能はチャンネル要件 + 公開済み動画が前提です。新規チャンネルやscheduled動画では、設定保存はできるけど「対象外」と表示され、要件達成・公開時刻到来後に自動的に走り始めます。Skills側ではこれをエラー扱いせずset_ineligibleステータスでログに残しています。
ステータス値(ログJSON)
| status | 意味 |
|---|---|
set | 正常登録 + 要件も達成 |
set_ineligible | 登録完了だが「対象外」(公開後に自動開始) |
already_set | すでに設定済み、skip |
error_no_ab_button | ABボタンが見つからず |
error_validation | 入力検証失敗 |
error_save | 保存ボタンが押せず |
まとめ
- YouTube Data APIでは設定できないA/Bテストも、Playwright CLI + Skillsで攻略できた
- 入力JSONを渡すだけで複数動画を一括処理。手作業ゼロ
- ファクトリパターンの動画運用で「いちいちWeb UIを開く」はもう許せない、というところまで来た
APIでできない領域こそSkillsの出番です。ブラウザ自動化を一度Skillsに閉じ込めておくと、その上に積層的にサイト固有Skills(YouTube Studio / note / Vibely / Slackなど)を作れます。
Lステップ × AI を同時に使いたい方へ
LINE公式のWebhook、1つしか設定できなくて困っていませんか?
LINE公式アカウントでは、Webhookの送信先URLを1つしか設定できません。そのため、Lステップを導入している企業が「DifyでAIチャットボットも動かしたい」「自社システムにもイベントを飛ばしたい」と思っても、Webhookの奪い合いになってしまいます。
結果として、片方を諦めるか、中継サーバーを自前で構築するか——どちらにしても時間とコストがかかる選択を迫られます。
L-Proxyなら、1つのWebhookを複数サービスに同時転送
LINE公式アカウントとサービスの間にL-Proxyを挟むだけで、Webhookを好きな数だけ分岐できます。
- Lステップはそのまま、AIチャットボットを追加導入
- 自社の顧客管理システムにもリアルタイムでイベント連携
- 設定はURL貼り替えだけ。コード不要、最短5分で導入
今なら2週間の無料トライアル実施中。クレジットカード不要で、すべての機能をお試しいただけます。