mcpField
D
domain

domain

github.com/coreyhaines31マーケティング・グロース876347 回インストール1 週間前に更新
リポジトリ

domain について

domainは、新しいプロジェクト向けの.comドメインを考案し、空き状況を調べるワークフローです。予算と登録状況を踏まえて候補を絞り、登録状態や価格を照合します。自動確認できない転売価格はユーザーが確認する形です。

主な機能

  1. 01予算に応じた候補ドメインの絞り込み
  2. 02ブランド名の組み合わせ案の作成
  3. 03Vercel CLIによる空き状況と価格の確認
  4. 04whoisとRDAPによる登録状態の照合
  5. 05登録業者とマーケットプレイス情報の確認

活用シーン

  1. 01新製品向けの.com名を探す
  2. 02候補ドメインの登録状況を確認
  3. 03登録価格と転売候補を比較

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/coreyhaines31/makerskills --skill domain

インストール後、Claude Code で/domainを入力して読み込まれたか確認します。

詳細

/domain — アイデア出し + 利用可能な .com ドメインの確認

新しいプロジェクトにぴったりの、手頃で取得可能な .com を探すマルチツールワークフローです。Laura Roeder のルールに基づいています。まず実際に取得できる名前を探し、先に名前に惚れ込まないこと(出典)。

デフォルトでは .com のみを対象にします。プロジェクトが開発ツール専用の場合、またはユーザーが明示的に希望した場合に限り、.dev、.co、.io、.ai に変更します。

Step 0 — 環境を確認する

作業を進める前に、以下を確認します(不足している場合はインストールコマンドを提示し、黙ってインストールしないでください)。

ツール確認方法不足している場合のインストール方法
Vercel CLIvercel whoaminpm i -g vercel && vercel login
whoiswhich whoisbrew install whois(macOS)
Domainr API キー[ -n "$DOMAINR_API_KEY" ]rapidapi.com/domainr/api/domainr で無料キーを取得し、~/.zshenv に追加します
Namecheap API[ -n "$NAMECHEAP_API_KEY" ] && [ -n "$NAMECHEAP_API_USER" ] && [ -n "$NAMECHEAP_CLIENT_IP" ]ap.www.namecheap.com/settings/tools/apiaccess/ で API を有効にし、3 つの環境変数を追加して、IP を許可リストに登録します

Domainr と Namecheap は任意です。なくてもワークフローは適切に機能し、対応するクロスチェックの手順をスキップします。

Step 1 — 予算を決める

次のように尋ねます。このプロジェクトにぴったりの .com なら、いくらまで払えますか? 予算の目安は以下のとおりです。

予算得られるもの
$0未登録のドメインのみ(良い候補はほとんどありません)
$250–$1k中古ドメイン市場の狙い目(特に HugeDomains は優れています。Laura は「$1k 未満で購入できる素晴らしい .com がたくさんあった」と見つけました)
$1k–$2kLaura の Paperbell.com と同じ価格帯。ブランド化しやすい選択肢が豊富です
$2k+プレミアム

候補に惚れ込む前に、予算内のものだけに絞り込みます。

Step 2 — 「ブランド名」候補の種となる言葉を出す

製品の機能と、表現したい印象やカテゴリーを尋ねます。以下の優先順位に沿って、候補となるドメインを 20~40 個ブレインストーミングします。

  1. 実在する 2 つの単語を組み合わせる ← 推奨(Helpscout、RightMessage、ConvertKit、Paperbell、Mailchimp)。スペルを覚えやすく、記憶にも検索にも引っかかりやすいです。
  2. 元の単語に接頭辞や接尾辞を付ける — 元の単語が取得済み、または予算オーバーの場合は .com を狙います。「単語 X が気に入ったけれど、X.com は取得済み。どんな修飾語を付ければ .com を取れるか?」
    • モダンな接頭辞(B2B SaaS の印象):try(TryGamma、TryRoam)、use(UseMotion、UseChalk)、with(WithCove、WithFrame)、join(JoinHomebase、JoinHonor)
    • 定番の接頭辞(今も有効):get(GetMagic、GetResponse)、go(GoCardless、GoFundMe)、hey(HeyMarvin、HeyHenry)、the(TheBrowserCompany、TheDyrt — 編集的な雰囲気)
    • 古くさい印象があるため、意図がない限り避ける:my(MyFitnessPal)、meet(MeetEdgar)
    • 接尾辞:+ly(Calendly、Grammarly — 実績はありますが、「2015 年のスタートアップ」の印象になります)、+ify(Spotify、Shopify — 自然な名前にするのは難しく、成功例はまれです)、+labs(AI や研究を打ち出す場合)、+hq / +app(主にくだけた表現)
    • 注意点:商標の衝突(UseSlack.com は登録可能でもブランド侵害にあたります)。人気のある元の単語には、同じ所有者が try/use/get/join 付きの候補を先に取得していることがよくあります。長い URL は、スマートフォンで入力する際の負担になります。
    • 候補を網羅する方法:元の単語が気に入っている場合は、try/use/with/join/get/go/hey/the + 単語 と 単語 + ly/ify/labs/hq/app の組み合わせを一度にすべて生成します(約 15 個の候補)。
  3. 実在する単語を少し変える(Trello、Pinterest、Lyft)— 問題ありません。
  4. 造語(Sunsama、Besedky)— 最後の手段としてのみ使います。覚えにくいことで知られています。
  5. よくある単語ひとつだけの名前(Clubhouse、Spoke、Blush、Finder)— 避けます。検索しても見つけにくく、.com は常に取得済みで、他の製品とも衝突します。

確認する前に、番号付きの候補リストを提示します。明らかに見込みのない候補の確認に手間をかけないでください。

ステップ 3 — 主な空き状況の確認(Vercel CLI)

空き状況の確認には vercel domains check を、レジストラーの見積もりには vercel domains price を使用します。候補を順に処理します。

for domain in candidate1.com candidate2.com candidate3.com; do
  echo -n "$domain: "
  vercel domains check "$domain" 2>&1 | grep -E "available|not available|Error" || echo "checking..."
done

利用可能と判定された候補の価格を確認します。

vercel domains price candidate1.com candidate2.com candidate3.com

取得済みドメインを詳しく調べる場合(レジストラーのステータス、有効期限、ドメインがすでに Vercel 管理下にある場合はネームサーバー)、単独で次のコマンドを実行します。

vercel domains inspect candidate.com

TLD の信頼性:Vercel CLI は .com と大半の gTLD では非常に安定していますが、.ai、.dev、.io、.app ではエラーになります(Vercel はこれらをレジストラー側で販売していません)。.com 以外の候補ではステップ 3 を省略し、ステップ 4 に進んでください。

ステップ 4 — whois で相互確認する

登録状況の確かな情報源です。TLD ごとに適切なサーバーを問い合わせてください。.com 以外に -h whois.verisign-grs.com を指定すると、何も表示されずに誤った未登録判定になります。

分類する順序が重要です(unclaimed を参考にしています)。まず REGISTERED を示すシグナルを確認し、その後で利用可能を示すシグナルを確認します。パーキング中のドメインの whois/ランディングページには、「このドメインは販売中です」と書かれていることがあります。先に「available」を検索すると、取得済みの名前を誤って利用可能と判定してしまいます。また、予約済み ≠ 利用可能です。「is reserved」「not available for registration」「blocked for registration」はすべて取得済みを意味します。RDAP ではこのような名前が 404 になることもあります。

  • 登録済みのシグナル:creation date、registrar:、registry expiry、registrant、name server
  • 予約済みのシグナル(取得済みとして扱う):is reserved、reserved by、not available for registration、blocked for registration
  • 利用可能のシグナル:no match、not found、no entries found、no object found、not registered、available for registration

.com/.net — Verisign:

for domain in candidate1.com candidate2.com; do
  result=$(whois -h whois.verisign-grs.com "$domain" 2>&1)
  if echo "$result" | grep -qiE "registrar:|creation date"; then
    expiry=$(echo "$result" | grep -i "registry expiry" | head -1 | sed 's/.*: //')
    echo "$domain → TAKEN (expires $expiry)"
  elif echo "$result" | grep -qiE "is reserved|reserved by|not available for registration|blocked for registration"; then
    echo "$domain → RESERVED (not registrable)"
  elif echo "$result" | grep -qi "no match"; then
    echo "$domain → AVAILABLE"
  else
    echo "$domain → UNKNOWN (do not treat as available)"
  fi
