SERPスニペットプレビュー
文書上では整って見える検索結果でも、実際の結果ページでは読みにくくなる場合があります。このSERPスニペットプレビューでは、公開予定のタイトル、絶対URL、メタディスクリプションを受け取り、一般的な表示文字数に収めて3行のテキストに整えます。短縮された項目も明示するため、公開前の編集確認、再現可能な品質検査、自動コンテンツ処理にご活用いただけます。
無料で実行
検索する方が目にするテキストを事前に確認できます
検索スニペットは限られた領域に情報を示すインターフェースです。閲覧者は表示URL、見出し、補足説明を数秒で確認することが多いため、各項目はスペースが尽きる前にページの目的を伝える必要があります。公開予定のタイトル、HTTPまたはHTTPSの絶対URL、メタディスクリプションをご入力ください。本ツールは空白を正規化し、URLを解析したうえで、タイトルを60文字、URLを75文字、説明文を160文字に制限し、URL、タイトル、説明文の順に別々の行へ配置します。これらは編集作業に役立つ実用的な基準であり、特定の検索エンジンによる表示を保証するものではありません。実際の結果は端末幅、書体、検索語句、検索エンジンによる文章の書き換えによって変わる場合があります。返されるフラグで変更箇所を確認できるため、もともと収まっていた文章と短縮された文章を区別できます。入力した情報だけを処理し、ページへアクセスしないため、下書きごとに高速かつ非公開で同じ結果を再現できます。
一定の短縮処理とURL検証の仕組みをご確認ください
必須項目には空でない文字列をご指定ください。文字数を数える前に連続する空白を1つへまとめるため、目に見えない書式の違いで誤解を招くプレビューが生じません。文字はUnicodeコードポイント単位で数え、一般的なアクセント付き文字や絵文字の符号化表現を途中で分割しないようにしています。正規化後の値が上限を超える場合は、表示できる最後の位置を省略記号へ置き換えます。そのため、完成した結果は設定された文字数以内に保たれます。URLには追加検証があり、絶対アドレスとして解析でき、HTTPまたはHTTPSを使用している必要があります。/products/newのような相対パスは、検索結果の完全な移動先を示さないため受け付けません。有効なURLは、数えて表示する前に正規化された形式へ変換されます。応答には整形済みの各項目、すぐに表示できるプレビュー文字列、項目ごとの短縮フラグ、適用した上限が含まれます。アプリケーションでは、プレビューの表示に加えて、値が短縮された際に独自の編集警告を出せます。
公開作業と品質確認にプレビューをご活用いただけます
この機能は、作成したメタデータを執筆段階からレビューへ移す場面に適しています。編集担当者は下書きをブラウザー実行画面へ貼り付け、特徴を示す重要な語句が残るかすぐに確認できます。コンテンツ基盤では記事を保存するたびにAPIを呼び出し、構造化された応答を下書きとともに保存して、修正が必要な項目を示せます。公開パイプラインでは同じ入力をテストケースとして実行し、デプロイ前に予期しないメタデータ変更を検出できます。出力は一貫性の確認にお使いください。検索順位の予測や、あらゆる結果ページをピクセル単位で再現する機能ではありません。検索エンジンは別の文章を選択したり、日付やパンくずを追加したり、検索語句に応じてタイトルを変更したりする場合があります。本プレビューは意図的にネットワーク通信を行わず、公開ページ、canonicalタグ、robotsディレクティブ、インデックス登録状況を調査しません。これらを確認する場合は、クロールや技術監査のツールと併用してください。文字数の確認では、固定ルールにより同じ入力から常に同じ結果が得られ、検証を容易に再現できます。
活用例
公開前にメタデータを確認
一般的な短縮後も、タイトルと説明文の重要な語句が表示されるかをご確認いただけます。
CMSの作業フローに検査を追加
保存済みメタデータを整形し、短縮フラグによって簡潔化が必要な項目を編集担当者へ示せます。
自動生成したランディングページを検証
多数の生成ページに同じ条件でプレビューを実行し、構造化された結果を品質報告へ保存できます。
よくある質問
プレビュー1件の料金はいくらですか?
APIでは1件につき$0.002です。ブラウザー実行画面では、同じ一定のロジックをローカルで使用できます。
Googleの検索結果を正確に再現しますか?
いいえ。編集確認用に実用的な文字数を適用します。実際のスニペットは検索語句、端末、表示幅、検索エンジンの書き換えによって異なります。
URLを絶対形式にする必要があるのはなぜですか?
完全なHTTPまたはHTTPSアドレスであれば、曖昧さのない検索結果に必要な接続元と移動先を特定できます。相対パスは受け付けません。
長い文章はどのように短縮されますか?
項目の上限を超えた文章を削除し、使用できる最後の文字位置へ省略記号を配置します。
ページへのアクセスや内容の調査を行いますか?
いいえ。入力された文字列の検証と整形だけを行い、ネットワーク通信、インデックス確認、公開中のメタデータ取得は行いません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/seo/serp-snippet-preview \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Practical Technical SEO Checklist for Growing Websites","url":"https://example.com/resources/technical-seo-checklist","description":"Review crawlability, indexing, metadata, internal links, structured data, performance, and monitoring with a practical technical SEO checklist."}'const res = await fetch("https://api.kit.forhosting.com/seo/serp-snippet-preview", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"title": "Practical Technical SEO Checklist for Growing Websites",
"url": "https://example.com/resources/technical-seo-checklist",
"description": "Review crawlability, indexing, metadata, internal links, structured data, performance, and monitoring with a practical technical SEO checklist."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/serp-snippet-preview",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"title": "Practical Technical SEO Checklist for Growing Websites",
"url": "https://example.com/resources/technical-seo-checklist",
"description": "Review crawlability, indexing, metadata, internal links, structured data, performance, and monitoring with a practical technical SEO checklist."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/serp-snippet-preview", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"title":"Practical Technical SEO Checklist for Growing Websites","url":"https://example.com/resources/technical-seo-checklist","description":"Review crawlability, indexing, metadata, internal links, structured data, performance, and monitoring with a practical technical SEO checklist."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"title":"Practical Technical SEO Checklist for Growing Websites","url":"https://example.com/resources/technical-seo-checklist","description":"Review crawlability, indexing, metadata, internal links, structured data, performance, and monitoring with a practical technical SEO checklist."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/serp-snippet-preview", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"title": "Practical Technical SEO Checklist for Growing Websites",
"url": "https://example.com/resources/technical-seo-checklist",
"description": "Review crawlability, indexing, metadata, internal links, structured data, performance, and monitoring with a practical technical SEO checklist."
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.serp_snippet_preview",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |