robotsメタタグのディレクティブと競合を確認
robotsメタタグは単純に見えても、互いに反する指示が気付かれないまま含まれることがあります。このチェッカーはcontent値を解析し、認識した各ディレクティブを分かりやすく説明します。さらに、インデックス登録とリンク追跡の状態を要約し、indexとnoindexのような直接的な競合を示します。スニペットやプレビューのパラメーターも検証します。未知または不正なトークンはエラーになるため、入力ミスが正常なレポートに紛れ込むことはありません。
無料で実行
タグをクローラーへの指示として読み取ります
noindex, follow, max-snippet:120のように、content属性の値だけを貼り付けてください。カンマで区切られたトークンを分解し、大文字と小文字や前後の空白の違いを吸収して、正規化した値を返します。indexとnoindexは検索結果への掲載可否、followとnofollowはページ内リンクの追跡可否を示します。allはindexとfollow、noneはnoindexとnofollowをまとめた表現です。そのほか、キャッシュ、スニペット、翻訳、画像の登録、プレビューサイズ、指定日以降の非表示も扱います。このツールは入力された値のみを解釈し、ページを取得したり、すべての検索エンジンが同じ挙動をすると断定したりはしません。
公開前に矛盾を見つけます
テンプレート、プラグイン、ページ個別設定が同じタグへ指示を追加すると、競合が生じやすくなります。indexとnoindexは掲載を許可しながら禁止し、followとnofollowはリンク追跡について同じ矛盾を生みます。allとnoindexまたはnofollow、noneとindexまたはfollowの競合も検出します。解析結果には各競合の理由と、インデックス登録および追跡が許可、禁止、未指定のどれかを示す要約が含まれます。ただし、矛盾した設定は優先順位を推測せず、生成元で修正してください。未知のトークンは要求全体を無効にするため、nofolowのような誤記を有効な指示として見逃しません。CIで検査すれば、設定変更による事故も公開前に発見できます。
スニペットとプレビューの上限を検証します
max-snippetには0以上の文字数、または無制限を表す-1を指定できます。max-video-previewには秒数、無効化する0、無制限の-1を指定できます。max-image-previewで使える値はnone、standard、largeだけです。チェッカーは形式を検証し、選択された意味を説明します。解析可能な日付を伴うunavailable_afterのほか、noarchive、nocache、nosnippet、notranslate、noimageindexにも対応します。パラメーターが欠けている場合や形式が不正な場合は、入力全体を拒否します。したがって、CMSやCIで成功したときは、すべてのトークンが理解されたと判断できます。なお、robotsメタデータはアクセス制御ではありません。非公開情報には必ず認証と認可を使用してください。
活用例
ページテンプレートを監査
共通レイアウトの値が多数のページへ反映される前に確認します。
CMSの出力を検証
公開時に、誤記や矛盾を含むrobots設定を拒否します。
SEOのデプロイ検査を追加
CIで生成値を検査し、意図しないnoindexや競合の公開を防ぎます。
よくある質問
何を貼り付ければよいですか?
noindex, followのようなcontent値だけを貼り付け、HTML要素全体は含めないでください。
料金はいくらですか?
APIは1回$0.002で、ブラウザー版は無料です。
noindexで非公開情報を守れますか?
いいえ。検索ロボットへの指示であり、セキュリティ対策ではありません。認証と認可をご利用ください。
未知の指示がエラーになるのはなぜですか?
誤記や未対応構文を明示し、不完全な解析を成功として返さないためです。
大文字と小文字は区別されますか?
いいえ。表記差を受け入れ、名前を小文字へ正規化します。
ページへアクセスしますか?
いいえ。入力された値だけを解析し、ネットワーク要求は行いません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/seo/robots-meta-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"noindex, follow, max-snippet:120"}'const res = await fetch("https://api.kit.forhosting.com/seo/robots-meta-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "noindex, follow, max-snippet:120"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/robots-meta-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "noindex, follow, max-snippet:120"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/robots-meta-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"noindex, follow, max-snippet:120"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"noindex, follow, max-snippet:120"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/robots-meta-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "noindex, follow, max-snippet:120"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.robots_meta_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 2000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |