> ## 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.

# AI 会議ノート

> 会議を録音またはアップロードするだけで、文字起こし・要約・TODO 抽出まで自動で行います。

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 />

AI 会議ノートは、会議の録音データを取り込むだけで、以下を自動で行う機能です。

* 音声の文字起こし（話者の自動分離つき）
* 会議内容の要約（決定事項・TODO の自動抽出）
* 会議タイトルの自動生成
* プロジェクトへの自動蓄積（後から検索・質問・資料作成に活用できます）

議事録作成に毎回 1 時間かかっていた作業が、録音またはアップロードするだけで完了します。

会議を取り込む方法は、次の 2 通りです。

* [GBase アプリで録音する](#1-会議を録音する（gbase-アプリ）)（Zoom・Teams などのオンライン会議に対応）
* [録音済みの音声ファイルをアップロードする](#2-音声ファイルをアップロードする)

### 1. 会議を録音する（GBase アプリ）

GBase アプリ（デスクトップアプリ）を使うと、会議をその場で録音し、終了後に自動でプロジェクトへのアップロード・文字起こし・要約まで行えます。

1. ホーム画面の「AI会議ノート」をクリックします。
2. 「プロジェクトを選択」ダイアログが表示されます。会議を関連付けるプロジェクトを選択し、「確認」をクリックします。
   * はじめてご利用の場合は「新規作成」をクリックし、プロジェクト名（例：営業部ナレッジ）を入力して「プロジェクトを作成」をクリックします。
3. 録音開始のダイアログ「Zoom、Teams などのオンライン会議を録画」が表示されます。
   * GBase アプリをインストール済みの場合：「GBase アプリを開く」をクリックします。ブラウザに「GBase.app を開きますか？」という確認が表示されたら「GBase.app を開く」をクリックします。
   * 未インストールの場合：「アプリをダウンロード」をクリックしてインストールします（左サイドバーの「GBase をダウンロード」からも入手できます）。
4. GBase アプリが起動し、会議の録音を開始できます。
5. 録音を終了すると、音声は自動で選択したプロジェクトにアップロードされ、文字起こし・要約まで自動で行われます。

<Frame caption="「プロジェクトを選択」ダイアログ">
  <img src="https://mintcdn.com/sparticle-fcbbc7ab/1ZPHjwLm0lzZf2Fz/images/knowledge/03-upload-select-project.png?fit=max&auto=format&n=1ZPHjwLm0lzZf2Fz&q=85&s=00edd0a3c6ed2d1015a5caec29dec1c8" alt="プロジェクトを選択ダイアログ" width="1440" height="900" data-path="images/knowledge/03-upload-select-project.png" />
</Frame>

<Frame caption="「新しいプロジェクトを作成」ダイアログ">
  <img src="https://mintcdn.com/sparticle-fcbbc7ab/1ZPHjwLm0lzZf2Fz/images/knowledge/04-create-project-dialog.png?fit=max&auto=format&n=1ZPHjwLm0lzZf2Fz&q=85&s=1b77f32ebb5f3a3102c14ceed7236f02" alt="新しいプロジェクトを作成ダイアログ" width="1440" height="900" data-path="images/knowledge/04-create-project-dialog.png" />
</Frame>

<Frame caption="録音開始のダイアログ（GBase アプリの起動確認）">
  <img src="https://mintcdn.com/sparticle-fcbbc7ab/1ZPHjwLm0lzZf2Fz/images/knowledge/14-meeting-record-app.png?fit=max&auto=format&n=1ZPHjwLm0lzZf2Fz&q=85&s=d5111a1aef5e627258b55dcb4137f93f" alt="録音開始のダイアログ" width="812" height="744" data-path="images/knowledge/14-meeting-record-app.png" />
</Frame>

<Note>
  Zoom・Teams などのオンライン会議も、GBase アプリを起動しておくだけで録音できます。録音後の操作は不要で、会議が終わる頃には議事録の下書きができあがっています。
</Note>

### 2. 音声ファイルをアップロードする

対応形式は .wav、.webm、.mp3、.m4a（最大 300MB）です。

1. ホーム画面の「音声をアップロード」をクリックします。
2. 「プロジェクトを選択」ダイアログで、会議を関連付けるプロジェクトを選択し、「確認」をクリックします（プロジェクトの新規作成手順は前節の手順 2 をご参照ください）。
3. ファイル選択画面が開きます。アップロードする音声ファイルを選択します。

### 3. 会議の解析

アップロード（または録音）が完了すると、会議詳細画面に切り替わり、解析が自動で始まります。解析中は「会議解析中」と表示されます。

<Frame caption="会議解析中の画面">
  <img src="https://mintcdn.com/sparticle-fcbbc7ab/1ZPHjwLm0lzZf2Fz/images/knowledge/05-meeting-analyzing.png?fit=max&auto=format&n=1ZPHjwLm0lzZf2Fz&q=85&s=bd5f6cca1e5175896032b351a509480e" alt="会議解析中の画面" width="1440" height="900" data-path="images/knowledge/05-meeting-analyzing.png" />
</Frame>

<Note>
  解析にかかる時間は音声の長さによって異なります。解析中に他の画面へ移動しても、処理はそのまま継続されます。
</Note>

### 4. 要約の確認

解析が完了すると、「要約」タブに会議の要約が表示されます。会議タイトルも内容に基づいて自動で生成されます。

<Frame caption="会議の要約画面">
  <img src="https://mintcdn.com/sparticle-fcbbc7ab/1ZPHjwLm0lzZf2Fz/images/knowledge/06-meeting-summary.png?fit=max&auto=format&n=1ZPHjwLm0lzZf2Fz&q=85&s=a42db4af84304faff5f6e171f76a93f7" alt="会議の要約画面" width="1440" height="900" data-path="images/knowledge/06-meeting-summary.png" />
</Frame>

要約には以下が自動で含まれます。

* 会議全体の概要
* 決定事項のまとめ
* 「次のステップ」（今後のアクション）
* 「TODO」表（担当者・タスク・期限）

画面右上の「Markdown をダウンロード」をクリックすると、要約をファイルとして保存できます。また、「要約テンプレート」から要約の形式を変更することもできます。

### 5. 文字起こしの確認

「文字起こし」タブをクリックすると、発言ごとの文字起こし結果が表示されます。

<Frame caption="文字起こし画面（話者分離つき）">
  <img src="https://mintcdn.com/sparticle-fcbbc7ab/1ZPHjwLm0lzZf2Fz/images/knowledge/07-meeting-transcript.png?fit=max&auto=format&n=1ZPHjwLm0lzZf2Fz&q=85&s=f5bfde3b61af7713b9fa851ee276365d" alt="文字起こし画面" width="1440" height="900" data-path="images/knowledge/07-meeting-transcript.png" />
</Frame>

* 話者は自動で分離され、発言内容から名前が推定されます（例：Speaker 1、田中）。
* 右側の「スピーカー管理」パネルで、話者名を手動で修正できます。

### 次のステップ

会議を PC アプリで録音する方法は [GBase アプリ（デスクトップ録音）](/knowledge/desktop-app) をご覧ください。
