
Deep ResearchのOSSクローンアプリ!OpenAIとの比較や使い方を徹底解説!
〜2月21日 14:30
はじめに
先日OpenAIが公開した「Deep Research」が注目を集めています。
しかし、OpenAIが提供するDeepResearchは月額3万円の費用がかかるため、導入を検討する際のハードルが高いと感じる方も多いのではないでしょうか。
そこで本記事では、無料で使えるオープンソースの「Open Deep Research」を紹介します。Node.js環境などを整えるだけで始められるため、費用面を抑えつつAIを活用したリサーチを試したい方に適しています。
OpenAIが公開したDeep Resarchについては下記の記事で解説していますので、興味のある方は併せてご覧ください。
早速、ツールの基本機能や実行手順を具体的に解説していきます。
Open Deep Researchとは?
Open Deep Researchは、無料で利用できるオープンソースのAIリサーチツールです。ウェブ検索やスクレイピングによって多方面から情報を収集し、要約やレポート生成を自動化します。
Node.jsなどの基本的な開発環境があれば、ローカルやDocker上で実行できるため、クラウドに依存しないリサーチが可能です。以下の点が特徴です。
無料かつオープンソース:ライセンス費用がかからず、自由に改変ができます。
柔軟な環境構築:ローカルPCや自社サーバーでの運用も可能です。
レポート出力の自動化:最終的にMarkdown形式のレポートを生成するため、共有や編集がしやすいです。
Vercel AI SDKを用いて開発されている。
利用にはAPIキーや最低限のセットアップが必要になりますが、基本的な操作はシンプルで、初めての方でも導入しやすい構成になっています。
リポジトリのファイル構成
ここでは、Open Deep Researchのファイル構成について解説します。
ファイル・ディレクトリ構成:
.
├── src/
│ ├── ai/
│ │ ├── providers.ts
│ │ ├── text-splitter.test.ts
│ │ └── text-splitter.ts
│ ├── deep-research.ts
│ ├── feedback.ts
│ ├── output-manager.ts
│ ├── progress-manager.ts
│ ├── prompt.ts
│ └── run.ts
├── .env.example
├── .gitignore
├── docker-compose.yml
├── Dockerfile
├── LICENSE
├── package.json
├── prettier.config.mjs
├── README.md
├── report.md
└── tsconfig.json
1. ルートディレクトリ
リポジトリを最初に展開すると、ルート(最上位)に複数のファイルやディレクトリが見つかります。代表的なのは以下のとおりです。
.env.example
環境変数の設定例が書かれたファイルです。OpenAIやFirecrawlなどのAPIキーを実際に使うときは、これを基に.env.localを作成します。.gitignore
Gitで管理しないファイルやフォルダを定義しています。APIキーやビルド成果物、機密情報が含まれやすいディレクトリを無視する設定がここに書かれています。docker-compose.yml / Dockerfile
Docker環境でOpen Deep Researchを実行するための設定ファイルです。イメージのビルドやコンテナ起動に必要な手順がまとめられています。package.json
依存パッケージやnpmスクリプトが記載されています。npm startやnpm installの設定はここで管理され、Node.jsプロジェクトとしてのメタ情報を含みます。README.md
プロジェクトの概要や基本的な使い方をざっくり紹介しているドキュメントです。セットアップや動作確認の初歩的な案内が書かれています。LICENSE
オープンソースとしての利用規約が明記されています。Open Deep ResearchはMITライセンスで公開されているため、このファイルを通じて使用上の注意や権利範囲を確認できます。
2. srcディレクトリ
リポジトリの中核となるソースコードが集まっています。ここで、AIを使った検索や要約のロジックが実装されており、次のようなファイルがあります。
aiフォルダ(/src/ai/)
AI関連の補助コードを管理しているサブディレクトリです。たとえばproviders.tsではOpenAIやその他APIの設定・呼び出しを行い、text-splitter.tsでは取得したテキストを小分けにする仕組みを実装しています。providers.ts: OpenAIなどのAPI接続情報や、トークンをエンコード・デコードするロジックが含まれます。
text-splitter.ts: 長文を扱いやすく分割するコードです。検索で得たコンテンツやユーザー入力を、小さな塊に区切って効率的に処理できるようにしています。
text-splitter.test.ts: テキスト分割ロジックが正しく動くか検証するテストコードです。
deep-research.ts
実際の「深いリサーチ」の流れを管理するファイルです。ユーザーが指定した幅(Breadth)と深さ(Depth)の回数だけ検索を繰り返し、再帰的に情報を集めて要約していきます。フォローアップ検索や結果の統合も、このファイルが中心となって動きます。feedback.ts
初期段階のユーザー入力を受け取ったあと、追加で聞いておいたほうがよい質問を自動生成します。明確な目標をもたせることで、より的確なリサーチ結果を得る手助けをします。prompt.ts
大規模言語モデル(LLM)へ送るテキストのテンプレートや、システムプロンプトを定義しています。出力品質を左右する重要なファイルです。output-manager.ts / progress-manager.ts
ターミナル上での進捗表示やログ整形を行うユーティリティ群です。ユーザーがリサーチの進行度合いを直感的に把握できるよう、テキスト出力を制御します。run.ts
実行のエントリーポイントとなるファイルです。ユーザーに対して「リサーチテーマ」や「Breadth」「Depth」を尋ね、deep-research.tsを呼び出して検索や要約を開始します。対話形式で進める仕組みがまとめられています。
3. その他設定ファイル
tsconfig.json
TypeScriptのコンパイル設定が書かれています。ターゲットとするJavaScriptのバージョンやモジュール解決の方法など、プロジェクトのビルドや実行方針を定義する重要なファイルです。prettier.config.mjs
コードの整形ルール(フォーマッタの設定)を管理し、開発者同士でスタイルを統一しやすくしています。
リポジトリの動作のしくみ
動作のイメージを図解にするとこちらのようになります。

