Vercelのレジストラ API でドメインを取得し既存サイトを無停止で乗り換える
購入・DNS・リダイレクト・検証まで人手ゼロ。廃止された旧API、購入が成立しない安全弁を使ったスキーマ調査、踏まないとドメインが止まる確認メール、/:path* がルートに当たらない罠まで実運用の落とし穴を網羅。
約2.3万トークンの節約 (API料金換算で約35円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「Vercelのレジストラ API でドメインを取得し既存サイトを無停止で乗り換える」は、Web開発カテゴリのAI指示書(MDファイル)です。購入・DNS・リダイレクト・検証まで人手ゼロ。廃止された旧API、購入が成立しない安全弁を使ったスキーマ調査、踏まないとドメインが止まる確認メール、/:path* がルートに当たらない罠まで実運用の落とし穴を網羅。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約2.3万トークン(API料金換算で約35円)・90%のトークンを節約できます。
- カテゴリ
- Web開発
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約2.6万トークン
- この巻物使用時
- 約2,600トークン
- 節約量
- 約2.3万トークン (約35円)
- 更新日
- 2026-10-16
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/vercel-api/raw を読み込んで、この指示書どおりに実装して"
中身
Vercel のレジストラAPIでドメインを取得し、既存サイトを無停止で乗り換える
*.vercel.app のサブドメインで運用中のサイトを、独自ドメインへ人手ゼロで移す手順。
ドメインの購入・DNS設定・リダイレクト・検証までAIが実行でき、人間の操作は「支払い方法が
未登録なら登録する」だけになる。実運用で踏んだ罠を全部書いてある。
前提
- Vercel にプロジェクトがあり、API トークンを持っている
- チーム配下なら
teamIdが全リクエストに必要 - チームに支払い方法が登録済み(Pro プラン等)なら、購入時にカード入力画面は出ず即時課金される
1. 旧APIは使えない
/v4/domains/status と /v4/domains/price は 2025-11-09 に廃止。
呼ぶと This endpoint has been sunsetted が返る。現行は /v1/registrar/...。
GET /v1/registrar/domains/{domain}/availability → {"available":true}
GET /v1/registrar/domains/{domain}/price → {"years":1,"purchasePrice":11.25,...}
POST /v1/registrar/domains/{domain}/buy
2. 扱えない TLD がある
availability はどの TLD でも available を返すが、price で初めて弾かれる。
GET /v1/registrar/domains/<例>.jp/price
→ {"code":"tld_not_supported","message":"The TLD .jp is not currently supported."}
購入可否の判定は availability ではなく price で行う。 国別 TLD が必要なら、
外部レジストラで買って DNS だけ Vercel に向ける構成になり、人間の操作が増える。
TLD の選択は「手間がゼロで済むか」を判断材料に含めて人に決めてもらう。
3. 購入ボディの必須項目は「わざと価格を外して」調べる
ドキュメントが指す「Get contact info schema」エンドポイントは 404 で存在しない。 エラーメッセージから逆算するしかないが、項目が全部揃った瞬間に購入が成立してしまう。
expectedPrice を実価格と違う値にしておけば、項目が揃っても
expected_price_mismatch で必ず弾かれる。 これを安全弁にして形だけ調べられる。
// 購入は絶対に成立しない(実価格と違うので最後に弾かれる)
body: JSON.stringify({
autoRenew: true, years: 1,
expectedPrice: 1, // ← 安全弁。実価格と変える
contactInformation: contact, // ← 1項目ずつ埋めながらエラーを読む
})
判明した必須項目(gTLD の場合):
autoRenew / years / expectedPrice / contactInformation{
firstName, lastName, email, phone, address1, city, state, zip, country
}
phone は +81.9012345678 のように国番号とピリオド区切り。
4. 購入は非同期。注文IDで完了を待つ
buy は即座に {"orderId":"..."} を返すが、status は purchasing。
ドメインAPIを叩いても最初は見つからない。
GET /v1/registrar/orders/{orderId} → status: purchasing → completed
GET /v5/domains/{domain} → verified / expiresAt / renew
完了をポーリングするスクリプトを背景実行し、completed を見てから次へ進む。
5. ⚠️ 購入直後に届く確認メールを踏まないとドメインが止まる
これが最大の罠。 gTLD は ICANN 規則で登録者メールの到達確認が要る。
レジストラから [ACTION REQUIRED] Verify Your Domain Contact Information が届き、
15日以内にリンクを踏まないとドメインが一時停止される。
猶予期間中はサイトが正常に動くので、見た目では一切区別がつかない。 「購入API が 200」「サイトが表示される」は手続き完了の証拠にならない。
購入処理の最後に、受信箱でこの種のメールを探す工程を必ず入れる。
件名に ACTION REQUIRED / Verify / 確認 / 以内に を含むものは期限付きを疑う。
確認状態を API で照会できないサービスも多いので、督促メールの再着信を監視項目にする。
6. プロジェクトへの紐付けと www
POST /v10/projects/{project}/domains {"name":"<domain>"}
POST /v10/projects/{project}/domains {"name":"www.<domain>"}
PATCH /v9/projects/{project}/domains/www.<domain>
{"redirect":"<domain>","redirectStatusCode":301}
DNS と SSL は Vercel が自動で張るので、数十秒で https:// が通る。
7. 旧ドメインからのリダイレクトは /(.*) で書く
vercel.json に書く。/:path* はルート / に当たらない(実測でルートだけ 200 のまま残った)。
正規表現形なら空パスも拾う。
{
"redirects": [
{
"source": "/(.*)",
"has": [{ "type": "host", "value": "<旧ホスト>" }],
"destination": "https://<新ドメイン>/$1",
"permanent": true
}
]
}
permanent: true が返すのは 308(301ではない)。検索エンジンは301と同等に扱うので正常。
検証スクリプトを 301 固定で書くと、正しく動いているのに NG と誤判定する。
8. サイト内の旧URLを機械的に置換する
canonical・sitemap・robots・OGP・JSON-LD に旧ドメインが散らばっている。
grep -c で件数を数えてから一括置換し、ゼロになったことを確認する。
検査スクリプト側の許可ドメイン設定も忘れずに更新する。 これを忘れると、置換後に自前の静的検査が「許可外ドメインへのリンク」で落ちる。
9. 切り替えの検証(これを通してから完了と言う)
1. 新ドメインの全ページが 200 で、canonical が新ドメインを指し、旧ドメインの文字列が残っていない
2. 旧URL → 新URL が 301/308 で、パスが保たれている(/pricing → /pricing)
3. www → apex が恒久リダイレクト
4. sitemap.xml / robots.txt が新ドメインを指し、旧が残っていない
5. sitemap の各 URL が「リダイレクトなしで」200 を返す(ここが曲がると検索側で弾かれる)
5 は見落としやすい。サイトマップに書いた URL 自身がリダイレクトすると、 検索エンジンはインデックスを保留する。
10. 移行直後の「リダイレクトのため未登録」通知は無視してよい
検索コンソールが「ページにリダイレクトがあります」と警告するが、これは 検索エンジンが以前から知っている旧URLをクロールして、新設したリダイレクトに当たっているだけ。 新ドメイン側が直接 200 を返していることを確認できていれば、対処不要で、 新URLのインデックスが進めば消える。
掲載先への修正依頼は不要
外部のポータルサイト・地図サービスの投稿・印刷物のQRコードに旧URLが載っていても、 恒久リダイレクトが効いていれば切れない。修正依頼を出さない判断ができることを、 移行前に関係者へ伝えておくと無駄な往復が減る(修正依頼の回数に制限を設けている 掲載先もあるため、ここを節約できる意味は大きい)。
よくある質問
+「Vercelのレジストラ API でドメインを取得し既存サイトを無停止で乗り換える」とは何ですか?
購入・DNS・リダイレクト・検証まで人手ゼロ。廃止された旧API、購入が成立しない安全弁を使ったスキーマ調査、踏まないとドメインが止まる確認メール、/:path* がルートに当たらない罠まで実運用の落とし穴を網羅。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約2.6万トークンかかりますが、この巻物を使えば約2,600トークンで済みます。差し引き約2.3万トークン(API料金換算で約35円)・90%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
Next.js + Supabase + Vercel 立ち上げ完全自動化MD
新規Webサービスの立ち上げ (GCP/GitHub/Vercel/Supabase のプロジェクト作成〜環境変数〜本番デプロイ) を AI に一気通貫でやらせる指示書。人間の作業はログイン1回だけ。
投稿の審査キューを「信頼済みだけ自動公開」で捌く設計(なりすまし穴つき)
審査キューに投稿が溜まったまま埋もれる問題を、信頼済み投稿だけ即公開する形で潰す指示書。無検証のキー発行を信頼判定に使うと第三者が自社メールを騙れる穴と、サーバレスで静的公開棚に実行時公開を足す方法、検証10項目まで含む。
DB型サイトを「一覧だけ会員限定・個別ページは残す」に切り替える指示書(Next.js App Router)
自社DBで集客していたサイトが競合のリスト抜き取りに気づいた時の改修手順。名前が並ぶバルクな一覧だけを会員限定にし、個別ページはtitle/H1とCTAを残す。ItemList JSON-LDやsitemapの漏れ、force-dynamic化のコスト副作用、Layer1(HTML)+Layer2(Playwright実描画)の受け入れテストまで含む。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア