> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gbase.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# よくあるご質問（FAQ）

> GBase Knowledge のご利用にあたって、よくいただくご質問をまとめました。

export const KnowledgeChatbot = () => {
  useEffect(() => {
    if (typeof window === "undefined" || typeof document === "undefined") {
      return;
    }
    const CHATBOT_ID = "5c7ce716-1196-4b0c-92a2-12900ff360c8";
    const HIDE_STYLE_ID = "gptbase-hide-style";
    const WATCHER_FLAG = "__gbaseKnowledgeWatcherInstalled";
    const DECOY_FLAG = "__gbaseViewportDecoyInstalled";
    const DECOY_ATTR = "data-gbase-viewport-decoy";
    const WIDGET_SELECTOR = "#gptbase-bubble-button, #gptbase-message-bubbles, #gptbase-bubble-window";
    const onKnowledgeRoute = () => window.location.pathname.startsWith("/knowledge");
    const ensureViewportDecoy = () => {
      const head = document.head;
      const metas = Array.prototype.slice.call(head.querySelectorAll('meta[name="viewport"]'));
      if (metas.length === 0) return;
      if (!metas[0].hasAttribute(DECOY_ATTR)) {
        const decoy = document.createElement("meta");
        decoy.setAttribute("name", "viewport");
        decoy.setAttribute(DECOY_ATTR, "1");
        decoy.setAttribute("content", metas[0].getAttribute("content") || "width=device-width, initial-scale=1");
        head.insertBefore(decoy, metas[0]);
      }
      let keptDecoy = false;
      Array.prototype.forEach.call(head.querySelectorAll('meta[name="viewport"]'), meta => {
        const isDecoy = meta.hasAttribute(DECOY_ATTR);
        const isPluginMeta = (meta.getAttribute("content") || "").includes("user-scalable=no");
        if (isDecoy) {
          if (keptDecoy) meta.remove(); else keptDecoy = true;
        } else if (isPluginMeta) {
          meta.remove();
        }
      });
    };
    const installViewportDecoyOnce = () => {
      if (window[DECOY_FLAG]) return;
      window[DECOY_FLAG] = true;
      ensureViewportDecoy();
      const observer = new MutationObserver(() => ensureViewportDecoy());
      observer.observe(document.head, {
        childList: true
      });
    };
    const showWidget = () => {
      const style = document.getElementById(HIDE_STYLE_ID);
      if (style) style.remove();
    };
    const hideWidget = () => {
      if (document.getElementById(HIDE_STYLE_ID)) return;
      const style = document.createElement("style");
      style.id = HIDE_STYLE_ID;
      style.textContent = `${WIDGET_SELECTOR} { display: none !important; }`;
      document.head.appendChild(style);
    };
    const syncVisibility = () => {
      if (onKnowledgeRoute()) showWidget(); else hideWidget();
    };
    const injectPluginOnce = () => {
      if (document.getElementById(CHATBOT_ID)) return;
      window.gptbaseConfig = {
        chatbotId: CHATBOT_ID,
        baseUrl: "https://admin.gbase.ai",
        apiBaseUrl: "https://admin.gbase.ai/api"
      };
      const script = document.createElement("script");
      script.src = "https://gbase.ai/plugin/plugin.js";
      script.id = CHATBOT_ID;
      script.defer = true;
      document.body.appendChild(script);
    };
    const installRouteWatcherOnce = () => {
      if (window[WATCHER_FLAG]) return;
      window[WATCHER_FLAG] = true;
      const fire = () => window.requestAnimationFrame(syncVisibility);
      ["pushState", "replaceState"].forEach(method => {
        const original = window.history[method];
        window.history[method] = function patched(...args) {
          const result = original.apply(this, args);
          fire();
          return result;
        };
      });
      window.addEventListener("popstate", fire);
      window.addEventListener("hashchange", fire);
    };
    try {
      installViewportDecoyOnce();
      injectPluginOnce();
      installRouteWatcherOnce();
      syncVisibility();
    } catch (error) {
      console.error("[KnowledgeChatbot] setup failed:", error);
    }
  }, []);
  return null;
};

<KnowledgeChatbot />

<AccordionGroup>
  <Accordion title="Q1. アップロードできる音声ファイルの形式とサイズの上限は？">
    .wav、.webm、.mp3、.m4a の 4 形式に対応しています。1 ファイルあたり最大 300MB です。
  </Accordion>

  <Accordion title="Q2. 解析やスライド生成の途中で画面を閉じても大丈夫ですか？">
    はい。処理はサーバー側で継続されます。完了後に「履歴」または該当プロジェクトから結果を確認できます。
  </Accordion>

  <Accordion title="Q3. 会議の話者名が正しく表示されない場合は？">
    「文字起こし」タブ右側の「スピーカー管理」から話者名を手動で修正できます。発言中に名乗りがあった場合は自動で名前が推定されます。
  </Accordion>

  <Accordion title="Q4. 生成したスライドはどの形式でダウンロードできますか？">
    画面右上の「エクスポート」から PowerPoint・PDF 形式でダウンロードできます。PowerPoint でそのまま編集可能です。
  </Accordion>

  <Accordion title="Q5. エージェントの回答の根拠を確認したいときは？">
    回答に「出典」として参照元の資料名が明記されます。「思考プロセス」を展開すると、AI が参照した資料・検索の過程を確認できます。
  </Accordion>

  <Accordion title="Q6. クレジットとは何ですか？">
    AI 機能（文字起こし・要約・スライド生成など）の利用量の単位です。残量はホーム画面右上に表示されます。不足する場合は管理者にお問い合わせください。
  </Accordion>

  <Accordion title="Q7. 社内の既存資料（SharePoint・Box・Google Drive）を取り込めますか？">
    はい。プロジェクト詳細画面の「コネクター」、または「設定」の連携メニューから各サービスと接続できます。
  </Accordion>
</AccordionGroup>

その他のご質問は、[お問い合わせ](https://gbase.ai/contact)よりご連絡ください。
