エージェントサポート

エージェントが OpenTelemetry ウェブサイトのコンテンツを利用しやすくするための設計メモ。

より広範なエージェントフレンドリーなコンテンツ配信機能の設計メモです。

Markdown コンテンツネゴシエーション

リクエストが明示的に text/markdown を要求または優先する場合、Netlify Edge Function を使用して Hugo のビルド済み index.md 出力を配信します。

根拠

  • すべての HTML ページに Markdown 版が必要なわけではありません。
  • HTTP ネゴシエーションは配信レイヤーに属します。
  • Markdown の成果物が存在しない場合、この関数は通常の HTML にフォールバックできます。

ルール

  • GETHEAD のみが対象です。
  • .md やその他のページ以外のリソースへのリクエストはネゴシエーションをバイパスします。
  • ページ的なリクエストには以下が含まれます:
    • スラッシュで終わるパス
    • 拡張子なしのパス
    • .../index.html パス
  • text/markdownq がゼロより大きい値で受け入れられ、かつその qtext/html / application/xhtml+xml の最も高い q 以上の場合に Markdown が配信されます(同じ重みの場合は Markdown が選択されます)。
  • */* のようなワイルドカードは意図的に無視されます。 明示的な markdown/html メディアタイプのみが q 値に寄与します。 これは保守的な選択であり、後で見直される可能性があります。
  • Markdown が見つからない場合は通常の HTML レスポンスにフォールバックします。
  • ネゴシエーションされたレスポンスは Vary: Accept を設定します。
  • /search/ は HTML のみを出力するため、常に HTML にフォールバックします。

パスマッピングに関する注意事項:

  • /docs/ のようなきれいな URL は、Hugo の /docs/index.md 出力にマッピングされます。
  • index.html は隣接する .md ファイルにマッピングされます(例: /docs/index.html/docs/index.md)。
  • その他の .html パスは Netlify の通常のリダイレクトとルーティングに委ねられます。 たとえば、Netlify は /docs.html/docs/ にリダイレクトします。
  • config/_default/hugo.yaml がこのサイトの Markdown 出力を有効にしています。
  • content/en/search.mdoutputs: [HTML] で検索ページを除外しています。
  • netlify.toml が他のルートハンドリングより前に Edge Function を配置します。
  • netlify/edge-functions/markdown-negotiation/index.ts がネゴシエーションを実装しています。 netlify/edge-functions/markdown-negotiation.ts はそれを再エクスポートする Netlify のエントリスタブです。