OSS · Python CLI
domain-pre-flight
ダメなドメインは、良いアイデアの顔をしてやってくる。
登録の前に、そのドメインを検査しましょう。構造・TLD悪用リスク・過去コンテンツ履歴・120ブランドとのタイポスクワット類似・11言語のネガティブ意味・LLMO適性を、1コマンド・0-100点1つの判定に集約します。
- 買う前に判定できる 0-100点をGREEN / YELLOW / ORANGE / REDの4バンドに集約
- 無音の地雷を捕まえる TLD悪用、過去所有、同形字、既存ブランド衝突
- タイポスクワットを検出 120ブランド語幹とLevenshtein + bigram + confusables
- エージェントから呼べる MCPサーバー同梱、4 tool、stdio
- オープンソース · MIT
- PyPI + MCP
- 11 subcommand
- 作者: Ken Imoto
3ステップで回る
-
domain-pre-flight check <domain>有効な全チェックを走らせて、数秒で採点済み判定を返す。ほぼオフラインで動く -
--check-handles / --check-trademarkオプトインのオンラインチェック。5プラットフォームの同名ハンドル空き、商標deeplinkスキャン -
--json ↳ exit 0 / 1 / 2機械可読な出力と、バンドに連動するexit code。そのままCIに組み込める
誰のためのツールか
- インディー開発者・ソロメーカー 買う前に名前を裏取り。ブラウザタブ5枚の代わりに1コマンドで済ませる
- スタートアップ創業者・PM 候補の会社名・プロダクト名を、ローンチ後に何週間も溶かす罠と突合する
- グロース・マーケティングチーム 名前を発音しやすさ・記憶しやすさ・LLMO適性で秤にかけてから確定する
- 自動化エンジニア CIに組み込んで、悪いドメインがレジストラ登録の手前まで届かないようにする
どんな時に使うか
- 新プロダクトや副業プロジェクトの名前を決めるとき: 上位3候補を同じ物差しで裁ける
- 短いSLDや数字入りSLDを検討しているとき: 減点内訳がそのパターンの代償を教える
- 中古ドメインを買うとき: Waybackプローブで過去に何が乗っていたかが分かる
- ドメイン取得を自動化しているとき: 組み込めば、exit codeがパイプラインの続行可否を決める
インストール
pip install domain-pre-flight
# CLI + MCP server
pip install "domain-pre-flight[mcp]" オプションのextraでMCPサーバーが同梱され、ClaudeなどのエージェントからstdioでCLIと同じチェックを呼べます。
チェック項目
- 構造: 文字数・ハイフン・数字・IDN/punycode・RFC 1035準拠。完全オフライン
- TLD悪用リスク: Spamhaus / SURBL統計ベース。最悪帯は最大 -70
- 過去コンテンツ履歴: Wayback Machineのスナップショット数・アーカイブ期間、最大 -25
- タイポスクワット・ブランド類似: 既知ブランド語幹 約120件と Levenshtein距離・bigram重複、最大 -60
- ネガティブ意味: 11言語(EN / ES / PT / JA / KO / ZH / HI / AR / VI / TH / ID)の語彙突合、最大 -70
- LLMO適性: 発音しやすさ・記憶しやすさのヒューリスティック、0-20点(実験的)
- 同形字: IDNの視覚類似(confusables)検出、最大 -75
- 同名ハンドル(オプトイン): GitHub / npm / PyPI / X / Instagramの空き確認
実測判定
GREEN帯(パス)
| ドメイン | バンド | スコア | 主な減点 |
|---|---|---|---|
| example.com | GREEN | 100/100 | (none) |
| llmoscore.com | GREEN | 100/100 | (none) |
ORANGE / RED帯(棄却)
| ドメイン | バンド | スコア | 主な減点 |
|---|---|---|---|
| google.com | ORANGE | 40/100 | brand match: google (−60) |
| my-app123.tk | RED | 10/100 | .tk TLD (−70), digits (−15), hyphen (−5) |
ブランド衝突のないクリーンな.comは100点で着地します。同じSLDに.tkを付けて数字を入れるだけで、何も調べる前に90点が消えます。既存ブランドと完全一致する名前は、それ1つで60点を失います。判定は「どれを選ぶか」を教えません。「どれを選ばないか」を教えます。
選択1つで数字はこれだけ動く
同じSLDで、変えたのは以下の1軸だけです。減点はツールの実出力から。
TLDの選択
.tk vs .com → 70点差
.tkはSpamhaus / SURBLの最悪帯にランクされているので、TLD悪用の最大減点(-70)を負います。.comは0点。SLDは同じで70点違います。
ブランド衝突
Levenshtein 0 vs 3 → 60点差
既存ブランドと完全一致するSLDは60点減(UDRPリスク)。同じブランドから距離3ならnote扱いで減点なし。境界は「他人と混同される」ラインで引かれます。
使い方
# フルチェック(構造+履歴+総合判定)
domain-pre-flight check example.com
# オフラインのみ — Waybackへの問い合わせをスキップ
domain-pre-flight check example.com --no-history
# 5プラットフォームのハンドル空き確認を追加
domain-pre-flight check example.com --check-handles
# CI向けJSON出力(exit codeがバンドに連動)
domain-pre-flight check example.com --json 実際に返ってくる判定
3つの典型パターンをデフォルト設定で実測。理由文字列はツールの出力からそのまま。
- my-app123.tk → RED (10/100): .tk TLD risk -70、数字3個 -15、ハイフン1個 -5。「悪くなさそうな名前」に赤旗3本が重なる例
- google.com → ORANGE (40/100): identical to known brand "google" -60。TLDがきれいでも、商標リスクだけで減点を担う
- llmoscore.com → GREEN (100/100): ブランド重複なし、11言語のネガティブ意味ヒットなし。クリーンな候補の見た目
ツールは名前を選びません。買う前に、確定寸前の名前に埋まっているパターンを表に出します。
ステータス: 実験的。スコアの重みとしきい値は実際のドメイン判断と突き合わせて調整中です。判定は判断材料の1つで、唯一ではありません。Waybackの取りこぼしはあり、稼働ブランドに対する同形字攻撃は別途モニタリングが必要です。
なぜ作ったか
ドメインの決定は一方通行です。買った瞬間から、その名前はプロダクトに、全URLに、「正しい綴りは —」の応対の中に住み着きます。フラグを立てられたはずの信号(悪用の多いTLD、編集距離1の既存ブランド、他言語で侮蔑語になる英単語、以前に何かが乗っていたURL)は、登録前ならどれも安く確認できて、登録後だとどれも高くつきます。このツールは、そのぜんぶを1コマンドで、一気に確認します。
dnstwist・Namechkとの位置関係
問いが違います。dnstwistはあなたのブランドを狙う攻撃者が登録しうる派生名を生成し、Namechkはソーシャルでのハンドル空きを確認します。domain-pre-flightはその1層手前、「そもそもこの名前を登録すべきか、どんな基準で」を判定する層です。
| domain-pre-flight | dnstwist | Namechk | |
|---|---|---|---|
| 答える問い | このドメイン、取っていいか? | 自ブランドを狙える派生名は? | このハンドルはどこで空いてる? |
| 総合0-100点判定 | ✓ CI exit code付きの4バンド | — | — |
| 過去コンテンツ履歴 | ✓ Waybackプローブ | — | — |
| ネガティブ意味(多言語) | ✓ 11言語 | — | — |
| タイポスクワット生成 | list_typo_permutations (MCP)経由 | ✓ 20以上のアルゴリズム | — |
| 同名ハンドル確認 | ✓ 5プラットフォーム | — | ✓ 90以上のプラットフォーム |
| ライセンス | MIT | Apache-2.0 | プロプライエタリ(SaaS) |
表の「—」は2026年7月時点で公式docsに記載がないことを示します。3つは補完関係にあり、「取っていいか」の判定にはdomain-pre-flight、「誰があなたを狙って取りうるか」にはdnstwist、多数のソーシャルでのハンドル可否が決め手ならNamechkが向きます。
よくある質問
スコアはどう計算されますか?
各チェックが100点満点から減点します。合計が4バンドのどれかに落ちます(GREEN 90-100、YELLOW 70-89、ORANGE 40-69、RED 0-39)。exit codeはバンドに連動し(0 / 0 / 1 / 2)、スクリプトのゲートに使えます。個々の重みはリポジトリの単一スコアリングモジュールに集約されており、監査・編集・バージョン管理ができます。
APIキーは必要ですか?
いりません。全チェックがpublicなデータで動きます。Waybackは無料のCDX APIを使い、TLDリスクは同梱のSpamhaus / SURBL統計を読み、ネガティブ意味スキャンは同梱の語彙リストで動きます。--no-historyを付ければ完全オフラインでも回ります。
LLMO適性スコアはどれくらい信頼できますか?
LLMO適性スコアは実験的なヒューリスティックです。子音クラスタ、母音比、長さ、繰り返し語幹を0-20点で採点します。英語の発音に偏るバイアスはADR 0008に明記してあります。判定ではなくシグナルとして扱ってください。
dnstwistとの違いはなんですか?
dnstwistはあるドメインを起点に、攻撃者が使いうる派生名を生成します。domain-pre-flightは、いま検討しているそのドメインをそもそも登録すべきかを判定します。同梱のMCPツール list_typo_permutations は同じ発想を別の目的で使うもので、「取ろうとしている名前が他人の派生名になっていないか」を調べるためのものです。
商標もチェックしてくれますか?
USPTO / EUIPO / J-PlatPatに入力欄付きのdeeplinkを生成して、手動で確認できるようにします。ADR 0009の判断に基づき、「これを登録していいか」の問いに対して、それらのレジストリへの自動クエリは信号として不適切だと判断しています。タイポスクワットチェックは既知の120ブランド語幹との重複をフラグしていて、実際の衝突の大半はここで止まります。
エージェントから呼び出せますか?
はい。pip install "domain-pre-flight[mcp]" して domain-pre-flight-mcp を起動すると、MCPサーバーがstdioで4 tool (check_domain, check_handles, check_trademark, list_typo_permutations) を公開します。Claude、Cursor、その他MCP対応エージェントから、CLIと同じチェックを呼べます。
独自のブランドリストやネガティブ意味語彙は追加できますか?
はい。ブランド語幹は data/known_brands.txt、ネガティブ意味語彙は data/negative_meanings/<lang>.txt に置いてあります。どちらも平文で、実行のたびに読み込まれるので、forkかPRでチューニングできます。
スコープ外はなんですか?
ドメインの資産価値評価、WHOISスクレイピング、既に所有しているドメインの一括モニタリング、有償のバックリンク品質シグナル。このツールは「登録する直前の1回」のpre-flightチェックで、ドメインポートフォリオマネージャーではありません。
作者について
作者はKen Imoto。Zenn・Qiita・Dev.to・当サイトで技術記事300本以上、4言語で書籍40冊以上、Zenn・Qiitaで累計40万PV超、Zenodoで研究論文4本を公開し、LLMO Frameworkを設計しています。
関連
LLMO適性スコアは、LLMOフレームワーク(LLMがコンテンツを見つけやすくするための実務体系)の一部を実装したものです。より広い文脈はフレームワーク本体で読めます。
関連する開発ツール
- opencut-mcp OpenCut classic を任意の MCP クライアントから操作する MCP サーバー。Playwright がエディタセッションを保持し、12 個のツールでタイムライン・メディアアセット・エクスポートパイプラインを公開。OpenCut classic の fork 向け。
- mcp-scorecard MCPサーバー用のプリフライトチェックCLI。ツールを1つも呼ばずに消費される受動トークン量、ユースケースの絞り込み、セキュリティ、命名衝突の4層でスコアカードを返します。
- 404 Games 404ページに置けるcanvasミニゲーム10本。有名エラーページへのオマージュ集。Vanilla JS・依存ゼロ・テーマ追従。当サイトの404で稼働中。
- historymap YAMLを書くと企業サイト風のプロダクトヒストリー年表を生成。10種類のレイアウトをページ上で切り替え可能。静的・自己完結・iframe埋め込み対応。