Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Web サイトへ検索を追加する

最終更新 Markdown で表示Agent セットアップ

このチュートリアルでは、Web サイトをインデックスする AI Search インスタンスを作成し、サイトのフロントエンドへ検索バー、チャットバブル、検索モーダルを追加します。UI スニペット を使います。これはインスタンスの公開エンドポイントに接続する、用意済みの Web コンポーネントです。フロントエンドに数行足すだけで検索を追加できます。

作成するもの: Web サイトをインデックスする AI Search インスタンスと、そのコンテンツを検索する検索バー、チャットバブル、検索モーダルです。サイトのフロントエンドへ追加します。

サイト上に開いた AI Search モーダル。検索入力、キーボード操作の案内、「Powered by Cloudflare AI Search」ラベルが表示されています。

前提条件

  1. Cloudflare アカウント に登録します。
  2. Node.js をインストールします。

Node.js のバージョンマネージャー

権限の問題を避け、Node.js のバージョンを切り替えられるよう、Voltanvm などの Node バージョンマネージャーを使います。このガイドの後半で説明する Wrangler には、Node バージョン 16.17.0 以降が必要です。

このチュートリアルは、既存の React アプリへ検索を追加します。新規プロジェクトから始める場合は、先に React フレームワークガイド で土台を作り、続けて次の手順に進みます。スニペットはフレームワークに依存しない Web コンポーネントです。ほかのフレームワークやプレーン HTML でも同じ手順が使えます。詳細は UI スニペット を参照してください。

1. AI Search インスタンスを作成する

Wrangler CLI でインスタンスを作成します。所有する Web サイトをインデックスするには、データソースとして接続します。AI Search が自動でクロールしてインデックスします。

npx wrangler ai-search create my-search --type web-crawler --source <YOUR_DOMAIN>

<YOUR_DOMAIN> は、Cloudflare アカウントへオンボード済みのドメイン に置き換えます。データソースなしでインスタンスを作り、自分でファイルをアップロードする場合は npx wrangler ai-search create my-search --type builtin を実行し、ダッシュボード からコンテンツを追加します。

インデックスの進捗を確認します。

npx wrangler ai-search stats my-search

インデックスが完了したら、コマンドラインからクエリを試せます。

npx wrangler ai-search search my-search --query 'What is this site about?'

2. 公開エンドポイントを有効にする

UI スニペットは、インスタンスの公開エンドポイント経由で接続します。

  1. Cloudflare ダッシュボードで AI Search を開きます。

    AI Search を開く ↗
  2. my-search インスタンスを選びます。

  3. Settings > Public Endpoint を開きます。

  4. Enable Public Endpoint をオンにします。

  5. URL https://<PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com/ から公開エンドポイント ID をコピーします。次の手順で使います。

3. スニペットライブラリをインストールする

Web サイトのプロジェクトで、AI Search UI スニペットライブラリ をインストールします。

npm i @cloudflare/ai-search-snippet

4. 検索コンポーネントを追加する

いずれかのコンポーネントでスニペットライブラリをインポートし、検索を出したい場所にタグを置きます。パッケージを 1 回インポートすると、コンポーネントがブラウザに登録されます。次の例では、アプリのルートコンポーネントへ検索バー、フローティングのチャットバブル、Cmd/Ctrl+K で開く検索モーダルを追加します。<PUBLIC_ENDPOINT_ID> は、手順 2 の公開エンドポイント ID に置き換えます。

src/App.tsxtsx
import type { CSSProperties } from "react";
import "@cloudflare/ai-search-snippet";

export default function App() {
	return (
		<div>
			<search-bar-snippet
				api-url="https://<PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com/"
				placeholder="Search..."
				max-results={50}
				max-render-results={10}
				show-url="true"
				show-date="true"
			/>
			<chat-bubble-snippet
				api-url="https://<PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com/"
				style={
					{
						"--search-snippet-primary-color": "#F6821F",
					} as CSSProperties
				}
			/>
			<search-modal-snippet
				api-url="https://<PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com/"
				placeholder="Search documentation..."
				shortcut="k"
				show-url="true"
				show-date="true"
			/>
		</div>
	);
}

カスタム要素の TypeScript 宣言を追加する

スニペットパッケージはクラスの型定義を同梱します。ただし TypeScript に、<search-bar-snippet> などのタグが有効な JSX 要素であることは伝わりません。Vite の開発サーバーは型チェックをしないため、この手順がなくてもアプリは動きます。宣言ファイルを追加すると、.tsx の型チェックとエディターがカスタムタグをエラーにしません。

src/ai-search-snippet.d.ts のような宣言ファイルを作成します。

src/ai-search-snippet.d.tsts
import type { HTMLAttributes } from "react";

// Register the snippet web components as valid JSX elements. The index
// signature allows their custom attributes (such as api-url and placeholder).
type SnippetElement = HTMLAttributes<HTMLElement> & {
	[attribute: string]: unknown;
};

declare module "react" {
	namespace JSX {
		interface IntrinsicElements {
			"search-bar-snippet": SnippetElement;
			"chat-bubble-snippet": SnippetElement;
			"search-modal-snippet": SnippetElement;
		}
	}
}

この宣言はタグを緩めに型付けし、任意の属性を許可します。コンポーネントごとの厳密な型は、スニペットリポジトリの React デモ宣言 を参照してください。

5. ローカルの origin を許可する

公開エンドポイントは CORS で、呼び出し元のサイトを制御します。ローカル開発中にサイトが動く origin を追加し、ブラウザからエンドポイントへ届くようにします。Vite アプリは http://localhost:5173 で動きます。

  1. AI Search インスタンスで Settings > Public Endpoint を開きます。
  2. Authorized hosts にローカルの origin を追加します。例: http://localhost:5173
  3. Save を選びます。

6. 動作を確認する

開発サーバーを起動します。

npm run dev

ブラウザでサイトを開きます(Vite アプリは http://localhost:5173 で動きます)。検索バーに入力するとドロップダウンに結果が出ます。隅のチャットバブルを選ぶと質問できます。Cmd/Ctrl+K で検索モーダルが開きます。コンポーネント、属性、テーマの全オプションは UI スニペット を参照してください。

7. 本番へ進む

スニペットは、サイトを配信している場所ならどこでも動きます。サイトを本番ドメインへデプロイしたら、Settings > Public Endpoint に戻り、その origin を Authorized hosts へ追加します(手順 5 と同じです)。本番でもブラウザからエンドポイントへ届くようにします。

次のステップ

UI スニペット

スニペットコンポーネント、属性、CSS テーマの全オプションです。

役に立ちましたか?