done

その他の TLD — サーバーを決め打ちせず、IANA に権威ある whois ホストを問い合わせてから、そこに問い合わせます(フォールバック時の慣例は whois.nic.<tld> です)。

tld=ai
server=$(whois -h whois.iana.org "$tld" 2>/dev/null | grep -i "^whois:" | awk '{print $2}')
server=${server:-whois.nic.$tld}
whois -h "$server" candidate.$tld

注意点:レジストリによっては、ポート 43 の whois がまったくありません(Google の .dev/.app/.page では IANA に何も記載されておらず、whois.nic.dev も名前解決されません)。このような場合は、以下の RDAP が確かな情報源です。

.dev/.app/.io およびその他の新しい TLD の RDAP — TLD が対応している場合、JSON ネイティブで whois より扱いやすい方式です。

UA="domain-skill/0.1 (availability check)"
for domain in candidate.dev candidate.app; do
  code=$(curl -sL -o /dev/null -w "%{http_code}" -A "$UA" "https://rdap.org/domain/$domain")
  case "$code" in
    404) echo "$domain → probably available (confirm via whois — see caveat)" ;;
    200) echo "$domain → TAKEN" ;;
    429) echo "$domain → rate-limited, sleep + retry" ;;
    *)   echo "$domain → UNKNOWN (do not treat as available)" ;;
  esac
  sleep 1  # rdap.org rate-limits aggressively
done

RDAP の注意点(すべて unclaimed プロジェクトで検証済みです):

  • 必ず User-Agent を送信してください — rdap.org(および一部のレジストリサーバー)は、User-Agent のないリクエストを 403 で拒否します。403 を単純に「404 ではない = 取得済み」と誤解するおそれがあります。
  • 404 は利用可能の証明ではありません。 レジストリによる予約済み、ブロック済み、未販売のプレミアム名も RDAP では 404 になります。RDAP の結果だけを根拠に利用可能と報告する前に、whois クエリ(上記のステップ 4)で確認してください。whois が予約済みと示す場合は、取得済みです。
  • rdap.org がルーティングできるのは、IANA ブートストラップ(https://data.iana.org/rdap/dns.json)に登録された TLD だけです。 対象の TLD が登録されていない場合、rdap.org の 404 には意味がありません。whois に切り替えてください。ブートストラップに含まれていない便利な直接エンドポイントは次のとおりです:.io → https://rdap.identitydigital.services/rdap/domain/<domain>、.so → https://rdap.nic.so/domain/<domain>。
  • 200 のレスポンス本文には events[] が含まれます。expiration の eventDate はステップ 7b のドロップ監視に使用します。

結果の読み方:

  • No match/no object found/RDAP 404(whois で確認済み)=未登録、利用可能
  • Registrar: <name>/RDAP 200 =取得済み、アフターマーケットを確認
  • タイムアウト/レート制限/不自然な出力 = UNKNOWN — 利用可能として分類してはいけません。 代わりに、後で再試行してください。

複数の TLD をまとめて調べる場合 — 候補が 12 件を超える、または対象が .com 以外にも広がる場合は、ループを独自に実装せず、unclaimed を使ってください。正しい分類での RDAP+whois、再開可能な SQLite キャッシュ、価格確認に対応しています(Node 24+)。

npx unclaimed check orbit --tlds com,io,ai,dev
npx unclaimed sweep --words-file ./candidates.txt --tlds com
npx unclaimed available --sort commercial --limit 50

このツールの 3 つの状態は、こちらの分類の available/registered/unknown に対応しています(タイムアウトを利用可能として報告することもありません)。

ステップ 5 — Domainr で照合する(アフターマーケットのシグナル)

Domainr は、多数の TLD にわたるレジストラとマーケットプレイスの状況を集約しています。DOMAINR_API_KEY が設定されていない場合はスキップしてください。設定されている場合は、以下を実行します。

for domain in candidate1.com candidate2.com; do
  curl -s "https://domainr.p.rapidapi.com/v2/status?domain=$domain" \
    -H "X-RapidAPI-Key: $DOMAINR_API_KEY" \
    -H "X-RapidAPI-Host: domainr.p.rapidapi.com" \
    | jq -r --arg d "$domain" '.status[] | "\($d): \(.status) — \(.summary)"'
done

ステータスコード:

  • undelegated inactive → 未登録、取得可能
  • active → 登録済み、使用中
  • marketed、parked、priced → アフターマーケットで販売中(価格情報がある場合、Domainr が表示します)
  • premium → レジストリのプレミアム価格(多くの場合、年間 500 ドル以上)

marketed または priced は、ステップ 7 で HugeDomains/Afternic を調べるべき有力なシグナルです。

ステップ 6 — Namecheap の価格を確認する

代替のレジストラです。1 年目のプロモーション価格では、Vercel より安い場合があります。NAMECHEAP_API_* が設定されていない場合はスキップしてください。設定されている場合は、以下を実行します。

DOMAINS="candidate1.com,candidate2.com,candidate3.com"
curl -s "https://api.namecheap.com/xml.response?ApiUser=$NAMECHEAP_API_USER&ApiKey=$NAMECHEAP_API_KEY&UserName=$NAMECHEAP_API_USER&Command=namecheap.domains.check&ClientIp=$NAMECHEAP_CLIENT_IP&DomainList=$DOMAINS" \
  | xmllint --xpath '//*[local-name()="DomainCheckResult"]' - 2>/dev/null \
  | grep -oE 'Domain="[^"]+" Available="[^"]+"( IsPremiumName="[^"]+")?( PremiumRegistrationPrice="[^"]+")?'

Available="true" は、Namecheap のレジストラ価格で登録可能であることを意味します(.com は通常、年間 9~15 ドルです)。IsPremiumName="true" はレジストリのプレミアム価格帯を意味します(予算内でない限り、候補から外してください)。

Vercel、Domainr、Namecheap、whois の結果を照合します。 結果が異なる場合(レジストラ間の移管中にまれに発生します)、登録状況の確認には whois を、実際の購入には Vercel と Namecheap のうち安い方を信頼してください。

ステップ 7 — 取得済み候補のアフターマーケットを調べる

マーケットプレイスをスクレイピングしないでください。 以下の方法はすべて検証済みですが、失敗しています。

  • curl(現実的な User-Agent を指定した場合も)→ HugeDomains は 403、GoDaddy は Akamai によるアクセス拒否
  • 通常のフェッチ(例:WebFetch)→ どのサイトでも Cloudflare の 403
  • 実際の Chromium を使う dev-browser スキル → Cloudflare が Playwright の自動化フラグを検出し、チャレンジページを表示します。回避するには playwright-extra とステルスプラグイン(動作が不安定)、または人が CAPTCHA を解いた事前準備済みのブラウザープロファイルが必要です(ドメイン探しには割に合いません)。
  • domainr.com の公開ウェブサイト → IP アドレス単位でレート制限
  • rdap.org → 登録状況のみで、アフターマーケットの価格情報はありません

有効な方法:マーケットプレイスの URL を組み立てて、ユーザーにクリックしてもらいます。ドメインごとに約 30 秒で、確実に機能します。ユーザーが引き続き関心を持っている「取得済み」候補ごとに、以下を出力します。

namedyoulove.com — TAKEN (Registrar: GoDaddy)
Aftermarket pricing — click to verify:
  HugeDomains: https://www.hugedomains.com/domain-profile.cfm?d=namedyoulove&e=com
  Afternic:    https://www.afternic.com/domain/namedyoulove.com
  Sedo:        https://sedo.com/search/searchresult.php4?keyword=namedyoulove.com
  Dan/GoDaddy: https://dan.com/buy-domain/namedyoulove.com

Laura による HugeDomains の補足:Laura は HugeDomains から Paperbell.com を 1,795 ドルで購入し、アフターマーケットを調べる最初の候補として最適だと勧めています。「1,000 ドル未満で購入できるすばらしい .com がたくさんあります」。取得済み候補は、必ず最初に HugeDomains を確認してください。

ステップ 7a — 稼働状況を確認する:取得済みドメインで実際に何か公開されているか?

マーケットプレイスはスクレイピングできませんが、取得済みドメイン自体にはアクセスできます。通常、そのランディングページから販売先が分かります。実際のサイトがない取得済みドメインは、交渉や連絡を試みるうえでも最有力の候補です。所有者が使用していないためです。

UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"
for domain in taken1.com taken2.com; do
  body=$(curl -sL --max-time 6 -A "$UA" "https://$domain/" 2>/dev/null | head -c 16384)
  [ -z "$body" ] && body=$(curl -sL --max-time 6 -A "$UA" "http://$domain/" 2>/dev/null | head -c 16384)
  final=$(curl -sIL --max-time 6 -A "$UA" -o /dev/null -w '%{url_effective}' "https://$domain/" 2>/dev/null)
  hay="$final
$body"
  if [ -z "$body" ]; then
    echo "$domain → NONE (no DNS / dead server — best outreach lead)"
  elif echo "$hay" | grep -qiE "sedoparking|bodis\.com|parkingcrew|afternic|dan\.com|hugedomains|buy this domain|domain (name )?is for sale|domain for sale|buy now for|parked free|this web page is parked|domain has expired"; then
    marker=$(echo "$hay" | grep -oiE "sedoparking|afternic|dan\.com|hugedomains|for sale" | head -1)
    echo "$domain → PARKED ($marker — for-sale lead, note which marketplace)"
  else
    echo "$domain → LIVE (real site, owner is using it — long shot)"
  fi
done

(最終 URL の確認が重要です。多くのパーキングドメインは、マーケットプレイスのホストへ直接リダイレクトします。たとえば、ランディングページの本文が JavaScript でも、hugedomains.com に移動したなら、購入先が分かります。)

取得済み候補をそれぞれ分類します。

  • NONE(DNS がない/接続が拒否される)→ 最有力候補です。所有者が受動的にドメインを占有している状態です。whois の連絡先へのアプローチ、またはマーケットプレイスでの低額提示を検討します。
  • PARKED → 販売中です。目印やリダイレクト先のホストから、ステップ 7 のリンクで開くマーケットプレイスが分かります(HugeDomains のランディングページなら HugeDomains で購入します。最初の 16KB に希望価格が表示されることも多いため、スクレイピングに苦労する必要はありません)。
  • LIVE → 使用中です。ユーザーがどうしても欲しがっている場合を除き、候補から外します。

ユーザーが引き続き関心を持っている取得済み候補だけを確認してください。ドメインごとに必要なのは、1 回のライブリクエストだけです。

ステップ 7b — 期限切れ間近の取得済みドメインを監視する

取得済み候補については、ステップ 4 で有効期限がすでに分かっています。gTLD の期限後のライフサイクルは、自動更新猶予期間(≤45 日)→ 償還期間(30 日)→ 削除保留期間(5 日)です。そのため、期限切れから 約 75~80 日後に、期限切れドメインが再び登録可能になります。ほとんどのドメインは更新されますが、候補が NONE/PARKED で、なおかつ有効期限がすでに過ぎている場合は、本当に削除される可能性があります。

whois -h whois.verisign-grs.com candidate.com | grep -iE "expiry|domain status"
  • ステータスが redemptionPeriod または pendingDelete → 所有者が更新しなかったことを示します。削除時期は有効期限 + 80 日頃と推定し、交渉するのではなく、DropCatch/SnapNames でバックオーダーを入れてください(約 59~79 ドル。取得できた場合のみ支払い)。
  • 期限切れから間もなく、パーキングページに「ドメインの有効期限が切れました」と表示されている場合も、同様です。
  • これは「放棄された場合」の推定であり、保証ではありません。日付が近づいたら毎週再確認してください。

ステップ 8 — 結果を分類する

次のように分類します。

  • 現在取得可能(年額約 10~30 ドル) — 第一候補
  • 予算内でアフターマーケットに掲載中 — 第二候補(ステップ 7/7a で確認した提示価格とマーケットプレイスを記録)
  • まもなく失効 — ステップ 7b で失効を確認済み。購入する代わりにバックオーダーする
  • 連絡候補 — 取得済みで、稼働状況が NONE/PARKED、妥当な掲載なし。whois の連絡先に直接オファーする
  • アフターマーケットで予算超過、または稼働中のサイトあり — 除外する

ステップ 9 — アフターマーケットの掲載者と交渉する

候補が掲載されている場合:

  • 表示価格が最低価格であることはほとんどありません。提示額より 30~50%低い金額から交渉してみましょう。
  • HugeDomains と Afternic には「Make an offer」があります。これを利用してください。
  • ステップ 7a でドメインが PARKED または NONE と分類され、所有者がマーケットプレイスに掲載していない場合は、whois の連絡先を調べて直接オファーしましょう。何年も稼働中のサイトがないドメインは、売却意欲のサインです。「売却に興味はありますか」ではなく、控えめで具体的な金額を提示してください。

ステップ 10 — ここで初めて名前を調査する(それ以前には行わないでください!)

取得可能性と予算の確認を通過した上位 3~5 件の候補について、次を行います。

  • 単語だけで Google 検索し、同じ名前で何が存在するか確認します。
  • 商標を確認します(USPTO) — ステップ 10a を参照してください。
  • ソーシャルメディアのハンドル名の取得可能性を確認します — ステップ 10b を参照してください。
  • 声に出して言ってみます。電話で聞いた人がスペルを書き取れますか?
ステップ 10a — agent-browser で USPTO の商標を検索する

機能しない方法(確認済みです。時間を無駄にしないでください):

  • tmsearch.uspto.gov に対する curl → AWS WAF チャレンジが表示され、データのない JS シェルのみ
  • tmsearch.uspto.gov に対する通常の fetch(例:WebFetch)→ 同じ WAF に阻まれ、空の SPA シェルが返る
  • Justia、Trademarkia、TrademarkElite に対する curl または通常の fetch(例:WebFetch)→ すべて 403
  • USPTO Open Data Portal API → ID.me にリンクされた USPTO.gov アカウントが必要(登録が困難)
  • Marker API / RapidAPI USPTO エンドポイント → API キーの登録が必要

機能する方法:agent-browser で USPTO Trademark Search の実際の SPA を操作します。Angular + Material コンポーネントですが、入力して Enter キーで送信するパターンは確実に機能します。

# Open + search
agent-browser open "https://tmsearch.uspto.gov/" --session tm
sleep 4
agent-browser fill "#searchbar" "<phrase to check>" --session tm
agent-browser press Enter --session tm
sleep 6

# Capture results
agent-browser screenshot /tmp/tm-<slug>.png --session tm
agent-browser eval "(()=>{const m=document.body.innerText.match(/([0-9,]+)\s+results?\s+for/i); return m?m[0]:'no count';})()" --session tm

検索結果の読み方:

  • 結果の総数は、USPTO データベース全体を対象としたあいまい検索/単語検索の件数です。一般的な単語では数万件返ることがありますが、それだけではクリアランスの判断材料になりません。
  • 重要なのは:スクリーンショットで最初に表示される 5~10 件の商標名(または snapshot -i | grep wordmark)を確認することです。USPTO は関連度順に並べるため、完全一致するフレーズは一番上に表示されます。上位の結果が断片的なもの(別々の商標として「MY KNOW」や「KNOW MY」など)であれば、登録済みの完全一致商標が妨げになる可能性はほぼありません。
  • サイドバーで「Live」のみに絞り込み、実際に妨げとなる商標に注目してください(Dead/Cancelled は新規出願には関係ありません)。
  • 区分が重要です。「GIFT ASSESSMENT」の商標が、ギフトアセスメントサービス(USPTO の第 41 類の教育、第 42 類の SaaS、第 45 類の個人向けサービス)で登録されていれば、妨げになります。同じ単語でも、ギフトバスケットの第 35 類であれば問題ない可能性があります。

これはスクリーニングであり、法律上の助言ではありません — 本格的に採用する名前については、知的財産の弁護士または包括的なクリアランスサービス(Cometrics/Corsearch)に確認してください。

agent-browser close --session tm
ステップ 10b — ソーシャルメディアのハンドル名の取得可能性
# X / Twitter (404 = available)
for handle in candidate1 candidate2; do
  code=$(curl -sL -o /dev/null -w "%{http_code}" -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36" "https://x.com/$handle" --max-time 10)
  echo "  @$handle → x.com $code"
done

# LinkedIn company page (404 = available)
for handle in candidate1 candidate2; do
  code=$(curl -sL -o /dev/null -w "%{http_code}" -A "Mozilla/5.0" "https://www.linkedin.com/company/$handle" --max-time 10)
  echo "  $handle → linkedin $code"
done

スクリプトから Instagram を確認するのは信頼できません — IG はどの URL に対しても 200 を返します(存在しないハンドル名でも SPA シェルが読み込まれ、「isn't available」というメッセージはクライアント側で表示されます)。ユーザーがクリックして確認できるようにしてください。

Instagram: https://instagram.com/<handle>

Instagram の SPA 検出と格闘するより、30 秒かけて手動でクリックして確認する方が確実です。

ステップ 11 — 購入する

ユーザーが直接取得可能な候補を選んだら、ステップ 3 とステップ 6 で確認した価格のうち、最も安い金額を提示したレジストラで購入します。

# Vercel
vercel domains buy <domain>.com

# Namecheap (via API — uses ~/.zshenv credentials)
curl -s "https://api.namecheap.com/xml.response?ApiUser=$NAMECHEAP_API_USER&ApiKey=$NAMECHEAP_API_KEY&UserName=$NAMECHEAP_API_USER&Command=namecheap.domains.create&ClientIp=$NAMECHEAP_CLIENT_IP&DomainName=<domain>.com&Years=1&..."

Vercel は 1 つのコマンドで設定でき、デプロイと同じダッシュボードで DNS を管理できます。そのため、Namecheap の方が明らかに安い場合(初年度のプロモーション価格ではよくあります)を除き、Vercel を推奨します。どちらも自動更新はデフォルトで有効です。

実行前にユーザーに確認してください — 実際に料金が発生します。

アフターマーケットで購入する場合は、マーケットプレイスから直接購入してください(HugeDomains/Afternic/Sedo はいずれもエスクローに対応しています)。その後、移管が完了してから Vercel に移管するか、ネームサーバーを Vercel に向けてください。

連携するツール

  • toolify — ユーザーがまだ設定していない場合は、Domainr と Namecheap の API 認証情報を設定します
  • business-brainstorm — ドメイン探しの前に、根底にあるビジネスアイデアを厳しく検証します(優れた .com があっても、悪いアイデアは悪いアイデアです)
  • decide — 上位 3 候補のうちどれを選ぶか、判断が明らかでない場合に使います
  • skillify — ドメイン探しで、繰り返し使えるワークフロー(たとえば、特定のニッチにおける命名パターン)が見つかった場合は、独立したサブスキルとしてひな形を作成します

品質に関する注意事項

  • 常に 3 つの状態で判定します。 各チェックの結果は必ず AVAILABLE/TAKEN/UNKNOWN のいずれかです。タイムアウト、レート制限、403、解析不能な応答は UNKNOWN です。AVAILABLE として処理してはいけません。最終結果を提示する前に、UNKNOWN を再試行してください。
  • ブレインストーミングを先に、実行は最後にします。 ユーザーが明確に「買って」と言うまで、vercel domains buy は絶対に実行しないでください。実際のお金がかかります。利用可否と価格の確認(Step 3)には、安全な vercel domains check と vercel domains price を使います。
  • 予算フィルターは譲れません。 ユーザーが「でも気に入っている」と押し返してきたら、それこそが Laura の警告した落とし穴だと思い出させてください。
  • 複数ツールの組み合わせは意図的なものです。 すべてをきちんと網羅できる単一のツールはありません。Vercel は高速ですが gTLD に限定されます。whois は信頼性がありますが TLD ごとの対応です。Domainr は情報を集約します。Namecheap は初年度のプロモーション価格を表示します。RDAP は最新の TLD の不足を補います。agent-browser は USPTO を操作します。どれかを省くと、確認できない点が残ります。
  • マーケットプレイスのスクレイピングにこだわらないでください。 HugeDomains/Afternic/Sedo/Dan はいずれも Cloudflare により自動化がブロックされます。クリックして開ける URL を出力してください。ヘッドレスブラウザーで回避しようとするより、手動で 30 秒クリックする方が確実です。
  • USPTO によるスクリーニングは、法的な使用許可を意味しません。 大まかな絞り込みに使い、真剣に検討している名前は知的財産専門の弁護士に確認してください。

参考資料

Laura Roeder の元の投稿:https://lauraroeder.com/how-i-nabbed-the-com-for-my-bootstrapped-startup-without-spending-a-million-bucks-6dc35c4606e9

コメント