SNS ブランドを立ち上げるとき、「3プラで同じハンドルを取れるか」は思った以上にパズルです。
TikTok で空いていても Instagram で先取りされていたり、YouTube はアカウント名が Google アカウントと紐づいていて別途置き換えが必要だったり。候補を5〜10個用意して目視で確認するだけで30分以上かかります。
この「3プラ空き確認」を Playwright で自動化した実記録と、その過程で分かった落とし穴(確認はOK・開設は自動化NG)を残しておきます。
実装:page.goto() + page.title() で空きを判定する
仕組みはシンプルです。各プラットフォームのプロフィール URL に直接アクセスし、page.title() を読んで「存在するか/しないか」を判定します。
import { chromium } from 'playwright';
async function checkHandle(handle: string) {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
// TikTok:存在しないアカウントはタイトルに「見つかりませんでした」が入る
await page.goto(`https://www.tiktok.com/@${handle}`);
await page.waitForTimeout(3000);
const tiktok = await page.title();
const tiktokAvailable =
tiktok.includes('見つかりませんでした') || tiktok.includes("Couldn't find");
// Instagram:存在しないと「ページが見つかりません」
await page.goto(`https://www.instagram.com/${handle}/`);
await page.waitForTimeout(3000);
const ig = await page.title();
const igAvailable =
ig.includes('ページが見つかりません') || ig.includes('Page not found');
// YouTube:存在しないと 404 がタイトルに入る
await page.goto(`https://www.youtube.com/@${handle}`);
await page.waitForTimeout(3000);
const yt = await page.title();
const ytAvailable = yt.includes('404');
await browser.close();
return { tiktok: tiktokAvailable, instagram: igAvailable, youtube: ytAvailable };
}
// 複数候補を一括検証
const handles = ['trivia_loop', 'hatena_lab', 'nazo_lab', 'mystery_lab', 'if_history'];
for (const handle of handles) {
console.log(`Checking @${handle}...`);
const result = await checkHandle(handle);
console.log(JSON.stringify(result, null, 2));
}
5 候補 × 3 プラ = 15 検証を約 3 分で完了できます。
検証結果
| 候補 | TikTok | YouTube | 判定 | |
|---|---|---|---|---|
| @trivia_loop | ❌ 取得済 | — | — | 脱落 |
| @hatena_lab | ✅ 空き | ❌ 取得済 | — | 脱落 |
| @nazo_lab | ✅ 空き | ✅ 空き | ✅ 空き | 確定 |
@trivia_loop は TikTok にクイズ系の小規模アカウントが存在していました。@hatena_lab は Instagram に韓国系ユーザーが取得済み。3 つ目の @nazo_lab で3プラ全揃いを確認できました。
落とし穴:確認は OK、開設の自動化は NG
ハンドル確認は問題なく自動化できましたが、アカウントの「開設」を Playwright で試みたところ別の壁にぶつかりました。
TikTok
新規登録フローに入ったところ「アカウントのステータス:リスクあり」という警告ダイアログが表示されました。Playwright を BOT と検知した可能性が高く、シャドウ BAN リスクがあると判断して即停止しました。
Meta の BOT 検知は特に厳しく、既存セッションが紐づく別アカウントへの影響リスクも考慮して手動開設に切り替えました。Playwright で Instagram の登録フローに触れると、既存アカウントへの悪影響がある可能性があります。
YouTube
create_channel のトークンを直接叩いたところ、確認モーダルなしでチャンネルが作成されました。ただし Google アカウントの登録名がそのままチャンネル名になるケースがあるため、必ずブランドアカウントで実行するか、作成直後に名前を置き換える必要があります。
結論
| 操作 | Playwright 自動化 |
|---|---|
| ハンドル空き確認 | ✅ 全自動 OK |
| アカウント新規開設 | ❌ BOT 検知リスク・手動推奨 |
| ログイン済みのプロフィール編集 | ⚠️ 慎重に(警告が出たら即停止) |
同名ドメインを同日に確保する
3 プラのハンドルが揃ったタイミングで、同じ文字列の独自ドメインの空きも確認しておくことをおすすめします。
SNS ハンドルは無料なので取り合いが激しく、ドメインは年 1,000〜2,000 円で先着順です。後からブランド名を変えるコストの方がはるかに高くなるため、「ハンドル検証で候補が決まったその日」にドメインも確認しておくのが安全です。
まとめ
-
page.goto()+page.title()の組み合わせで3プラのハンドル空き確認を完全自動化できる - 5候補×3プラ=15検証を約3分で完了できる(目視の10分の1)
- アカウントの開設は Playwright を使わず手動 or スマホアプリが安全(TikTok/Instagram は特に BOT 検知が厳しい)
- ハンドルが確定したら同名ドメインも同日に確保する
このスクリプトは、その後のブランド立ち上げすべてで使い回しています。「開設前に3分で15検証」はやるかやらないかで後のブランド運用コストが大きく変わります。
実装の背景(AI 会社で SNS ブランドの自動管理をどう設計したか)の全記録はこちら:
https://aimaker-lab.com/posts/handle-acquisition-playwright-3platforms-2026/?utm_source=qiita&utm_medium=social&utm_campaign=handle-acquisition-playwright-3platforms-2026