ユーザー入力の取得(src/run.ts)
ターミナルから「リサーチしたいテーマ」や「Breadth」「Depth」などの情報を受け取る。
必要に応じてフォローアップ質問を生成する(feedback.tsの呼び出し)。
リサーチの実行(deep-research.ts)
Firecrawlなどの外部サービスを通じてウェブ検索を行い、テキストを取得する。
text-splitter.tsで分割したテキストをLLMにかけて要約・分析を行う。
再帰的な検索をする場合はBreadth・Depthの数値をもとに深掘りを継続。
進捗表示(output-manager.ts / progress-manager.ts)
検索処理や要約の実行状況をターミナル上に表示する。
ログ出力や進行度の可視化を行い、ユーザーがどの段階かを把握できるようにする。
レポート生成
最終的な結果はMarkdown形式(output.md)として自動生成される。
検索で参照したURLや、得られた学習結果(Learnings)をまとめる。
ユーザー確認
ユーザーはoutput.mdを開き、結果を確認・編集・共有できる。
複数のDepthを指定した場合の繰り返し動作の仕組みは下記の図のようになります。
Breadth:作成するクエリの個数
Depth:1回の検索結果からさらに深掘りして追加の検索を行う回数

Breadth-Loop: Breadthの数(例:i=3なら3回ループ)だけ検索クエリを生成し、FirecrawlとLLMで要約するプロセスを繰り返します。
Depth-Check: 一度リサーチした結果から、新しい疑問点やキーワードが見つかった際、まだDepthが残っていれば(Depth>0)再度クエリを作成して深掘りします。Depthが0に到達するまで繰り返します。
Logs & Progress: 検索や分析の各ステップでログを出力し、ユーザーが進行状況を把握できるようにします。最終的にoutput.mdが生成されると、ユーザーはその報告書を確認・編集して利用します。

環境構築の手順
実際にOpen Deep Resarchを使うための環境構築手順を解説します。
ここから先は
2月14日 14:30 〜 2月21日 14:30