設置コード

検索機能をサイトに設置する方法を説明します。

設置コードの種類

検索機能をサイトに設置するには、検索結果ページと検索フォームの2つのコードを設置する必要があります。設置方法については、ダッシュボードの手順をご確認ください。

  • 検索結果ページ: 実際の検索結果を表示するページです。search.htmlなどの名前で単体のHTMLファイルとして設置します。
  • 検索フォーム: 検索フォームは、シンプルな入力フォームとサジェスト機能から構成されています。Webサイトの共通ヘッダーなどに、全ページに組み込む形で設置してください。

検索結果の設定オプション

検索結果ページのコード内に、neodig-search-config というクラスを持つ <script> タグがあります。この中のJSON設定を変更することで、検索結果の表示内容をカスタマイズできます。

SPAフレームワーク(Vue.js、React等)で利用する場合は、<script> タグの代わりに <div hidden> を使用することもできます。

おすすめコンテンツの設定

"recommend": {
  "maxSize": 3,
  "messages": {
    "header": "おすすめコンテンツ"
  }
}
  • maxSize: 表示する最大件数(デフォルト: 3)
  • messages: 各種メッセージのカスタマイズ

FAQの設定

"faq": {
  "messages": {
    "header": "よくある質問",
    "badge": "FAQ",
    "detailLink": "続きを読む"
  }
}
  • messages: 各種メッセージのカスタマイズ
    • header: FAQセクションのヘッダーテキスト
    • badge: FAQセクションのヘッダーに表示されるバッジのテキスト(デフォルト: "FAQ")
    • detailLink: FAQ詳細ページへの導線リンクのテキスト(デフォルト: "続きを読む")
FAQセクションは、FAQサイト構築機能で登録されたFAQがサイト内検索結果に表示されます。FAQの登録はダッシュボードから行ってください。

AI検索の設定(AI Overview / 0件代替提案)

検索結果の上部にAIが生成した要約と引用元(参考にした情報)を表示する機能です。ダッシュボードの「AI検索設定」で動作モードを切り替えます。

  • AI Overview(mode=overview): 検索のたびに発動し、検索結果の上部にAI要約を表示します。
  • 0件代替提案(mode=fallback): 検索ヒット数が0件のときのみ発動し、サイト内の近いページをAIが提案します。
AI検索はProfessionalプラン以上で利用可能です。モード(off / overview / fallback)と利用モデル、NGワードはダッシュボードの「AI検索設定」「AI検索NGワード」から設定してください。

検索結果ページのHTMLには、AI検索の表示先となる <div class="neodig-ai-search-section">.neodig-result-contents の中(推奨: 最上部)に配置します。

<div class="neodig-result-contents">
    <div class="neodig-ai-search-section"></div>
    <div class="neodig-faq-section"></div>
    <div class="neodig-recommendations-section"></div>
    <div class="neodig-results-section"></div>
</div>

メッセージ等のカスタマイズはJSON設定で行います。

"aiSearch": {
  "enableMarkdown": true,
  "messages": {
    "badge": "AI",
    "header": "AIによる回答",
    "loading": "AIが回答を生成中…",
    "citationsHeader": "参考にした情報"
  }
}
  • enableMarkdown: 回答本文のMarkdownレンダリングを有効にするか(デフォルト: true)
  • messages: 各種メッセージのカスタマイズ
    • badge: ヘッダーに表示されるバッジのテキスト(デフォルト: "AI")
    • header: AI回答セクションのヘッダーテキスト(デフォルト: "AIによる回答")
    • loading: 回答生成中に表示されるテキスト(デフォルト: "AIが回答を生成中…")
    • citationsHeader: 引用元一覧の見出しテキスト(デフォルト: "参考にした情報")
回答が生成できないとき(プラン未契約、モードoff、検索結果0件かつmode=overview以外、NGワード検出など)はセクション全体が非表示になります。お客様側で表示/非表示の制御を行う必要はありません。

検索結果の設定

"result": {
  "size": 10,
  "scoreThreshold": 0.7,
  "enableMarkdown": true,
  "lastModifiedDateFormat": "yyyy/MM/dd",
  "messages": {
    "header": "検索結果",
    "notFound": "検索結果が見つかりませんでした",
    "showNext": "さらに表示",
    "limitReached": "検索結果の表示上限に達しました。検索キーワードを変えて検索して下さい",
    "expandDetails": "続きを表示",
    "collapse": "折りたたむ",
    "scrollTop": "",
    "error": "エラーが発生しました。時間を空けて再度お試しください。",
    "rateLimitError": "リクエストが多すぎます。しばらく待ってから再度お試しください"
  }
}
  • size: 1ページあたりの表示件数(デフォルト: 10)
  • scoreThreshold: 検索結果初期表示のスコア閾値(デフォルト: 0.7)。
  • enableMarkdown: Markdown形式のサマリーを有効にするか(デフォルト: true)
  • lastModifiedDateFormat: 最終更新日時の表示フォーマット(デフォルト: "yyyy/MM/dd")
  • messages: 各種メッセージのカスタマイズ
    • expandDetails: サマリー展開ボタンのテキスト(デフォルト: "続きを表示")
    • collapse: サマリー折りたたみボタンのテキスト(デフォルト: "折りたたむ")
    • scrollTop: トップへスクロールボタンのテキスト(空文字列の場合はボタンを非表示)
    • error: エラー発生時のメッセージ(デフォルト: "エラーが発生しました。時間を空けて再度お試しください。")
    • rateLimitError: レート制限時のメッセージ(デフォルト: "リクエストが多すぎます。しばらく待ってから再度お試しください")

結果ページのデザインカスタマイズ

検索結果の表示内容・表示順序の変更

検索結果ページでは、<template> 要素を使用して、おすすめコンテンツと検索結果の表示レイアウトをカスタマイズできます。

SPAフレームワーク(Vue.js、React等)で利用する場合は、<template> タグの代わりに <div hidden> を使用することもできます。

テンプレートの種類

検索結果ページには3種類のテンプレートが用意されています。

  • おすすめコンテンツテンプレート (.neodig-recommendation-template): おすすめコンテンツの表示形式
  • FAQテンプレート (.neodig-faq-template): FAQの表示形式
  • 検索結果テンプレート (.neodig-result-template): 検索結果の表示形式

利用可能な表示要素

各テンプレート内で使用できる要素を以下のクラス名で指定します。これらのクラスを持つ要素に、自動的にデータが挿入されます。

おすすめコンテンツテンプレート
クラス名説明
.neodig-recommendation-titleタイトル
.neodig-recommendation-imageサムネイル画像
.neodig-recommendation-url表示用URL
.neodig-recommendation-summary要約文
FAQテンプレート

FAQはアコーディオン形式で表示されます。デフォルトでは <details> / <summary> を使った折り畳み構造でレンダリングされ、回答エリアには detailUrl がある場合に「続きを読む」リンクが表示されます。

クラス名説明
.neodig-faq-title質問タイトル(<summary> 内に配置されアコーディオン開閉ラベルとして動作)
.neodig-faq-summary回答の抜粋
.neodig-faq-detail-linkFAQ詳細ページへの導線ラベル(detailUrl がある場合のみ表示される)
検索結果テンプレート
クラス名説明
.neodig-result-titleタイトル
.neodig-result-imageサムネイル画像
.neodig-result-url表示用URL
.neodig-result-summary要約文
.neodig-result-last-modified最終更新日時 (デフォルト非表示)
.neodig-result-generic-field1汎用フィールド1 (デフォルト非表示)
.neodig-result-generic-field2汎用フィールド2 (デフォルト非表示)
.neodig-result-generic-field3汎用フィールド3 (デフォルト非表示)
.neodig-result-category-tagsカテゴリタグ一覧 (デフォルト非表示)

カスタマイズの自由度

テンプレートを編集することで、以下のようなカスタマイズが可能です。

  • 表示要素の選択: 不要な要素のクラスを削除することで、その情報を非表示にできます
  • 表示順序の変更: タイトル、画像、要約などの表示順序を自由に変更できます
  • HTML構造の調整: 独自のラッパー要素やグリッドレイアウトを追加して、サイトのデザインに合わせた構造を構築できます

注意事項

  • 表示したい情報のクラス名を持つ要素を必ずテンプレート内に含めてください
  • クラス名は正確に指定する必要があります(スペルミスがあるとデータが挿入されません)
  • テンプレート全体のHTML構造は自由ですが、データ挿入用のクラス名を持つ要素は必須です

検索結果のCSS変更

サンプルCSSは参考として提供されています。実際のデザインは、お客様のサイト側のCSSで自由にカスタマイズしてください。

検索フォームのCSSクラス

CSSクラス名説明
.neodig-form-rootフォームのルート要素(サジェスト専用フォームで使用)
.neodig-search-root検索ルート要素
.neodig-search-wrapper検索入力とボタンのラッパー
.neodig-search-input検索入力フィールド
.neodig-search-button検索ボタン
.neodig-loadingローディング中の修飾クラス(検索ボタン・もっと見るボタンにプログレスサークルを表示)
.neodig-suggest-containerサジェストコンテナ
.neodig-suggest-itemサジェストアイテム
.neodig-suggest-item-hoverサジェストアイテムのホバー状態
.neodig-suggest-item-selectedサジェストアイテムの選択状態
.neodig-filter-barカテゴリと更新日時フィルタのラッパー
.neodig-categoriesカテゴリコンテナ
.neodig-category個別カテゴリ
.neodig-category-nameカテゴリ名
.neodig-category-itemsカテゴリアイテムのコンテナ
.neodig-category-items-wrapperカテゴリアイテムのラッパー
.neodig-category-item個別カテゴリアイテム
.neodig-category-item-labelカテゴリアイテムのラベル
.neodig-category-inputカテゴリの入力要素(チェックボックス、ラジオボタン)
.neodig-category-dropdownドロップダウン形式のカテゴリ
.neodig-freshness更新日時フィルタコンテナ
.neodig-freshness-label更新日時フィルタのラベル
.neodig-freshness-dropdown更新日時フィルタのドロップダウン

音声入力のCSSクラス

対応ブラウザ(Chrome、Edge)では、検索入力フィールド内に音声入力ボタンが自動的に表示されます。Firefox等の非対応ブラウザやiOS端末ではボタンは表示されません。音声入力ボタンが表示されない場合は、トラブルシューティングをご確認ください。

CSSクラス名説明
.neodig-search-input-container音声入力ボタン付き検索入力のラッパー(自動生成)
.neodig-search-input-with-voice音声入力ボタン用にパディングが調整された検索入力
.neodig-voice-button音声入力ボタン
.neodig-voice-active録音中の音声入力ボタン

検索結果のCSSクラス

CSSクラス名説明
.neodig-result-contents結果コンテンツのコンテナ
.neodig-recommendations-sectionおすすめコンテンツセクション
.neodig-recommendations-headerおすすめコンテンツヘッダー
.neodig-recommendations-itemsおすすめコンテンツアイテムのコンテナ
.neodig-recommendation-item個別おすすめコンテンツアイテム
.neodig-recommendation-titleおすすめコンテンツのタイトル
.neodig-recommendation-contentおすすめコンテンツのコンテンツ
.neodig-recommendation-imageおすすめコンテンツの画像
.neodig-recommendation-textおすすめコンテンツのテキスト部分
.neodig-recommendation-urlおすすめコンテンツのURL
.neodig-recommendation-summaryおすすめコンテンツのサマリー
.neodig-faq-sectionFAQセクション(検索結果と視覚的に分離するためのカード状コンテナ)
.neodig-faq-headerFAQセクションヘッダー(バッジ+ラベルのflexコンテナ)
.neodig-faq-badgeFAQセクションヘッダー先頭に表示されるバッジ
.neodig-faq-header-labelFAQセクションヘッダーのテキスト部分
.neodig-faq-itemsFAQ項目のコンテナ
.neodig-faq-item個別FAQ項目(カード状の外枠)
.neodig-faq-item-detailsアコーディオンを構成する <details> 要素
.neodig-faq-summary-rowアコーディオン見出し行(<summary>、質問タイトルを含む)
.neodig-faq-answer-rowアコーディオン展開時の回答エリア
.neodig-faq-answer-linkdetailUrl がある場合に回答エリア全体を包むリンク
.neodig-faq-titleFAQの質問タイトル
.neodig-faq-summaryFAQの回答抜粋
.neodig-faq-detail-linkFAQ詳細ページへの導線ラベル
.neodig-faq-more-areaFAQ「さらに表示」ボタンエリア
.neodig-results-section検索結果セクション
.neodig-results-header検索結果ヘッダー
.neodig-results-items検索結果アイテムのコンテナ
.neodig-result-item個別検索結果アイテム
.neodig-result-title検索結果のタイトル
.neodig-result-content検索結果のコンテンツ
.neodig-result-image検索結果の画像
.neodig-result-text検索結果のテキスト部分
.neodig-result-url検索結果のURL
.neodig-result-summary検索結果のサマリー
.neodig-result-last-modified最終更新日時
.neodig-result-generic-field1汎用フィールド1
.neodig-result-generic-field2汎用フィールド2
.neodig-result-generic-field3汎用フィールド3
.neodig-result-category-tagsカテゴリタグ一覧
.neodig-category-tag個別カテゴリタグ
.neodig-summary-expandable展開可能なサマリーのコンテナ
.neodig-summary-contentサマリーコンテンツ(line-clamp方式)
.neodig-summary-toggle-buttonサマリー展開/折りたたみボタン
.neodig-errorエラーメッセージ表示エリア
.neodig-next-area次へボタンのエリア
.neodig-more-buttonもっと見るボタン
.neodig-limit-message表示上限到達時のメッセージ
.neodig-scroll-top-areaトップへスクロールボタンのエリア
.neodig-scroll-top-buttonトップへスクロールボタン
.neodig-with-chat-buttonチャットボタン併用時の修飾クラス
.neodig-skeleton-containerスケルトンスクリーンのコンテナ(ローディング中に表示)
.neodig-skeleton-itemスケルトンスクリーンの個別アイテム
.neodig-skeleton-titleスケルトンのタイトルプレースホルダー
.neodig-skeleton-urlスケルトンのURLプレースホルダー
.neodig-skeleton-textスケルトンのテキストプレースホルダー
.neodig-skeleton-text-shortスケルトンの短いテキストプレースホルダー

