Analyzed URL
https://www.ohkunoshimarabbitrescue.org/
Measured 3 weeks ago
AI-Ready Score
Fair
out of 100
Token Savings
Score Breakdown
Emerging protocols
0 of 6 detectedWell-known endpoints AI agents look for. Detected here means an agent can discover and connect to your service automatically.
-
OAuth Protected Resource RFC 9728
/.well-known/oauth-protected-resource -
OAuth Discovery RFC 8414
/.well-known/oauth-authorization-server -
MCP Server Card SEP-1649 draft
/.well-known/mcp/server-card.json -
A2A Agent Card A2A v1.0
/.well-known/agent-card.json -
API Catalog RFC 9727
/.well-known/api-catalog -
Agent Skills index Discovery RFC v0.2.0 draft
/.well-known/agent-skills/index.json
Doesn't stay fixed by itself. Monitoring isn't built yet — join the list and we'll tell you when it is.
You're on the list! We'll notify you when it launches.
What we measured No Markdown for Agents support detected
Your site doesn't support Markdown for Agents. This Cloudflare standard lets AI agents request content in markdown format, reducing token usage by ~80%.
How to implement
Implement one or more: (1) Respond to Accept: text/markdown with markdown content. (2) Serve .md URLs (e.g., /page.md). (3) Add <link rel="alternate" type="text/markdown"> tags. (4) Add Link HTTP headers for markdown discovery.
What we measured Page size: 1017KB
Your page is larger than recommended. Large pages are slower to process and more expensive for AI agents.
How to implement
Optimize page size by minifying HTML, deferring non-critical scripts, and removing unused CSS.
What we measured Content ratio: 0.1% (586 content chars / 1041388 HTML bytes)
Your page has a low ratio of actual content to total HTML. Much of the page weight is markup, scripts, or styles rather than content.
How to implement
Move CSS to external stylesheets, remove inline styles, minimize JavaScript, and ensure the HTML focuses on content structure.
What we measured No Content-Signal found (robots.txt or HTTP headers)
No Content-Signal directives found. These tell AI agents how they may use your content (search indexing, AI input, training data). The recommended location is robots.txt.
How to implement
Add Content-Signal to your robots.txt: User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no. You can also add it as an HTTP header on markdown responses.
What we measured 12 semantic elements, 192 divs (ratio: 6%)
Your page relies heavily on <div> elements. Semantic elements like <section>, <nav>, <header>, <footer>, and <aside> provide meaningful structure for AI agents.
How to implement
Replace generic <div> containers with appropriate semantic elements. Use <section> for thematic groups, <nav> for navigation, <header>/<footer> for page/section headers and footers.
What we measured HTML size: 1017KB
Your HTML page is heavier than recommended. Large pages take longer for AI agents to process and cost more tokens.
How to implement
Reduce HTML size by removing unused code, minifying HTML, and lazy-loading non-critical content.
What we measured no <h1>
Your heading structure has issues (skipped levels or multiple h1 tags). A clean hierarchy helps AI agents understand content organization.
How to implement
Ensure you have exactly one <h1> per page, and headings follow sequential order: h1 > h2 > h3. Don't skip levels (e.g., h1 directly to h3).
What we measured 130/585 elements with inline styles (22.2%)
Many elements have inline style attributes. These add noise for AI agents extracting content.
How to implement
Move all inline styles to CSS classes in your stylesheet. Use utility CSS frameworks like Tailwind if you need many unique styles.
What we measured Avg div depth: 10.3, max: 17
Your page has deeply nested <div> elements. Deep nesting adds noise and makes content extraction harder for AI agents.
How to implement
Simplify your HTML structure by removing unnecessary wrapper divs. Use CSS Grid or Flexbox for layout instead of nested container divs.
大久野島のうさぎたちに何が起きているのか? 広島県の大久野島は「うさぎの島」として知られ、多くの観光客が訪れています。 しかし、その裏でうさぎたちは過酷な環境にさらされ、命の危機に瀕しています。 無責任なエサやりで栄養失調や誤嚥が多発 観光客による抱っこや追いかけ回しで骨折・ストレス死 2024年末には大勢のうさぎが虐他死させられた。 車両事故による重傷・死亡 意図的な虐待とみられる傷を負った個体も確認 繁殖制限がないため、病気やケガが蔓延しやすい状態 こうした状況の中、行政の対応は十分とは言えず、ボランティアや民間の支援に頼らざるを得ないのが現実です。 島で病気やケガをしているうさぎに関しては、保護・救出については終生飼育と島に戻さないことを条件に環境省は黙認しています。 実際に、傷病うさぎたちが善意の救出者と里親のもとで治療を受け、家庭で幸せに暮らしています。 私たちにできること うさぎに触れない・追いかけない・抱っこしない 静かに距離を保ち、うさぎたちにストレスを与えない 島の現実を広め、行政への働きかけを行う 傷ついた子を見つけたら、信頼できる団体や保護主へ連絡を うさぎたちは観光の「道具」ではありません。 命ある動物として、尊重されるべき存在です。 あなたの行動が、うさぎたちの未来を変える力になります。
rabbit island ohkunoshima bunny rescue | rabbit top of page  [大久野島](https://www.ohkunoshimarabbitrescue.org/) [うさぎ島の真実](https://www.ohkunoshimarabbitrescue.org/) [偽りのうさぎの楽園](https://www.ohkunoshimarabbitrescue.org/)   - [](https://www.instagram.com/junkohiking/) - [](https://www.instagram.com/ohkunoshima_rabbit_rescue/) [ENGLISH SITE](https://junkoroberson.wixsite.com/rabbit-island)  [](https://www.bunnycarejp.com/) - [](https://www.facebook.com/bunnyintokyo/) - [](https://www.instagram.com/bunnyintokyo) - [](https://x.com/bunnyintokyo) Search ### 蘭風ちゃんの物語 大久野島で生活する蘭風ちゃんの助けを求める眼差しに皆が心を打たれました! 2024年7月に広島県のうさぎ島として知られる大久野島より保護された耳に大きな腫瘍が出来ていた蘭風(らんぷ)は 初めて公に寄付を募り、医療に掛けられ その後、家庭で暮らしたうさぎでした。  - [](https://www.instagram.com/ohkunoshima_rabbit_rescue) ## 私達の目標 大久野島のうさぎたちは、いまこの瞬間も命の危機にさらされています。 観光地の裏で、怪我や感染症、飢餓、多くの命が適切なケアを受けられないまま失われています。 私たちは、現場で実際に緊急救助してきた記録と経験に基づき、見過ごされてきた現実を変えるために行動しています。しかし、この問題は一部の人間だけでは解決できません、皆さんのご協力が必要です。 - 緊急性の高いうさぎの保護・医療・リハビリ支援 - 里親募集を通じた安全な移動と終生飼育の実現 - 島の現状(怪我・病気、人災)の継続的な記録と公開 - 不適切な餌やりを減らすための啓発活動 - 行政・専門家との連携による根本的解決の模索 この活動は、寄付・支援・拡散によって支えられています。 小さな行動でも、1つの命を救う力になります。 - ご寄付 - 情報をシェアする - 正しい知識を広める - 里親になる・つなぐ 「かわいい」で終わらせない。命に責任を持つ社会へ。 [大久野島](https://www.ohkunoshimarabbitrescue.org/blog)   救出前の蘭ちゃん  手術後の蘭ちゃん ## 大久野島がうさぎの楽園?? 大久野島のうさぎたちに何が起きているのか? 広島県の大久野島は「うさぎの島」として知られ、多くの観光客が訪れています。 しかし、その裏でうさぎたちは過酷な環境にさらされ、命の危機に瀕しています。 無責任なエサやりで栄養失調や誤嚥が多発 観光客による抱っこや追いかけ回しで骨折・ストレス死 2024年末には大勢のうさぎが虐他死させられた。 車両事故による重傷・死亡 意図的な虐待とみられる傷を負った個体も確認 繁殖制限がないため、病気やケガが蔓延しやすい状態 こうした状況の中、行政の対応は十分とは言えず、ボランティアや民間の支援に頼らざるを得ないのが現実です。 島で病気やケガをしているうさぎに関しては、保護・救出については終生飼育と島に戻さないことを条件に環境省は黙認しています。 実際に、傷病うさぎたちが善意の救出者と里親のもとで治療を受け、家庭で幸せに暮らしています。 私たちにできること うさぎに触れない・追いかけない・抱っこしない 静かに距離を保ち、うさぎたちにストレスを与えない 島の現実を広め、行政への働きかけを行う 傷ついた子を見つけたら、信頼できる団体や保護主へ連絡を うさぎたちは観光の「道具」ではありません。 命ある動物として、尊重されるべき存在です。 あなたの行動が、うさぎたちの未来を変える力になります。  bottom of page
Upload this file as /index.md on your server so AI agents can access a clean version of your page. You can also configure Accept: text/markdown content negotiation to serve it automatically.
Our recommendation
# Ohkunoshima Rabbit I > 大久野島(Ohkunoshima)の「ウサギの楽園」と言われるイメージの裏には、過酷な現実がある。医療ケアを受けられず短命を終える野生化した家うさぎ達。その悲しいサイクルを断ち切ろうと、アニマルウェルフェアの精神を持って懸命に救護を続ける人々の取り組みに注目が集まっている。 ## Main - [rabbit island ohkunoshima bunny rescue | rabbit](https://www.ohkunoshimarabbitrescue.org/): 大久野島(Ohkunoshima)の「ウサギの楽園」と言われるイメージの裏には、過酷な現実がある。医療ケアを受けられず短命を終える野生化した家うさぎ達。その悲しいサイクルを断ち切ろうと、アニマルウェルフェアの精神を持って懸命に救護を続ける… - [里親、一時預かり募集](https://www.ohkunoshimarabbitrescue.org/about-4) - [保護ウサギ一覧](https://www.ohkunoshimarabbitrescue.org/rescued-rabbits) - [寄付で支援する](https://www.ohkunoshimarabbitrescue.org/donation) - [病気と怪我](https://www.ohkunoshimarabbitrescue.org/sick-injured-rabbits) - [保護うさぎのその後](https://www.ohkunoshimarabbitrescue.org/adopted-rabbits) ## Blog - [大久野島ブログ](https://www.ohkunoshimarabbitrescue.org/blog) ## Support - [お問い合わせ](https://www.ohkunoshimarabbitrescue.org/contact-us)
Full llms.txt requires domain-wide analysis (coming soon)
Upload this file to https://www.ohkunoshimarabbitrescue.org/llms.txt at the root of your domain. AI agents like ChatGPT, Claude, and Perplexity check this file to understand your site structure.
This site already has a llms.txt file.
Valid format# Ohkunoshima Rabbit I > このサイトは、大久野島で傷病を負ったウサギの救出活動とその報告をまとめたものです。2024年7月から2026年6月にかけて、28匹のウサギが保護され、医療ケアを受け、新しい家庭へと繋がれました。活動資金は寄付によって賄われ、医療費や諸経費に充てられています。サイトでは、個々のウサギの救出経緯や現在の様子、そして島のウサギが直面する過酷な現実と、それに対する支援の必要性が訴えられています。 ## Homepage link - [home](https://www.ohkunoshimarabbitrescue.org/) ## AI エージェントによるアクセス このサイトは Wix で作成されており、エージェント AI によるアクセス用の MCP (Model Context Protocol) に対応しています。AI エージェントは直接接続して、公開中の最新のサイトコンテンツを取得できます。スクレイピングは不要です。 - [**サイト MCP エンドポイント**](https://www.ohkunoshimarabbitrescue.org/_api/mcp) - [**Wix MCP ドキュメンテーション**](https://dev.wix.com/docs/develop-websites/articles/get-started/about-the-wix-site-mcp) ## 利用可能な MCP ツール ### GetBusinessDetails ビジネスとサイトの詳細(時間帯(タイムゾーン)、メールアドレス、電話番号、住所など)を取得します。- パラメータは必要ありません。 ### SearchInSite サイト内の情報を検索します。 - **searchTerm** - サイト内で検索する語句。 ### SearchSiteApiDocs このサイトにインストールされている Wix ビジネスソリューションの API ドキュメントを取得し、AI クライアントに API の使用方法を通知します。商品とサービスのクエリにこのツールを使用します(SearchInSite の代わりに)。 - **searchTerm** - サイトの API ドキュメント内で検索する語句。 ### GenerateVisitorToken 新しいサイト訪問者セッションを作成し、サイト用のサイト訪問者アクセストークンを取得します。コンテキストに訪問者トークンがまだない場合は、CallWixSiteAPI リクエストを行う前に呼び出す必要があります。 - パラメータは必要ありません。 ### CallWixSiteAPI サイト上で API メソッドを呼び出し、サイト訪問者に代わってアクション(サイトデータのクエリ、プライベート予約を行う、購入を開始するなど)を実行します。 - **visitorToken** - サイト訪問者アクセストークン。利用できない場合は、最初に GenerateVisitorToken を使用します。 - **url** - 呼び出す API メソッドの絶対 URL(例:https://www.wixapis.com/...)。SearchSiteApiDocs を使用して取得します。 - **method** - API 呼び出しに使用する HTTP メソッド。 - **body** - 有効な JSON 文字列としてのリクエストボディ。 ### ReadFullDocsArticle Wix開発者ドキュメンテーションポータルから完全な記事を読み出します。 - **articleUrl** - Wix 開発者ドキュメンテーションポータル内の記事の URL。 ### ReadFullDocsMethodSchema Wix APIメソッドの完全なスキーマを読み出します。実際のメソッドを CallWixSiteAPI で呼び出す前に、先にこのメソッドを呼び出す必要があります。 - **articleUrl** - Wix API メソッドのリファレンス記事の URL。 ## AI + MCPでサイト訪問者ができること - ビジネスの詳細(連絡先情報、ビジネス拠点、営業時間)を取得する - 提供されている商品 / サービスを見つける - サービスや予約を行う - 購入を開始し、死払い手続きを完了するためにサイトに誘導される - サイトを閲覧することなく質問し、関連する回答を得る ## メモ - MCP エンドポイントへの接続に認証は不要です - サイトでアクセス可能な公開情報のみ利用できます - コンテンツは常にリアルタイムで最新です - ツール更新を受け取るには、ツール更新通知を受領した際に tools/list の呼び出しを実装してください。
Accessibility
Content available without JavaScript
Main content starts at 20% of HTML
Page size: 1017KB
AI Discoverability
All major AI search bots allowed
Sitemap found
robots.txt exists
llms.txt exists and is valid
Structured Data
JSON-LD found but basic types: WebSite, WebSite
All OG tags present
Meta description: 137 chars
Canonical URL present
lang="ja"
Semantic HTML
no <h1>
Has <main>
12 semantic elements, 192 divs (ratio: 6%)
20/23 images with meaningful alt text
Avg div depth: 10.3, max: 17
Content Efficiency
100% token reduction (HTML→Markdown)
Content ratio: 0.1% (586 content chars / 1041388 HTML bytes)
HTML size: 1017KB
130/585 elements with inline styles (22.2%)
{
"url": "https://www.ohkunoshimarabbitrescue.org/",
"timestamp": 1786513747115,
"fetch": {
"mode": "simple",
"timeMs": 1783,
"htmlSizeBytes": 1041388,
"supportsMarkdown": false,
"markdownAgents": {
"contentNegotiation": false,
"mdUrl": {
"found": false,
"url": null
},
"linkTag": {
"found": false,
"url": null
},
"linkHeader": {
"found": false,
"url": null
},
"responseHeaders": {
"contentSignal": null,
"xMarkdownTokens": null,
"vary": null
},
"frontmatter": {
"present": false,
"fields": [],
"level": "none"
},
"level": "none"
},
"statusCode": 200
},
"extraction": {
"title": "rabbit island ohkunoshima bunny rescue | rabbit",
"excerpt": "大久野島(Ohkunoshima)の「ウサギの楽園」と言われるイメージの裏には、過酷な現実がある。医療ケアを受けられず短命を終える野生化した家うさぎ達。その悲しいサイクルを断ち切ろうと、アニマルウェルフェアの精神を持って懸命に救護を続ける人々の取り組みに注目が集まっている。",
"byline": null,
"siteName": "Ohkunoshima Rabbit I",
"lang": "ja",
"contentLength": 586,
"metadata": {
"description": "大久野島(Ohkunoshima)の「ウサギの楽園」と言われるイメージの裏には、過酷な現実がある。医療ケアを受けられず短命を終える野生化した家うさぎ達。その悲しいサイクルを断ち切ろうと、アニマルウェルフェアの精神を持って懸命に救護を続ける人々の取り組みに注目が集まっている。",
"ogTitle": "rabbit island ohkunoshima bunny rescue | rabbit",
"ogDescription": "大久野島(Ohkunoshima)の「ウサギの楽園」と言われるイメージの裏には、過酷な現実がある。医療ケアを受けられず短命を終える野生化した家うさぎ達。その悲しいサイクルを断ち切ろうと、アニマルウェルフェアの精神を持って懸命に救護を続ける人々の取り組みに注目が集まっている。",
"ogImage": "https://static.wixstatic.com/media/11062b_55e4be1e75564866b6c28290f9a9d271%7Emv2.png/v1/fit/w_2500,h_1330,al_c/11062b_55e4be1e75564866b6c28290f9a9d271%7Emv2.png",
"ogType": "website",
"canonical": "https://www.ohkunoshimarabbitrescue.org",
"lang": "ja",
"schemas": [
{
"@context": "https://schema.org/",
"@type": "WebSite",
"url": "https://www.ohkunoshimarabbitrescue.org/",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.ohkunoshimarabbitrescue.org/popup-bzglk?q={search_term}"
},
"query-input": "required name=search_term"
}
},
{
"@context": "https://schema.org/",
"@type": "WebSite",
"name": "Ohkunoshima Rabbit I",
"url": "https://www.ohkunoshimarabbitrescue.org"
}
],
"robotsMeta": null,
"author": null,
"generator": "Wix.com Website Builder",
"markdownAlternateHref": null
}
},
"markdown": "大久野島のうさぎたちに何が起きているのか?\n\n広島県の大久野島は「うさぎの島」として知られ、多くの観光客が訪れています。 しかし、その裏でうさぎたちは過酷な環境にさらされ、命の危機に瀕しています。\n\n無責任なエサやりで栄養失調や誤嚥が多発\n\n観光客による抱っこや追いかけ回しで骨折・ストレス死\n\n2024年末には大勢のうさぎが虐他死させられた。\n\n車両事故による重傷・死亡\n\n意図的な虐待とみられる傷を負った個体も確認\n\n繁殖制限がないため、病気やケガが蔓延しやすい状態\n\nこうした状況の中、行政の対応は十分とは言えず、ボランティアや民間の支援に頼らざるを得ないのが現実です。\n\n島で病気やケガをしているうさぎに関しては、保護・救出については終生飼育と島に戻さないことを条件に環境省は黙認しています。 実際に、傷病うさぎたちが善意の救出者と里親のもとで治療を受け、家庭で幸せに暮らしています。\n\n私たちにできること\n\nうさぎに触れない・追いかけない・抱っこしない\n\n静かに距離を保ち、うさぎたちにストレスを与えない\n\n島の現実を広め、行政への働きかけを行う\n\n傷ついた子を見つけたら、信頼できる団体や保護主へ連絡を\n\nうさぎたちは観光の「道具」ではありません。 命ある動物として、尊重されるべき存在です。 あなたの行動が、うさぎたちの未来を変える力になります。\n",
"fullPageMarkdown": "rabbit island ohkunoshima bunny rescue | rabbit\n\ntop of page\n\n\n\n[大久野島](https://www.ohkunoshimarabbitrescue.org/)\n\n[うさぎ島の真実](https://www.ohkunoshimarabbitrescue.org/)\n\n[偽りのうさぎの楽園](https://www.ohkunoshimarabbitrescue.org/)\n\n\n\n\n\n- [](https://www.instagram.com/junkohiking/)\n\n- [](https://www.instagram.com/ohkunoshima_rabbit_rescue/)\n\n[ENGLISH SITE](https://junkoroberson.wixsite.com/rabbit-island)\n\n\n\n[](https://www.bunnycarejp.com/)\n\n- [](https://www.facebook.com/bunnyintokyo/)\n- [](https://www.instagram.com/bunnyintokyo)\n- [](https://x.com/bunnyintokyo)\n\nSearch\n\n### 蘭風ちゃんの物語\n\n大久野島で生活する蘭風ちゃんの助けを求める眼差しに皆が心を打たれました!\n\n\n\n2024年7月に広島県のうさぎ島として知られる大久野島より保護された耳に大きな腫瘍が出来ていた蘭風(らんぷ)は\n初めて公に寄付を募り、医療に掛けられ\nその後、家庭で暮らしたうさぎでした。\n\n\n\n- [](https://www.instagram.com/ohkunoshima_rabbit_rescue)\n\n## 私達の目標\n\n大久野島のうさぎたちは、いまこの瞬間も命の危機にさらされています。\n観光地の裏で、怪我や感染症、飢餓、多くの命が適切なケアを受けられないまま失われています。\n\n私たちは、現場で実際に緊急救助してきた記録と経験に基づき、見過ごされてきた現実を変えるために行動しています。しかし、この問題は一部の人間だけでは解決できません、皆さんのご協力が必要です。 \n\n\n\n- 緊急性の高いうさぎの保護・医療・リハビリ支援\n\n- 里親募集を通じた安全な移動と終生飼育の実現\n\n- 島の現状(怪我・病気、人災)の継続的な記録と公開\n\n- 不適切な餌やりを減らすための啓発活動\n\n- 行政・専門家との連携による根本的解決の模索\n\n\n\nこの活動は、寄付・支援・拡散によって支えられています。\n小さな行動でも、1つの命を救う力になります。\n\n- ご寄付\n\n- 情報をシェアする\n\n- 正しい知識を広める\n\n- 里親になる・つなぐ\n\n「かわいい」で終わらせない。命に責任を持つ社会へ。\n\n[大久野島](https://www.ohkunoshimarabbitrescue.org/blog)\n\n\n\n\n\n救出前の蘭ちゃん\n\n\n\n手術後の蘭ちゃん\n\n## 大久野島がうさぎの楽園??\n\n大久野島のうさぎたちに何が起きているのか?\n\n広島県の大久野島は「うさぎの島」として知られ、多くの観光客が訪れています。 しかし、その裏でうさぎたちは過酷な環境にさらされ、命の危機に瀕しています。\n\n無責任なエサやりで栄養失調や誤嚥が多発\n\n観光客による抱っこや追いかけ回しで骨折・ストレス死\n\n2024年末には大勢のうさぎが虐他死させられた。\n\n車両事故による重傷・死亡\n\n意図的な虐待とみられる傷を負った個体も確認\n\n繁殖制限がないため、病気やケガが蔓延しやすい状態\n\nこうした状況の中、行政の対応は十分とは言えず、ボランティアや民間の支援に頼らざるを得ないのが現実です。\n\n島で病気やケガをしているうさぎに関しては、保護・救出については終生飼育と島に戻さないことを条件に環境省は黙認しています。 実際に、傷病うさぎたちが善意の救出者と里親のもとで治療を受け、家庭で幸せに暮らしています。\n\n私たちにできること\n\nうさぎに触れない・追いかけない・抱っこしない\n\n静かに距離を保ち、うさぎたちにストレスを与えない\n\n島の現実を広め、行政への働きかけを行う\n\n傷ついた子を見つけたら、信頼できる団体や保護主へ連絡を\n\nうさぎたちは観光の「道具」ではありません。 命ある動物として、尊重されるべき存在です。 あなたの行動が、うさぎたちの未来を変える力になります。\n\n\n\nbottom of page\n",
"markdownStats": {
"images": 0,
"links": 0,
"tables": 0,
"codeBlocks": 0,
"headings": 0
},
"tokens": {
"htmlTokens": 346905,
"markdownTokens": 680,
"reduction": 346225,
"reductionPercent": 100
},
"score": {
"score": 73,
"grade": "C",
"rubricVersion": 2,
"dimensions": {
"accessibility": {
"score": 82,
"weight": 30,
"grade": "B",
"checks": {
"content_without_js": {
"score": 100,
"weight": 55,
"evidence": "proven",
"details": "Content available without JavaScript"
},
"fast_content_position": {
"score": 75,
"weight": 25,
"evidence": "plausible",
"details": "Main content starts at 20% of HTML"
},
"reasonable_page_size": {
"score": 40,
"weight": 20,
"evidence": "plausible",
"details": "Page size: 1017KB"
}
}
},
"aiDiscoverability": {
"score": 70,
"weight": 25,
"grade": "C",
"checks": {
"robots_allows_ai_bots": {
"score": 100,
"weight": 35,
"evidence": "proven",
"details": "All major AI search bots allowed"
},
"supports_markdown_negotiation": {
"score": 0,
"weight": 20,
"evidence": "plausible",
"details": "No Markdown for Agents support detected"
},
"has_sitemap": {
"score": 100,
"weight": 15,
"evidence": "plausible",
"details": "Sitemap found"
},
"has_robots_txt": {
"score": 100,
"weight": 10,
"evidence": "plausible",
"details": "robots.txt exists"
},
"has_llms_txt": {
"score": 100,
"weight": 10,
"evidence": "speculative",
"details": "llms.txt exists and is valid"
},
"has_content_signals": {
"score": 0,
"weight": 10,
"evidence": "speculative",
"details": "No Content-Signal found (robots.txt or HTTP headers)"
}
}
},
"structuredData": {
"score": 83,
"weight": 20,
"grade": "B",
"checks": {
"has_schema_org": {
"score": 50,
"weight": 35,
"evidence": "proven",
"details": "JSON-LD found but basic types: WebSite, WebSite"
},
"has_open_graph": {
"score": 100,
"weight": 20,
"evidence": "plausible",
"details": "All OG tags present"
},
"has_meta_description": {
"score": 100,
"weight": 20,
"evidence": "plausible",
"details": "Meta description: 137 chars"
},
"has_canonical_url": {
"score": 100,
"weight": 15,
"evidence": "plausible",
"details": "Canonical URL present"
},
"has_lang_attribute": {
"score": 100,
"weight": 10,
"evidence": "plausible",
"details": "lang=\"ja\""
}
}
},
"semanticHtml": {
"score": 68,
"weight": 15,
"grade": "C",
"checks": {
"proper_heading_hierarchy": {
"score": 70,
"weight": 30,
"evidence": "plausible",
"details": "no <h1>"
},
"uses_article_or_main": {
"score": 100,
"weight": 25,
"evidence": "plausible",
"details": "Has <main>"
},
"semantic_elements": {
"score": 20,
"weight": 20,
"evidence": "plausible",
"details": "12 semantic elements, 192 divs (ratio: 6%)"
},
"meaningful_alt_texts": {
"score": 87,
"weight": 15,
"evidence": "plausible",
"details": "20/23 images with meaningful alt text"
},
"low_div_nesting": {
"score": 47,
"weight": 10,
"evidence": "speculative",
"details": "Avg div depth: 10.3, max: 17"
}
}
},
"contentEfficiency": {
"score": 44,
"weight": 10,
"grade": "D",
"checks": {
"token_reduction_ratio": {
"score": 100,
"weight": 40,
"evidence": "speculative",
"details": "100% token reduction (HTML→Markdown)"
},
"content_to_noise_ratio": {
"score": 0,
"weight": 30,
"evidence": "speculative",
"details": "Content ratio: 0.1% (586 content chars / 1041388 HTML bytes)"
},
"reasonable_page_weight": {
"score": 20,
"weight": 20,
"evidence": "speculative",
"details": "HTML size: 1017KB"
},
"minimal_inline_styles": {
"score": 0,
"weight": 10,
"evidence": "speculative",
"details": "130/585 elements with inline styles (22.2%)"
}
}
}
}
},
"recommendations": [
{
"id": "add_markdown_negotiation",
"priority": "critical",
"category": "aiDiscoverability",
"titleKey": "rec.add_markdown_negotiation.title",
"descriptionKey": "rec.add_markdown_negotiation.description",
"howToKey": "rec.add_markdown_negotiation.howto",
"effort": "significant",
"estimatedImpact": 5,
"maxImpact": 5,
"evidence": "plausible",
"checkScore": 0,
"checkDetails": "No Markdown for Agents support detected"
},
{
"id": "reduce_page_size",
"priority": "high",
"category": "accessibility",
"titleKey": "rec.reduce_page_size.title",
"descriptionKey": "rec.reduce_page_size.description",
"howToKey": "rec.reduce_page_size.howto",
"effort": "moderate",
"estimatedImpact": 3.6,
"maxImpact": 6,
"evidence": "plausible",
"checkScore": 40,
"checkDetails": "Page size: 1017KB"
},
{
"id": "improve_content_ratio",
"priority": "high",
"category": "contentEfficiency",
"titleKey": "rec.improve_content_ratio.title",
"descriptionKey": "rec.improve_content_ratio.description",
"howToKey": "rec.improve_content_ratio.howto",
"effort": "moderate",
"estimatedImpact": 3,
"maxImpact": 3,
"evidence": "speculative",
"checkScore": 0,
"checkDetails": "Content ratio: 0.1% (586 content chars / 1041388 HTML bytes)"
},
{
"id": "add_content_signals",
"priority": "high",
"category": "aiDiscoverability",
"titleKey": "rec.add_content_signals.title",
"descriptionKey": "rec.add_content_signals.description",
"howToKey": "rec.add_content_signals.howto",
"effort": "quick-win",
"estimatedImpact": 2.5,
"maxImpact": 2.5,
"evidence": "speculative",
"checkScore": 0,
"checkDetails": "No Content-Signal found (robots.txt or HTTP headers)"
},
{
"id": "add_semantic_elements",
"priority": "medium",
"category": "semanticHtml",
"titleKey": "rec.add_semantic_elements.title",
"descriptionKey": "rec.add_semantic_elements.description",
"howToKey": "rec.add_semantic_elements.howto",
"effort": "moderate",
"estimatedImpact": 2.4,
"maxImpact": 3,
"evidence": "plausible",
"checkScore": 20,
"checkDetails": "12 semantic elements, 192 divs (ratio: 6%)"
},
{
"id": "reduce_page_weight",
"priority": "medium",
"category": "contentEfficiency",
"titleKey": "rec.reduce_page_weight.title",
"descriptionKey": "rec.reduce_page_weight.description",
"howToKey": "rec.reduce_page_weight.howto",
"effort": "significant",
"estimatedImpact": 1.6,
"maxImpact": 2,
"evidence": "speculative",
"checkScore": 20,
"checkDetails": "HTML size: 1017KB"
},
{
"id": "fix_heading_hierarchy",
"priority": "medium",
"category": "semanticHtml",
"titleKey": "rec.fix_heading_hierarchy.title",
"descriptionKey": "rec.fix_heading_hierarchy.description",
"howToKey": "rec.fix_heading_hierarchy.howto",
"effort": "quick-win",
"estimatedImpact": 1.3,
"maxImpact": 4.5,
"evidence": "plausible",
"checkScore": 70,
"checkDetails": "no <h1>"
},
{
"id": "remove_inline_styles",
"priority": "medium",
"category": "contentEfficiency",
"titleKey": "rec.remove_inline_styles.title",
"descriptionKey": "rec.remove_inline_styles.description",
"howToKey": "rec.remove_inline_styles.howto",
"effort": "moderate",
"estimatedImpact": 1,
"maxImpact": 1,
"evidence": "speculative",
"checkScore": 0,
"checkDetails": "130/585 elements with inline styles (22.2%)"
},
{
"id": "reduce_div_nesting",
"priority": "low",
"category": "semanticHtml",
"titleKey": "rec.reduce_div_nesting.title",
"descriptionKey": "rec.reduce_div_nesting.description",
"howToKey": "rec.reduce_div_nesting.howto",
"effort": "significant",
"estimatedImpact": 0.8,
"maxImpact": 1.5,
"evidence": "speculative",
"checkScore": 47,
"checkDetails": "Avg div depth: 10.3, max: 17"
}
],
"llmsTxtPreview": "# Ohkunoshima Rabbit I\n\n> 大久野島(Ohkunoshima)の「ウサギの楽園」と言われるイメージの裏には、過酷な現実がある。医療ケアを受けられず短命を終える野生化した家うさぎ達。その悲しいサイクルを断ち切ろうと、アニマルウェルフェアの精神を持って懸命に救護を続ける人々の取り組みに注目が集まっている。\n\n## Main\n- [rabbit island ohkunoshima bunny rescue | rabbit](https://www.ohkunoshimarabbitrescue.org/): 大久野島(Ohkunoshima)の「ウサギの楽園」と言われるイメージの裏には、過酷な現実がある。医療ケアを受けられず短命を終える野生化した家うさぎ達。その悲しいサイクルを断ち切ろうと、アニマルウェルフェアの精神を持って懸命に救護を続ける…\n- [里親、一時預かり募集](https://www.ohkunoshimarabbitrescue.org/about-4)\n- [保護ウサギ一覧](https://www.ohkunoshimarabbitrescue.org/rescued-rabbits)\n- [寄付で支援する](https://www.ohkunoshimarabbitrescue.org/donation)\n- [病気と怪我](https://www.ohkunoshimarabbitrescue.org/sick-injured-rabbits)\n- [保護うさぎのその後](https://www.ohkunoshimarabbitrescue.org/adopted-rabbits)\n\n## Blog\n- [大久野島ブログ](https://www.ohkunoshimarabbitrescue.org/blog)\n\n## Support\n- [お問い合わせ](https://www.ohkunoshimarabbitrescue.org/contact-us)\n\n",
"llmsTxtExisting": "# Ohkunoshima Rabbit I\n> このサイトは、大久野島で傷病を負ったウサギの救出活動とその報告をまとめたものです。2024年7月から2026年6月にかけて、28匹のウサギが保護され、医療ケアを受け、新しい家庭へと繋がれました。活動資金は寄付によって賄われ、医療費や諸経費に充てられています。サイトでは、個々のウサギの救出経緯や現在の様子、そして島のウサギが直面する過酷な現実と、それに対する支援の必要性が訴えられています。\n\n## Homepage link\n- [home](https://www.ohkunoshimarabbitrescue.org/)\n\n## AI エージェントによるアクセス\n\nこのサイトは Wix で作成されており、エージェント AI によるアクセス用の MCP (Model Context Protocol) に対応しています。AI エージェントは直接接続して、公開中の最新のサイトコンテンツを取得できます。スクレイピングは不要です。\n\n- [**サイト MCP エンドポイント**](https://www.ohkunoshimarabbitrescue.org/_api/mcp)\n- [**Wix MCP ドキュメンテーション**](https://dev.wix.com/docs/develop-websites/articles/get-started/about-the-wix-site-mcp)\n\n## 利用可能な MCP ツール\n\n### GetBusinessDetails\nビジネスとサイトの詳細(時間帯(タイムゾーン)、メールアドレス、電話番号、住所など)を取得します。- パラメータは必要ありません。\n\n### SearchInSite\nサイト内の情報を検索します。\n- **searchTerm** - サイト内で検索する語句。\n\n### SearchSiteApiDocs\nこのサイトにインストールされている Wix ビジネスソリューションの API ドキュメントを取得し、AI クライアントに API の使用方法を通知します。商品とサービスのクエリにこのツールを使用します(SearchInSite の代わりに)。\n- **searchTerm** - サイトの API ドキュメント内で検索する語句。\n\n### GenerateVisitorToken\n新しいサイト訪問者セッションを作成し、サイト用のサイト訪問者アクセストークンを取得します。コンテキストに訪問者トークンがまだない場合は、CallWixSiteAPI リクエストを行う前に呼び出す必要があります。\n- パラメータは必要ありません。\n\n### CallWixSiteAPI\nサイト上で API メソッドを呼び出し、サイト訪問者に代わってアクション(サイトデータのクエリ、プライベート予約を行う、購入を開始するなど)を実行します。\n- **visitorToken** - サイト訪問者アクセストークン。利用できない場合は、最初に GenerateVisitorToken を使用します。\n- **url** - 呼び出す API メソッドの絶対 URL(例:https://www.wixapis.com/...)。SearchSiteApiDocs を使用して取得します。\n- **method** - API 呼び出しに使用する HTTP メソッド。\n- **body** - 有効な JSON 文字列としてのリクエストボディ。\n\n### ReadFullDocsArticle\nWix開発者ドキュメンテーションポータルから完全な記事を読み出します。\n- **articleUrl** - Wix 開発者ドキュメンテーションポータル内の記事の URL。\n\n### ReadFullDocsMethodSchema\nWix APIメソッドの完全なスキーマを読み出します。実際のメソッドを CallWixSiteAPI で呼び出す前に、先にこのメソッドを呼び出す必要があります。\n- **articleUrl** - Wix API メソッドのリファレンス記事の URL。\n\n## AI + MCPでサイト訪問者ができること\n\n- ビジネスの詳細(連絡先情報、ビジネス拠点、営業時間)を取得する\n- 提供されている商品 / サービスを見つける\n- サービスや予約を行う\n- 購入を開始し、死払い手続きを完了するためにサイトに誘導される\n- サイトを閲覧することなく質問し、関連する回答を得る\n\n## メモ\n\n- MCP エンドポイントへの接続に認証は不要です\n- サイトでアクセス可能な公開情報のみ利用できます\n- コンテンツは常にリアルタイムで最新です\n- ツール更新を受け取るには、ツール更新通知を受領した際に tools/list の呼び出しを実装してください。",
"emergingProtocols": {
"oauthProtectedResource": {
"exists": false,
"url": "https://www.ohkunoshimarabbitrescue.org/.well-known/oauth-protected-resource"
},
"oauthDiscovery": {
"exists": false,
"url": "https://www.ohkunoshimarabbitrescue.org/.well-known/oauth-authorization-server"
},
"mcpServerCard": {
"exists": false,
"url": "https://www.ohkunoshimarabbitrescue.org/.well-known/mcp/server-card.json",
"draft": true
},
"a2aAgentCard": {
"exists": false,
"url": "https://www.ohkunoshimarabbitrescue.org/.well-known/agent-card.json"
},
"apiCatalog": {
"exists": false,
"url": "https://www.ohkunoshimarabbitrescue.org/.well-known/api-catalog"
},
"agentSkills": {
"exists": false,
"url": "https://www.ohkunoshimarabbitrescue.org/.well-known/agent-skills/index.json",
"draft": true
},
"count": 0,
"total": 6
},
"botAccess": {
"probed": true,
"bot": "OAI-SearchBot",
"controlStatus": 200,
"botStatus": 200,
"discriminates": false,
"refusedAsBot": false,
"edge": null,
"verifiable": false,
"detail": "This origin answers OAI-SearchBot exactly as it answers any other client (200). No edge-level filtering of AI crawlers observed."
},
"snippets": [
{
"id": "fix_heading_hierarchy",
"title": "Fix heading hierarchy",
"description": "Your page has no <h1>. Every page needs exactly one <h1> as the main heading. Add it inside your <main> or <article>.",
"language": "html",
"code": "<h1>rabbit island ohkunoshima bunny rescue | rabbit</h1>",
"filename": "<main> or <article>"
},
{
"id": "add_content_signals",
"title": "Add Content-Signal directives",
"description": "Content-Signal tells AI agents how they may use your content. The canonical location is robots.txt, but you can also expose it as an HTTP header from any stack.",
"language": "txt",
"code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no",
"filename": "/robots.txt",
"stacks": [
{
"id": "robots",
"label": "robots.txt",
"language": "txt",
"filename": "/robots.txt",
"code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no"
},
{
"id": "nginx",
"label": "Nginx",
"language": "nginx",
"filename": "server block",
"code": "# Inside your server { } block:\nadd_header Content-Signal \"search=yes, ai-input=yes, ai-train=no\" always;"
},
{
"id": "apache",
"label": "Apache",
"language": "apache",
"filename": ".htaccess",
"code": "# In .htaccess (or VirtualHost):\nHeader set Content-Signal \"search=yes, ai-input=yes, ai-train=no\""
},
{
"id": "wordpress",
"label": "WordPress",
"language": "php",
"filename": "functions.php",
"code": "<?php\n// In your theme's functions.php or a small mu-plugin\nadd_action('send_headers', function () {\n header('Content-Signal: search=yes, ai-input=yes, ai-train=no');\n});\n\n// Optional: also append the directive to the dynamic robots.txt\nadd_filter('robots_txt', function ($output) {\n return $output . \"\\nContent-Signal: search=yes, ai-input=yes, ai-train=no\\n\";\n}, 10, 1);"
},
{
"id": "nextjs",
"label": "Next.js",
"language": "typescript",
"filename": "middleware.ts",
"code": "// middleware.ts (Next.js 13+ App Router or Pages Router)\nimport { NextResponse } from 'next/server';\nexport function middleware() {\n const res = NextResponse.next();\n res.headers.set(\n 'Content-Signal',\n 'search=yes, ai-input=yes, ai-train=no'\n );\n return res;\n}\nexport const config = { matcher: '/:path*' };"
},
{
"id": "cloudflare",
"label": "Cloudflare Workers",
"language": "javascript",
"filename": "worker.js",
"code": "// Cloudflare Worker that proxies your origin and adds the header\nexport default {\n async fetch(request, env, ctx) {\n const res = await fetch(request);\n const newRes = new Response(res.body, res);\n newRes.headers.set(\n 'Content-Signal',\n 'search=yes, ai-input=yes, ai-train=no'\n );\n return newRes;\n },\n};"
},
{
"id": "express",
"label": "Express / Fastify",
"language": "javascript",
"filename": "server.js",
"code": "// Express\napp.use((req, res, next) => {\n res.setHeader('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n next();\n});\n\n// Fastify\nfastify.addHook('onSend', (request, reply, payload, done) => {\n reply.header('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n done();\n});"
}
]
},
{
"id": "add_markdown_negotiation",
"title": "Support Markdown for Agents",
"description": "Let AI agents request a clean Markdown version of any page via content negotiation, .md alternate URLs, link tags or Link headers.",
"language": "html",
"code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">",
"filename": "<head>",
"stacks": [
{
"id": "html",
"label": "HTML <head>",
"language": "html",
"filename": "<head>",
"code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
},
{
"id": "express",
"label": "Express",
"language": "javascript",
"filename": "server.js",
"code": "// Mechanisms 1 + 4: content negotiation + Link header\napp.get('/page', (req, res) => {\n res.setHeader('Vary', 'Accept');\n res.setHeader('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n res.type('text/markdown; charset=utf-8');\n return res.send(renderMarkdown('page'));\n }\n res.render('page');\n});"
},
{
"id": "fastify",
"label": "Fastify",
"language": "javascript",
"filename": "server.js",
"code": "// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n reply.header('Vary', 'Accept');\n reply.header('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n }\n return reply.view('/page.ejs');\n});"
},
{
"id": "nextjs",
"label": "Next.js",
"language": "typescript",
"filename": "app/page/route.ts",
"code": "// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n const accept = req.headers.get('accept') || '';\n if (accept.includes('text/markdown')) {\n return new Response(await renderMarkdown('page'), {\n headers: {\n 'Content-Type': 'text/markdown; charset=utf-8',\n 'Vary': 'Accept',\n },\n });\n }\n // Fall through to the page component\n return new Response(null, { status: 404 });\n}"
},
{
"id": "wordpress",
"label": "WordPress",
"language": "php",
"filename": "functions.php",
"code": "<?php\n// Mechanism 1: respond to Accept: text/markdown on the same URL\nadd_action('template_redirect', function () {\n if (!is_singular()) return;\n $accept = $_SERVER['HTTP_ACCEPT'] ?? '';\n if (strpos($accept, 'text/markdown') === false) return;\n header('Content-Type: text/markdown; charset=utf-8');\n header('Vary: Accept');\n $post = get_queried_object();\n echo \"# \" . get_the_title($post) . \"\\n\\n\";\n echo wp_strip_all_tags(apply_filters('the_content', $post->post_content));\n exit;\n});"
},
{
"id": "static",
"label": "Hugo / Jekyll / Astro",
"language": "txt",
"filename": "static/page.md",
"code": "# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in <head>:\n# <link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
}
]
}
]
}
Use our API to get this programmatically (coming soon)
This JSON is for internal use — unlike the Markdown and llms.txt files, it's not meant to be uploaded to your site. Save it as a baseline to track your score over time, share it with your dev team, or integrate it into your CI/CD pipeline.
Share your results
Or ask an AI to help you fix it
Want a second opinion?
Cloudflare runs a free scanner too, and it asks a different question. It scores what your site publishes for agents to call — MCP server cards, Agent Skills, API catalogs, DNS records. We score whether an agent can reach, read and understand your content. A site can do well on one and poorly on the other, so expect two different numbers: they are answers to two different questions, and both are worth knowing.
Scan www.ohkunoshimarabbitrescue.org with CloudflareEmbed your badge
Add this badge to your site. It updates automatically as your AI-readiness score changes.
<script src="https://agentready.md/badge.js" data-id="736cdfed-013e-4363-8944-9d996bb6db6d" data-domain="www.ohkunoshimarabbitrescue.org"></script>
[](https://agentready.md/r/ohkunoshimarabbitrescue.org)
Coming soon: Full Domain Analysis
Crawl your entire domain, generate llms.txt, and monitor your AI-readiness score over time. Join the waitlist to be notified.
You're on the list! We'll notify you when it launches.