内部リンクと外部リンクを集計
ページのリンクを内部と外部に分けて数えます。5件のうち3件が自分のドメイン、2件が外部なら、比率は0.6対0.4です。相対リンクは内部、サブドメインは外部として扱い、リンクごとに判定を示します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- ドメイン名
- https://example.com
- ドメイン名
- example.com
- リンク総数
- 5
- 内部リンク
- 3
- 外部リンク
- 2
このツールは、指定された各リンクをサイトのホスト名と照合して内部または外部に分類し、件数、比率、項目別の結果を返します。ページから抽出済みの一覧を対象とし、/aboutや#detailsのような相対参照と絶対URLの両方に対応しています。ページのリンク構成の確認、抽出処理の検証、未加工の一覧から一貫した指標を作成する際にご利用いただけます。ページの取得やサイトのクロールは行いません。
サイトのドメインとリンク一覧をご用意ください
最初に、サイトを識別するホスト名と、1ページから収集したリンクURLをご用意ください。リンク一覧には、絶対URL、プロトコル相対URL、ルート相対パス、パス相対参照、クエリだけのリンク、フラグメントリンクを混在させられます。相対参照は指定されたサイトURLを基準に解決されるため、/services、team、?
各項目には、URL参照として解析できる空でない文字列が必要です。このツールはHTMLをダウンロードせず、リンクを自動検出しません。そのため計算結果は決定論的であり、クローラー、ブラウザのエクスポート、CMS、テストスイート、表計算ソフトなどから得た一覧を解析できます。
ページ上の出現頻度を反映する場合は、すべての出現を含めてください。同じ宛先が3回あれば3回数えます。空の一覧は、誤解を招く0対0の比率を返さずエラーとして扱います。
分類方法と比率をご確認ください
URL解析時にホスト名が正規化されるため、大文字と小文字は区別しません。パス、クエリ文字列、フラグメント、認証情報、ポートはホスト名による判定を変更しません。異なるホスト名へのリンクは外部リンクです。
たとえば設定したサイトがexample.comの場合、blog.example.comのようなサブドメインも外部になります。たとえば4件中3件が内部リンクなら、内部比率は0.75です。安定した機械可読出力にするため比率は小数第6位までに丸められ、合計は1になります。
links配列は入力順を保ち、元の各文字列に対する分類を示すため、予想外の件数も容易に追跡できます。
SEO確認に結果をご活用ください
この件数は、普遍的な検索順位の目標ではなく診断指標としてご利用ください。内部リンクは、訪問者やクローラーが関連ページへ移動し、階層を理解し、サイト内で評価を伝える助けになります。外部リンクは主張の裏付けとなり、有用な一次情報へ読者を案内できます。
比率が珍しいページは確認する価値がありますが、適切な比率は目的によって異なります。用語集、商品ランディングページ、研究記事では、自然なリンク構成がそれぞれ異なります。結論を出す前に、類似テンプレートとの比較、経時変化の観察、項目別分類の確認をおすすめします。
自動処理では抽出後にこの集計を実行し、ページURLやクロール日時とともに結果を保存してください。内部リンクがないページの検出、外部宛先が急増したテンプレートの発見、移行後もナビゲーションが意図したホスト名にあるかの検証に役立ちます。ネットワーク要求や変動データを使わないため、同じ入力からは常に同じ結果が得られます。
活用例
ランディングページを確認
内部リンクと外部リンクの比率を測定し、抽出された各URLの分類を詳しく確認できます。
クローラー出力を検証
リンク抽出処理に再現可能な件数を追加し、想定外の外部宛先を検出できます。
サイト移行を確認
ドメインや環境の変更後も古いホスト名を指しているリンク一覧を見つけられます。
よくある質問
相対リンクは内部リンクですか?
はい。 ルート相対、パス相対、クエリだけ、フラグメントだけの参照は、指定サイトを基準に解決されるため内部リンクです。
サブドメインも内部として数えますか?
いいえ。 ホスト名の完全一致が必要です。example.comを設定した場合、blog.example.comは外部リンクです。
ページの取得やクロールを行いますか?
いいえ。 ご指定のURL文字列を分類するだけで、ネットワーク要求は行いません。
重複するリンクはどのように数えますか?
一覧の各項目を数えます。繰り返されたURLは別々のリンク出現を表すため、そのまま個別に集計します。
内部リンクと外部リンクの理想的な比率はありますか?
決まった正解はありません。用語集のまとめページ、商品ページ、調査記事では自然なリンクの仕方が違うため、似たテンプレート同士で比べ、時間とともにどう変わるかを見るのが確実です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/seo/internal-link-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}'const res = await fetch("https://api.kit.forhosting.com/seo/internal-link-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/internal-link-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/internal-link-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/internal-link-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.internal_link_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
サイトのドメインとリンク一覧をご用意ください
ドメインはexample.comのように単独で入力することも、HTTPまたはHTTPSの絶対URLとして入力することもできます。page=2、#pricingは内部リンクです。
分類方法と比率をご確認ください
HTTPまたはHTTPSのURLとして解決され、そのホスト名が指定サイトのホスト名と完全に一致するリンクを内部リンクと判定します。mailto、tel、ftpなどWeb以外のスキームも、設定ホスト上のHTTPまたはHTTPSページを示さないため外部として報告します。結果にはtotal_links、internal_links、external_linksに続き、0から1までのinternal_ratioとexternal_ratioが含まれます。
SEO確認に結果をご活用ください
ブラウザでは無料で、API自動化は1回$0.002です。
技術的な質問
料金はいくらですか?
このページではブラウザから無料で実行できます。APIリクエストは1回$0.002です。
URL一覧が空の場合はどうなりますか?
有効な件数と比率には1件以上のリンクが必要なため、invalid_inputエラーで失敗します。