エージェントフレンドリーなサイト
原則: すべての HTML ページには内容が同一の Markdown 版が存在し、エージェントはそれを見つけることができます。
python3 scripts/check_seo_agents.py で以下すべてを検証します。
1. 各ページの .md 版
| HTML ページ | ファイル | Markdown の URL |
|---|---|---|
site/index.html → / | site/index.md | /index.md |
site/tutos/git-rebase/index.html → /tutos/git-rebase/ | site/tutos/git-rebase/index.md | /tutos/git-rebase/index.md |
例外: 404.html (ペアなし)
ページを作成または変更するときは、同じコミットで両方のファイルを変更します。.md は要約ではなく、ページの有用なコンテンツ (テキスト、手順、コード、リンク) を装飾なしで全て含みます。
.md の形式:
---
title: Git rebase インタラクティブ 3分でマスター
description: git rebase -i でコミットをきれいに書き換え、壊さない方法。
url: https://bytetuto.com/tutos/git-rebase/
lang: ja
updated: 2026-10-16
---
# Git rebase インタラクティブ 3分でマスター
> 1-2文で直接回答: このページで学べること。
## 手順
1. …
```bash
git rebase -i HEAD~3
```
## 関連項目
- [コミットを取り消す](https://bytetuto.com/tutos/annuler-commit/index.md)
動画: https://www.youtube.com/watch?v=…
ルール:
- フロントマターは YAML 形式で
title、description、url(= HTML の canonical)、lang、updated(ページと同じ値) を含む。 # タイトルは<h1>と一対一。##/###の階層は HTML と同一。- リンクは 絶対パス (
https://bytetuto.com/…) で、対象に.mdがある場合は.mdへのリンク。 - コードは言語指定付きの ``` ブロック。生の HTML、装飾絵文字、テキストなし画像 (
は可) は禁止。 - HTML 側:
<head>内に<link rel="alternate" type="text/markdown" href="…/index.md">を追加。
2. /llms.txt — エージェント向け目次
site/llms.txt、llmstxt.org 形式: # byteTuto、サイトを要約する引用 >、次に ## セクションと .md へのリンクリスト:
## チュートリアル
- [Git rebase インタラクティブ](https://bytetuto.com/tutos/git-rebase/index.md): コミットをきれいに書き換える。
ページ作成・削除のたびに行を追加・削除する。セカンダリな内容は ## Optional セクションへ。
チュートリアルが約10個を超えたら、site/llms-full.txt (全 .md を連結したもの) も生成する。
3. サーバー設定 (nginx/ で既に設定済み)
.mdはtext/markdown; charset=utf-8で提供し、X-Robots-Tag: noindexを付ける (Google に重複コンテンツと判定されないように — HTML 版のみがインデックスされる)。- コンテンツネゴシエーション:
Accept: text/markdownヘッダーを持つリクエストが/や/tutos/x/に対して行われた場合、直接.mdを返す (HTML にはVary: Acceptヘッダーを付与)。 - テスト:
curl -s http://localhost:8088/index.md | head curl -s -H 'Accept: text/markdown' http://localhost:8088/ | head curl -sI http://localhost:8088/index.md | grep -i content-type # text/markdown
4. エージェントがブラウジング可能な HTML
- コンテンツは初期 HTML に含まれていること (JS でのみレンダリングされない)。
- セマンティックタグ、単一の
<main>、階層化された見出し、<ol>/<ul>リスト、<pre><code class="language-…">でのコード。 - ボタンは
<button>、リンクは<a href>。各コントロールにはアクセシブルな名前 (表示テキストまたはaria-label) があること。 - フォーム (ニュースレター): 各フィールドに
<label for>、明示的なnameとautocomplete、結果メッセージは DOM 内に配置。 - 必須の操作の背後にコンテンツを隠さない (非表示タブ: コンテンツは DOM 内に維持)。
- 最新の JSON-LD 構造化データ (詳細は
site-seoを参照): これらもエージェントが利用する。
5. AI クローラー (robots.txt)
プロジェクトの選択: AI クローラーを許可する (ChatGPT、Claude、Perplexity、Google AI での可視性を確保)。明示的な決定なしに、GPTBot、ClaudeBot、PerplexityBot、Google-Extended などに対する Disallow を追加しない。ファイル末尾に Sitemap: を維持する。