AI検索のCSSクラス

CSSクラス名説明
.neodig-ai-search-sectionAI検索セクションのルート要素(HTMLに配置するdiv)
.neodig-ai-search-cardAI回答のカード状コンテナ
.neodig-ai-search-headerバッジとヘッダーラベルを含むヘッダー行
.neodig-ai-badgeヘッダー先頭に表示される「AI」バッジ
.neodig-ai-search-header-labelヘッダーのテキストラベル
.neodig-ai-search-answerAIが生成した回答本文(Markdownレンダリング結果を内包)
.neodig-ai-citation-ref回答本文中の引用参照リンク([1]2…が変換されたアンカー)
.neodig-ai-citations引用元一覧のアコーディオン(<details>要素)
.neodig-ai-citations-header引用元一覧のアコーディオン見出し(<summary>要素)
.neodig-ai-citations-list引用元のリスト(<ol>要素)
.neodig-ai-citation-item個別の引用元アイテム
.neodig-ai-skeleton-card回答生成中に表示されるスケルトンカード
.neodig-ai-skeleton-headerスケルトンのヘッダー行
.neodig-ai-skeleton-badgeスケルトンのバッジプレースホルダー
.neodig-ai-skeleton-labelスケルトンのローディングメッセージ
.neodig-ai-skeleton-lineスケルトンの本文プレースホルダー(shimmerアニメーション付き)
.neodig-ai-skeleton-line-shortスケルトンの短い行プレースホルダー

トラブルシューティング

音声入力ボタンが表示されない

音声入力ボタンが表示されない場合、以下の点を確認してください。

1. ブラウザの対応状況

音声入力は Web Speech API に対応したブラウザ(Chrome、Edge)でのみ利用可能です。Firefox等の非対応ブラウザではボタンは表示されません。また、iOSでは全てのブラウザがWebKitエンジンを使用しており、Web Speech APIが正常に動作しないためボタンは表示されません。

2. HTTPS の使用

音声入力にはHTTPS接続が必要です(localhost を除く)。HTTP環境では音声入力は利用できません。

3. Permissions-Policy ヘッダーの確認

サーバーの Permissions-Policy HTTPレスポンスヘッダーで microphone がブロックされていると、音声入力ボタンは自動的に非表示になります。ブラウザのDevToolsコンソールに以下のメッセージが表示されている場合、この設定が原因です。

Voice input button is hidden because microphone access is blocked. Please check that the Permissions-Policy header allows microphone.

対処方法: サーバーの Permissions-Policy ヘッダーで microphone を許可してください。

Permissions-Policy: microphone=(self)
WAFやCDN、セキュリティモジュール(例: helmet、nuxt-security)がデフォルトで microphone=() を設定している場合があります。ご利用のサーバー設定をご確認ください。