ソース
Docsbookソースとは、このプロジェクトのアシスタントとエージェントが取得を許可されているリポジトリ、ウェブサイト、または単一のページです。ソースを接続すると、「ドキュメントを更新する」や「このページはまだ正しいか」といった問いに、記憶ではなく読み取りから着手できるようになります。
プロジェクトの管理パネルで、MCPとエージェントのすぐ下にあるソースセクションを開きます。
得られるもの#
- アシスタントがアクセスできるアドレス。 製品の価格を尋ねると、トレーニングで取り込んだ情報から回答するのではなく、この質問のために価格ページを取得します。
- 自分のツールで同じ登録情報を利用できます。 機能を構成する2つのツール、
list_sourcesとread_sourceは、プロジェクトの MCPエンドポイント 経由で提供されます。そのため、ここで接続したソースは Claude Code や Cursor でも同じ意味を持ちます。 - それぞれに添えられるあなたの一文。 あなたが書いたメモ(「リファレンスページで説明されているAPIサーバー」)は、そのソースを後から読むすべてのものによって指示として解釈されます。
- 明確に失敗する読み取り。 到達できないリポジトリは、空のリポジトリのように見える空のリストではなく、ヒント付きのエラーとして返されます。
- プランによる制限はありません。 ソースは意図的にすべてのプランで利用できます。ここでペイウォールを設けることは、真実を伝える能力を販売することになるからです。
ソースとして何を接続できますか?#
内部的には、ウェブサイト、ページ、リポジトリ、リポジトリフォルダーの4種類が存在します。表では、それらを5つのグループ、あなたのプロジェクト、ドキュメントプラットフォーム、ナレッジベース、コードとAPI、コミュニティに分け、所有者が実際に尋ねる名前の付いた対象のカタログとして表示しています。誰が構築したものであっても、公開されたドキュメントサイトはウェブサイトです。そのため、Mintlify、GitBook、ReadMe、Docusaurus、Read the Docs、MkDocs、Nextra、VitePress、Starlight、Redocly、Stoplight、Scalarなど、ベンダーごとに個別の対応を構築する必要はありません。
この表には、Docsbookが把握しているすべての種類が、接続済みかどうかにかかわらず一覧表示されます。セクションに分けるのではなく、フィルターメニューで絞り込めます。各接続はそれぞれ1行で表示されるため、接続済みのウェブサイトが2つあれば2行になります。
グレー表示には2つの異なる意味があり、どちらなのかは行内に示されます。
- 未接続 — その行には接続が表示されます。読み取りは現在すでに可能で、他のすべての
url行が使用するものと同じ公開フェッチを通じて行われます。 - まだ利用できません — その行にはボタンがなく、必要となるものが表示されます。たとえば、一度だけ許可する認証(Notionワークスペース、Confluence、Coda)、ボットトークン(Telegram、Discord、Slack)、またはDocsbookがまだ読み取れないリポジトリホスト用のリーダー(GitLab、Bitbucket)です。回避策がある場合は、その行に記載されます。たとえば、公開ヘルプセンターは現在でもウェブサイトとして接続できます。
ボタンのない行は意図的なものです。read_sourceが現状のまま実際に読み取れる場合にのみ、行に接続を表示できます。接続できない接続機能があると、画面上の他のすべての行の信頼性まで損なわれるためです。
ソースを接続するにはどうすればよいですか?#
行の接続を押すか、テーブルの上にある新しいソースを押します。どちらの場合も入力欄は1つで、ソースの種類を決めるのは、押した行ではなくアドレスです。クリックした行によってプレースホルダーと見出しだけが設定され、両者が一致しない場合は、確定する前にダイアログでそのことが示されます。
| 貼り付けるもの | 変換後の種類 | 読み取り時に返されるもの |
|---|---|---|
github.com/acme/api |
リポジトリ | 読み取り可能なファイル、README、ドキュメントを優先し、名前で指定したパスも対象 |
github.com/acme/api/tree/main/docs |
リポジトリフォルダー | そのサブツリーのみ — その中にあるコミットのみ |
acme.com または acme.com/docs |
ウェブサイト | 独自の sitemap.xml から見つかった複数のページ |
acme.com/pricing.html |
ページ | その1ページ全体 |
acme.mintlify.app、acme.gitbook.io、acme.notion.site… |
そのベンダーの行に登録 | ウェブサイトと同じですが、探しやすい場所に登録 |
パス内のファイル拡張子によって、ページとウェブサイトが区別されます。issue やプルリクエストから貼り付けたリンクが接続するのはリポジトリであり、issue ではありません — /issues をサブツリーとして保存すると、読み取り結果が永遠に空になるソースが作成されます。トラッキングパラメーター(utm_*、fbclid、gclid、ref、si…)は削除されるため、ツイートから貼り付けたページとアドレスバーから貼り付けたページは、2つのソースではなく1つのソースになります。ホスト名だけの場合は https:// が設定されます。意図的に入力した http:// はそのまま残されます。TLS に対応していないサイトでは、暗黙的にアップグレードすると404になるソースが作成され、行からその理由を確認できなくなるためです。
プライベートリポジトリには、貼り付けではなく選択機能を使用してください。 GitHub は「プライベート」と「存在しない」の両方に同じ404を返すため、アドレスを貼り付けただけでは、Docsbook はどちらなのか判断できません。また、プライベートアドレスを手入力すると公開リポジトリとして接続され、何も読み取れません。ダイアログでGitHub リポジトリから選択を使用してください。選択機能はリポジトリの状態を把握しており、プライベートとしてマークされたソースには、接続に使用したアカウントの GitHub 認証情報が保存時に暗号化されて保存されます。そのため、背後にブラウザーセッションがないスケジュール実行でもリポジトリを読み取れます。この認証情報がサーバーの外部に出ることはありません — API が返すのは has_token であり、トークンそのものではありません。また、GitHub がすでに拒否したトークンは、黙って再試行されるのではなく、「このリポジトリを再接続してください」と報告されます。
追加しなくても2つのエントリが表示されますが、どちらもここでは名前の変更、停止、削除はできません。
- このサイトのリポジトリ — ドキュメントの構築元であるリポジトリです。すでに読み取りが行われているため、これを「接続」させると、未接続であるかのように受け取られてしまいます。
- ブランディングから — ワークスペースにサイトソース URL が設定されている場合に表示されます。この URL は引き続きブランディングカードで管理されます。
すでに接続したアドレスを再度貼り付けると、失敗したり重複したりせず、その行が更新されます。また、メモなしで再度貼り付けても、最初に入力したメモが消えることはありません。
接続済みソースを読み取るものは?#
3つだけです。それ以外にはありません。接続済みソースはタイマーでクロールされず、公開ドキュメントに追加されず、ドキュメントサイト上で読者が利用するチャットから検索されることもありません。このチャットが回答するのは、自分のページだけです(その処理パイプラインが回答品質です)。
管理パネルのアシスタント。 list_sources と read_source は検索の背後ではなく、基本ツールボックスに組み込まれています。発見するために追加のラウンドトリップが必要な機能については、モデルが代わりに記憶から回答してしまうためです。まさにそれを防ぐために、これらのソースが存在します。
独自の MCP エージェント。 プロジェクトの MCP エンドポイント経由で同じ2つのツールを利用できるほか、ブラウザを開かずにセットアップするための connect_source と configure_source も利用できます。この2つには読み書き可能な MCP トークンが必要です。
バックグラウンド実行。 スケジュール済みプロンプトとエージェントの実行もこれらを読み取ります。リンクを貼り付ける人がいないため、ここで最も重要になります。
自動実行のすべてがソースに到達するわけではないため、パネルではすべてが到達できるかのように示すのではなく、どの実行が到達できるかを示します。実行が一覧表示される場所では、チップは次の3つの状態で表示されます。
- 点灯 — この実行はソースを取得します:サイトのページやリポジトリのファイルです。
- 消灯 — この実行はソースが接続されていることを認識し、その名前を示しますが、プロパティの外部に出ることを宣言していないため、取得はしません。代わりにアシスタントに尋ねてください。アシスタントにはそのような制限がありません。
- 何もなし — この実行はどのソースにも到達しません。設定の書き込みがリポジトリを読み取る必要はありませんし、そこにチップがあれば、そうであるかのように示してしまいます。
ソースはどのように取得され、返される内容はどの程度新しいものですか?#
事前取得もミラーリングも行われません。ツールが要求したときに、実際のアドレスに対して読み取りが行われます。その際の制限事項は次のとおりです。
| リポジトリ | Webサイト / ページ | |
|---|---|---|
| パスを指定しない読み取り | 読み取り可能なファイル一覧。README → docs/、guides/、specs/ 配下の本文 → その他の本文 → ルートレベルの設定 → その他すべての順にランク付けされた、先頭300パス |
sitemap.xml から検出された最大10ページ |
| パスを指定した読み取り | デフォルトブランチのそのファイル | ソース独自のURLを基準に解決された、その1ページ |
| サイズ上限 | 1ファイルあたり25,000文字。切り捨てが行われた場合は報告 | 単一ページでは25,000文字、複数ページの読み取りでは1ページあたり8,000文字 |
| その他の利用可能な情報 | 直近10件のコミット — sha、件名、作成者、日付、およびリポジトリのデフォルトブランチ。リポジトリフォルダーの場合はパスを対象に限定 | — |
| 鮮度 | デフォルトブランチは1時間、ファイルツリーは5分間キャッシュ。ファイル内容とコミットはキャッシュなしで取得 | 呼び出しごとにライブで取得 |
| タイムアウト | GitHub独自のもの | ページあたり15s、サイトマップでは8s |
コード、ロックファイル、ビルド出力は一覧(node_modules、dist、build、.next、coverageなど)から除外されますが、読み取りからは除外されません。パスを指定した read_source は任意のファイルを取得し、フィルターは要求されていないファイルのうち、名前を一覧に表示するものだけを決定します。
サイトマップの範囲指定は文字列のプレフィックスではなく、パスの境界に基づいて一致します。Connect acme.com/docs および /docs-for-fintech はその範囲外にとどまります。サイトマップに何も掲載されていないセクションは、エントリーページ単独にフォールバックします — サイト全体にフォールバックすることはありません — また、結果には次の3つのどれが発生したかが示されます。ページがサイトマップから取得された、サイトにはサイトマップがあるが対象セクションの下には何もない、またはサイトマップ自体が存在しない、のいずれかです。薄い読み取りが薄いサイトとして読み取られることは決してありません。
すべての外部取得は、DocsbookのWeb読み取りの他の部分で使用されるものと同じガードを通過します。robots.txt が尊重され、リダイレクトは最大5ホップまで各段階でアドレスを再検証しながら手動で追跡されます。また、プライベート範囲およびリンクローカル範囲は拒否されるため、公開URLがクラウドのメタデータエンドポイントへ転送されることはありません。JavaScriptでコンテンツをレンダリングするページは、空のページとしてではなく、読み取り可能なテキストが見つからなかったことを示す注記付きで返されます。
オンライン、一時停止、および緑色のドットの意味#
接続されているすべてのソースには、緑色のドットとオンラインという語が表示されます。一時停止中のソースには、灰色のドットと一時停止が表示されます。
オンラインとは、ソースが接続されており、エージェントが読み取れる状態を意味します。これはヘルスチェックではありません。ホストに ping を送信することも、リポジトリがまだ存在するかを確認することもありません。信頼できるシグナルは最終使用日時列です。この列は、ツールが実際にソースの取得に成功した場合にのみ記録されます。取得に失敗した場合は記録されません。
切断を押すと行を残したまま、そのソースを読み取るすべての処理が停止します。もう一度押すと(接続と表示されます)、再開できます。削除すると接続が完全に削除され、それに紐付けられた GitHub の認証も削除されます。開くとアドレスにアクセスします。ソースの読み取りを停止する2つの方法が異なるのには意図があります。「今はこれを読み取らない」とした場合に、後でアドレスを再入力せずに済むようにするためです。
ソースを読み取れない場合に何が起こるか#
すべての失敗には次のステップが示され、空の結果になるものはありません。
| 状況 | ツールが返す内容 |
|---|---|
| ソースが一時停止されている | ソース名を示し、このワークスペースの Sources タブでオフになっていると伝える |
| リポジトリツリーを読み込めない | 「リポジトリは非公開、名前変更済み、または削除済みの可能性があります。そこに何が含まれているかを記憶だけで答えるのではなく、そのことを明確に伝えます。」 |
| ファイルパスが間違っている | まずリポジトリの一覧を表示するよう提案する — ファイルが別のフォルダーにある可能性があるため |
| 非公開リポジトリに保存されていた認証が機能しなくなった | 「GitHub は、そのために保存されている認証では拒否しました。Sources からリポジトリを再接続してください。」 — 空のコミット一覧を返すことは決してない |
サイトがダウンしている、サーバー側のフェッチをブロックしている、または robots.txt でパスを許可していない |
どれに該当するかを伝え、記憶だけでサイトについて説明するのではなく、そのことを報告するよう伝える |
| 何も接続されていない | NO_SOURCES、「存在しないものを作り出さないでください」と伝える |
最後の行が、この設計全体の要点です。ソースによって防がれる失敗はエラーメッセージではなく、誰も読んでいないリポジトリについて自信満々に語る段落なのです。
ソースを読むにはいくらかかりますか?#
ソース自体への接続や保持は無料です。4つのツールのうち2つはMCP経由で呼び出す際に従量課金され、実際に提供にかかるコストに基づいて料金が設定されています:
list_sourcesはDocsbookがすでに保存している行を読み取り、通常の読み取りとして課金されます。read_sourceはDocsbookネットワークの外部にあるGitHubまたは誰かのウェブサイトへアクセスします。また、ウェブサイトソースでは1回の呼び出しで複数のページを取得するため、fetch_urlと同じ種類の外部呼び出しとして課金されます。
どちらも、その呼び出しの対象となるプロジェクトの残高から差し引かれます。金額については料金ページをご覧ください。
これが正しい方法である理由(根拠)#
| Docsbookにおけるルール | 効果がある理由 | 出典 |
|---|---|---|
| モデルに思い出させようとするのではなく、ソースを取得する | 現時点の世界知識に関する質問向けに構築されたベンチマークでは、「モデルの規模にかかわらず、すべてのモデルが、変化の速い知識や誤った前提を含む質問に苦戦する」 — あなたの価格、制限、エンドポイントは、まさにこの種類の事実に該当する | Vu et al., 2023 — FreshLLMs(ACL 2024のFindings) |
| モデルにかかわらず、アシスタント自身の知識は古いものとして扱う | Docsbookの管理アシスタントの基盤モデルは、「ナレッジカットオフ」を「2026年2月」と公開している。あなたの製品がそのプロバイダーのカットオフ後に変更した内容は、何かが取得しない限り、そのモデルには存在しない | OpenRouter — gpt-5.6-lunaモデルページ(ベンダー報告) |
| パスを推測するのではなく、サイト独自のサイトマップからページを見つける | <loc> には「ページのURL」が含まれており、サイトが「ページに関する詳細を検索エンジンに提供」できるようにするためのプロトコルである — これは「自分にはどのページがあるのか」という問いに対する、サイト自身の答えである |
sitemaps.orgプロトコル(仕様) |
すべてのソース取得で robots.txt を尊重する |
RFC 9309は、「サービス所有者が、自身のサービスによって提供されるコンテンツへのアクセス方法を、クローラーと呼ばれる自動クライアントに対して制御できる」方法を標準化している | RFC 9309(IETF標準) |
| 取得したソースには、従うべき指示ではなく、引用するデータとしてラベルを付ける | 「間接的なプロンプトインジェクションは、LLMがウェブサイトやファイルなどの外部ソースから入力を受け入れたときに発生する」 — モデルが読むコンテンツには、モデルを標的とした指示が含まれている可能性がある | OWASP GenAI — LLM01:2025 プロンプトインジェクション(業界標準) |
| リダイレクトの各段階でアドレスを再検証し、リンクローカル範囲を拒否する | クラウドインスタンスのメタデータはリンクローカルアドレスで提供される — AWSは http://169.254.169.254/latest/meta-data/ を「インスタンスからのみ有効」と記載している — そのため、リンクローカルアドレスに到達するリダイレクトによって、ページ取得が認証情報の読み取りに変わってしまう |
AWS — EC2インスタンスのインスタンスメタデータへのアクセス(ベンダードキュメント) |
制限#
- ソースはインデックス化されず、必要に応じて読み込まれます。 バックグラウンドクロールも保存されたコピーもなく、呼び出し間での最新性も保証されません。ツールが見た内容は、その時点でアドレスが返した内容です。
- 緑色のドットは到達可能性のチェックではありません。 前述のとおりです。今朝削除されたリポジトリでも、何かが読み込もうとするまではオンラインと表示されます。
- 非公開リポジトリを手入力すると、公開リポジトリとして接続され、何も読み込まれません。 Docsbookは、アドレスだけでは非公開リポジトリと存在しないリポジトリを区別できません。区別できるリポジトリ選択ツールを使用してください。
- リポジトリとして読み込まれるのはGitHubリポジトリのみです。 GitLabとBitbucketの行は存在しますが、接続機能はありません。いずれかの公開プロジェクトページはウェブサイトとして接続できますが、読み込まれるのはツリーではなく、レンダリングされたページです。
- ウェブサイトソースはクローラーではありません。 1回の呼び出しで最大10ページまで、サイトマップに記載されたページのみを対象とし、再帰的な探索やリンクのたどりは行いません。大規模なドキュメントサイトは、リポジトリとして接続する方が適しています。
- JavaScriptでレンダリングされるページは空の状態で返されます。 フェッチャーはスクリプトを実行しません。結果にはそのことが示されるため、コンテンツが存在しないとは報告されませんが、それでもコンテンツは取得できません。
- メモは指示であり、内容を正確に保つ責任はあなたにあります。 ソースを読み込むものはすべて、あなたのメモを指針として読み取ります。古いメモ(「v1 API、非推奨」)でも、正しいメモと同じようにエージェントの判断を誘導します。
- ソースが誤った回答をどの程度減らすかについて、測定結果は公開していません。 仕組みについては上記のとおりで、その裏付けとなる証拠は外部にあります。顧客のコーパスを対象にした導入前後の数値をDocsbookが測定したことはありません。「ソースによってドキュメントに関する精度が向上する」という見解は、十分に裏付けられた期待として扱ってください。これは、私たちが測定した数値ではありません。
関連#
- AIチャット — ドキュメントサイト上のアシスタントと、そこから回答できる内容。
- 回答品質 — 検索とグラウンディングのパイプラインの全体像。
- チャットフック — モデルが読めない事実をモデルに渡すもう一つの方法。
- MCPサーバー — 独自のエージェント向けに同じツールを提供。
- MCPツールリファレンス —
list_sources、read_source、connect_source、configure_sourceの完全版。 - Source of Truth — 似た名前を持つ別の機能。エージェントのマシン上で構築される、自分自身のページのローカルグラフ。
- 料金 — ソースの読み取りが利用するもの。