[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73916":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":15,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":29,"discoverSource":30},73916,"open-deep-research","btahir\u002Fopen-deep-research","btahir","Open source alternative to Gemini Deep Research. Generate reports with AI based on search results.","https:\u002F\u002Fopendeepresearch.vercel.app",null,"TypeScript",2141,197,13,4,0,2,9,6,65.79,"MIT License",false,"main",true,[],"2026-06-12 04:01:12","# Open Deep Research\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"demo.gif\" alt=\"Open Deep Research Demo\" width=\"800\"\u002F>\n  \u003Cp>\u003Cem>Note: Demo is sped up for brevity\u003C\u002Fem>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\nA powerful open-source research assistant that generates comprehensive AI-powered reports from web search results. Unlike other Deep Research solutions, it provides seamless integration with multiple AI platforms including Google, OpenAI, Anthropic, DeepSeek, and even local models - giving you the freedom to choose the perfect AI model for your specific research requirements.\n\nThis app functions in three key steps:\n\n1. **Search Results Retrieval**: Using either Google Custom Search or Bing Search API (configurable), the app fetches comprehensive search results for the specified search term.\n2. **Content Extraction**: Leveraging JinaAI, it retrieves and processes the contents of the selected search results, ensuring accurate and relevant information.\n3. **Report Generation**: With the curated search results and extracted content, the app generates a detailed report using your chosen AI model (Gemini, GPT-4, Sonnet, etc.), providing insightful and synthesized output tailored to your custom prompts.\n4. **Knowledge Base**: Save and access your generated reports in a personal knowledge base for future reference and easy retrieval.\n\nOpen Deep Research combines powerful tools to streamline research and report creation in a user-friendly, open-source platform. You can customize the app to your needs (select your preferred search provider, AI model, customize prompts, update rate limits, and configure the number of results both fetched and selected).\n\n## Features\n\n- 🔍 Flexible web search with Google or Bing APIs\n- ⏱️ Time-based filtering of search results\n- 📄 Content extraction from web pages\n- 🤖 Multi-platform AI support (Google Gemini, OpenAI GPT, Anthropic Sonnet)\n- 🎯 Flexible model selection with granular configuration\n- 📊 Multiple export formats (PDF, Word, Text)\n- 🧠 Knowledge Base for saving and accessing past reports\n- ⚡ Rate limiting for stability\n- 📱 Responsive design\n\n### Local File Support\n\nThe app supports analyzing local files for research and report generation. You can:\n\n- Upload TXT, PDF, and DOCX files directly through the interface\n- Process local documents alongside web search results\n- Generate reports from local files without requiring web search\n- Combine insights from both local files and web sources\n\nTo use local files:\n\n1. Click the upload button (⬆️) in the search interface\n2. Select your file (supported formats: TXT, PDF, DOCX)\n3. The file will appear as a custom source in your results\n4. Select it and click \"Generate Report\" to analyze its contents\n\n### Knowledge Base\n\nThe Knowledge Base feature allows you to:\n\n- Save generated reports for future reference (reports are saved in the browser's local storage)\n- Access your research history\n- Quickly load and review past reports\n- Build a personal research library over time\n\n### Flow: Deep Research & Report Consolidation\n\n\u003Cdiv align=\"center\">\n  \u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.loom.com\u002Fshare\u002F3c4d9811ac1d47eeaa7a0907c43aef7f\">🎥 Watch the full demo video on Loom\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\nThe Flow feature enables deep, recursive research by allowing you to:\n\n- Create visual research flows with interconnected reports\n- Generate follow-up queries based on initial research findings\n- Dive deeper into specific topics through recursive exploration\n- Consolidate multiple related reports into comprehensive final reports\n\nKey capabilities:\n\n- 🌳 **Deep Research Trees**: Start with a topic and automatically generate relevant follow-up questions to explore deeper aspects\n- 🔄 **Recursive Exploration**: Follow research paths down various \"rabbit holes\" by generating new queries from report insights\n- 🔍 **Visual Research Mapping**: See your entire research journey mapped out visually, showing connections between different research paths\n- 🎯 **Smart Query Generation**: AI-powered generation of follow-up research questions based on report content\n- 🔗 **Report Consolidation**: Select multiple related reports and combine them into a single, comprehensive final report\n- 📊 **Interactive Interface**: Drag, arrange, and organize your research flows visually\n\nThe Flow interface makes it easy to:\n\n1. Start with an initial research query\n2. Review and select relevant search results\n3. Generate detailed reports from selected sources\n4. Get AI-suggested follow-up questions for deeper exploration\n5. Create new research branches from those questions\n6. Finally, consolidate related reports into comprehensive summaries\n\nThis feature is perfect for:\n\n- Academic research requiring deep exploration of interconnected topics\n- Market research needing multiple angles of investigation\n- Complex topic analysis requiring recursive deep dives\n- Any research task where you need to \"follow the thread\" of information\n\n## Configuration\n\nThe app's settings can be customized through the configuration file at `lib\u002Fconfig.ts`. Here are the key parameters you can adjust:\n\n### Rate Limits\n\nControl rate limiting and the number of requests allowed per minute for different operations:\n\n```typescript\nrateLimits: {\n  enabled: true,         \u002F\u002F Enable\u002Fdisable rate limiting (set to false to skip Redis setup)\n  search: 5,            \u002F\u002F Search requests per minute\n  contentFetch: 20,     \u002F\u002F Content fetch requests per minute\n  reportGeneration: 5,  \u002F\u002F Report generation requests per minute\n}\n```\n\nNote: If you set `enabled: false`, you can run the application without setting up Redis. This is useful for local development or when you don't need rate limiting.\n\n### Search Provider Configuration\n\nThe app supports both Google Custom Search and Bing Search APIs. You can configure your preferred search provider in `lib\u002Fconfig.ts`:\n\n```typescript\nsearch: {\n  resultsPerPage: 10,\n  maxSelectableResults: 3,\n  provider: 'google', \u002F\u002F 'google' or 'bing'\n  safeSearch: {\n    google: 'active',  \u002F\u002F 'active' or 'off'\n    bing: 'moderate'   \u002F\u002F 'moderate', 'strict', or 'off'\n  },\n  market: 'en-US',\n}\n```\n\nTo use Google Custom Search:\n\n1. Get your API key from [Google Cloud Console](https:\u002F\u002Fconsole.cloud.google.com\u002F)\n2. Create a Custom Search Engine and get your CX ID from [Google Programmable Search](https:\u002F\u002Fprogrammablesearchengine.google.com\u002F)\n3. Add the credentials to your `.env.local` file:\n\n```bash\nGOOGLE_SEARCH_API_KEY=\"your-api-key\"\nGOOGLE_SEARCH_CX=\"your-cx-id\"\n```\n\nTo use Bing Search:\n\n1. Get your API key from [Azure Portal](https:\u002F\u002Fportal.azure.com\u002F)\n2. Add the credential to your `.env.local` file:\n\n```bash\nAZURE_SUB_KEY=\"your-azure-key\"\n```\n\n### Knowledge Base\n\nThe Knowledge Base feature allows you to build a personal research library by:\n\n- Saving generated reports with their original search queries\n- Accessing and loading past reports instantly\n- Building a searchable archive of your research\n- Maintaining context across research sessions\n\nReports saved to the Knowledge Base include:\n\n- The full report content with all sections\n- Original search query and prompt\n- Source URLs and references\n- Generation timestamp\n\nYou can access your Knowledge Base through the dedicated button in the UI, which opens a sidebar containing all your saved reports.\n\n### AI Platform Settings\n\nConfigure which AI platforms and models are available. The app supports multiple AI platforms (Google, OpenAI, Anthropic, DeepSeek) with various models for each platform. You can enable\u002Fdisable platforms and individual models based on your needs:\n\n```typescript\nplatforms: {\n  google: {\n    enabled: true,\n    models: {\n      'gemini-flash': {\n        enabled: true,\n        label: 'Gemini Flash',\n      },\n      'gemini-flash-thinking': {\n        enabled: true,\n        label: 'Gemini Flash Thinking',\n      },\n      'gemini-exp': {\n        enabled: false,\n        label: 'Gemini Exp',\n      },\n    },\n  },\n  openai: {\n    enabled: true,\n    models: {\n      'gpt-4o': {\n        enabled: false,\n        label: 'GPT-4o',\n      },\n      'o1-mini': {\n        enabled: false,\n        label: 'o1-mini',\n      },\n      'o1': {\n        enabled: false,\n        label: 'o1',\n      },\n    },\n  },\n  anthropic: {\n     enabled: true,\n    models: {\n      'claude-3-7-sonnet-latest': {\n        enabled: false,\n        label: 'Claude 3.7 Sonnet',\n      },\n      'claude-3-5-haiku-latest': {\n        enabled: false,\n        label: 'Claude 3.5 Haiku',\n      },\n    },\n  },\n  deepseek: {\n    enabled: true,\n    models: {\n      'chat': {\n        enabled: false,\n        label: 'DeepSeek V3',\n      },\n      'reasoner': {\n        enabled: false,\n        label: 'DeepSeek R1',\n      },\n    },\n  },\n  openrouter: {\n    enabled: true,\n    models: {\n      'openrouter\u002Fauto': {\n        enabled: false,\n        label: 'Auto',\n      },\n    },\n  },\n}\n```\n\nFor each platform:\n\n- `enabled`: Controls whether the platform is available\n- For each model:\n  - `enabled`: Controls whether the specific model is selectable\n  - `label`: The display name shown in the UI\n\nDisabled models will appear grayed out in the UI but remain visible to show all available options. This allows users to see the full range of available models while clearly indicating which ones are currently accessible.\n\nTo modify these settings, update the values in `lib\u002Fconfig.ts`. The changes will take effect after restarting the development server.\n\n### OpenRouter Integration\n\nOpenRouter provides access to various AI models through a unified API. By default, it's set to 'auto' mode which automatically selects the most suitable model, but you can configure it to use specific models of your choice by modifying the models section in the configuration.\n\n### Important Note for Reasoning Models\n\nWhen using advanced reasoning models like OpenAI's o1 or DeepSeek Reasoner, you may need to increase the serverless function duration limit as these models typically take longer to generate comprehensive reports. The default duration might not be sufficient.\n\nFor Vercel deployments, you can increase the duration limit in your `vercel.json`:\n\n```json\n{\n  \"functions\": {\n    \"app\u002Fapi\u002Freport\u002Froute.ts\": {\n      \"maxDuration\": 120\n    }\n  }\n}\n```\n\nOr modify the duration in your route file:\n\n```typescript\n\u002F\u002F In app\u002Fapi\u002Freport\u002Froute.ts\nexport const maxDuration = 120 \u002F\u002F Set to 120 seconds or higher\n```\n\nNote: The maximum duration limit may vary based on your hosting platform and subscription tier.\n\n### Local Models with Ollama\n\nThe app supports local model inference through Ollama integration. You can:\n\n1. Install [Ollama](https:\u002F\u002Follama.ai\u002F) on your machine\n2. Pull your preferred models using `ollama pull model-name`\n3. Configure the model in `lib\u002Fconfig.ts`:\n\n```typescript\nplatforms: {\n  ollama: {\n    enabled: true,\n    models: {\n      'your-model-name': {\n        enabled: true,\n        label: 'Your Model Display Name'\n      }\n    }\n  }\n}\n```\n\nLocal models through Ollama bypass rate limiting since they run on your machine. This makes them perfect for development, testing, or when you need unlimited generations.\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 20+\n- npm, yarn, pnpm, or bun\n\n### Installation\n\n1. Clone the repository:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbtahir\u002Fopen-deep-research\ncd open-deep-research\n```\n\n2. Install dependencies:\n\n```bash\nnpm install\n# or\nyarn install\n# or\npnpm install\n# or\nbun install\n```\n\n3. Create a `.env.local` file in the root directory:\n\n```env\n# Google Gemini Pro API key (required for AI report generation)\nGEMINI_API_KEY=your_gemini_api_key\n\n# OpenAI API key (optional - required only if OpenAI models are enabled)\nOPENAI_API_KEY=your_openai_api_key\n\n# Anthropic API key (optional - required only if Anthropic models are enabled)\nANTHROPIC_API_KEY=your_anthropic_api_key\n\n# DeepSeek API key (optional - required only if DeepSeek models are enabled)\nDEEPSEEK_API_KEY=your_deepseek_api_key\n\n# OpenRouter API Key (Optional - if using OpenRouter as AI platform)\nOPENROUTER_API_KEY=\"your-openrouter-api-key\"\n\n# Upstash Redis (required for rate limiting)\nUPSTASH_REDIS_REST_URL=your_upstash_redis_url\nUPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token\n\n# Bing Search API (Optional - if using Bing as search provider)\nAZURE_SUB_KEY=\"your-azure-subscription-key\"\n\n# Google Custom Search API (Optional - if using Google as search provider)\nGOOGLE_SEARCH_API_KEY=\"your-google-search-api-key\"\nGOOGLE_SEARCH_CX=\"your-google-search-cx\"\n\n# EXA API Key (Optional - if using EXA as search provider)\nEXA_API_KEY=\"your-exa-api-key\"\n```\n\nNote: You only need to provide API keys for the platforms you plan to use. If a platform is enabled in the config but its API key is missing, those models will appear disabled in the UI.\n\n### Running the Application\n\nYou can run the application either directly on your machine or using Docker.\n\n#### Option 1: Traditional Setup\n\n1. Start the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\n2. Open [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000) in your browser.\n\n#### Option 2: Docker Setup\n\nIf you prefer using Docker, you can build and run the application in a container after setting up your environment variables:\n\n1. Build the Docker image:\n\n```bash\ndocker build -t open-deep-research:v1 .\n```\n\n2. Run the container:\n\n```bash\ndocker run -p 3000:3000 open-deep-research\n```\n\nThe application will be available at [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000).\n\n### Getting API Keys\n\n#### Azure Bing Search API\n\n1. Go to [Azure Portal](https:\u002F\u002Fportal.azure.com)\n2. Create a Bing Search resource\n3. Get the subscription key from \"Keys and Endpoint\"\n\n#### Google Custom Search API\n\nYou'll need two components to use Google Custom Search:\n\n1. **Get API Key**:\n\n   - Visit [Get a Key](https:\u002F\u002Fdevelopers.google.com\u002Fcustom-search\u002Fv1\u002Fintroduction) page\n   - Follow the prompts to get your API key\n   - Copy it for the `GOOGLE_SEARCH_API_KEY` environment variable\n\n2. **Get Search Engine ID (CX)**:\n   - Visit [Programmable Search Engine Control Panel](https:\u002F\u002Fprogrammablesearchengine.google.com\u002Fcontrolpanel\u002Fcreate)\n   - Create a new search engine\n   - After creation, find your Search Engine ID in the \"Overview\" page's \"Basic\" section\n   - Copy the ID (this is the `cx` parameter) for the `GOOGLE_SEARCH_CX` environment variable\n\n#### EXA API Key\n\n1. Visit [EXA Platform](https:\u002F\u002Fexa.ai\u002F)\n2. Sign up or log in to your account\n3. Go to API Keys section\n4. Create a new API key\n\n#### Google Gemini API Key\n\n1. Visit [Google AI Studio](https:\u002F\u002Fmakersuite.google.com\u002Fapp\u002Fapikey)\n2. Create an API key\n3. Copy the API key\n\n#### OpenAI API Key\n\n1. Visit [OpenAI Platform](https:\u002F\u002Fplatform.openai.com)\n2. Sign up or log in to your account\n3. Go to API Keys section\n4. Create a new API key\n\n#### Anthropic API Key\n\n1. Visit [Anthropic Console](https:\u002F\u002Fconsole.anthropic.com)\n2. Sign up or log in to your account\n3. Go to API Keys section\n4. Create a new API key\n\n#### DeepSeek API Key\n\n1. Visit [DeepSeek Platform](https:\u002F\u002Fplatform.deepseek.com)\n2. Sign up or log in to your account\n3. Go to API Keys section\n4. Create a new API key\n\n#### OpenRouter API Key\n\n1. Visit [OpenRouter Platform](https:\u002F\u002Fopenrouter.ai\u002F)\n2. Sign up or log in to your account\n3. Go to API Keys section\n4. Create a new API key\n\n#### Upstash Redis\n\n1. Sign up at [Upstash](https:\u002F\u002Fupstash.com)\n2. Create a new Redis database\n3. Copy the REST URL and REST Token\n\n## Tech Stack\n\n- [Next.js 15](https:\u002F\u002Fnextjs.org\u002F) - React framework\n- [TypeScript](https:\u002F\u002Fwww.typescriptlang.org\u002F) - Type safety\n- [Tailwind CSS](https:\u002F\u002Ftailwindcss.com\u002F) - Styling\n- [shadcn\u002Fui](https:\u002F\u002Fui.shadcn.com\u002F) - UI components\n- [JinaAI](https:\u002F\u002Fjina.ai\u002F) - Content extraction\n- [Azure Bing Search](https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fbing\u002Fapis\u002Fbing-web-search-api) - Web search\n- [Google Custom Search](https:\u002F\u002Fdevelopers.google.com\u002Fcustom-search\u002Fv1\u002Foverview) - Web search\n- [Upstash Redis](https:\u002F\u002Fupstash.com\u002F) - Rate limiting\n- [jsPDF](https:\u002F\u002Fgithub.com\u002Fparallax\u002FjsPDF) & [docx](https:\u002F\u002Fgithub.com\u002Fdolanmiu\u002Fdocx) - Document generation\n\nThe app will use the configured provider (default: Google) for all searches. You can switch providers by updating the `provider` value in the config file.\n\n## Demo\n\nTry it out at: [Open Deep Research](https:\u002F\u002Fopendeepresearch.vercel.app\u002F)\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n## License\n\n[MIT](https:\u002F\u002Fgithub.com\u002Fbtahir\u002Fopen-deep-research\u002Fblob\u002Fmain\u002FLICENSE)\n\n## Acknowledgments\n\n- Inspired by Google's Gemini Deep Research feature\n- Built with amazing open source tools and APIs\n\n## Follow Me\n\nIf you're interested in following all the random projects I'm working on, you can find me on Twitter:\n\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fdeepwhitman?style=social)](https:\u002F\u002Fx.com\u002Fdeepwhitman)\n","Open Deep Research 是一个开源的研究助手，能够基于网页搜索结果生成由AI驱动的综合报告。其核心功能包括使用Google或Bing API获取搜索结果、通过JinaAI提取内容以及利用多种AI模型（如Gemini、GPT-4等）生成详细的报告，并支持将生成的报告保存到个人知识库中以供日后参考。此外，该应用还允许用户上传本地文件（TXT、PDF、DOCX格式）进行分析与报告生成。Open Deep Research 适合需要高效整合网络资源和本地文档来完成研究任务并自动生成高质量报告的各种场景，特别是对于研究人员、学生以及任何需要频繁撰写报告的专业人士而言是一个强大且灵活的工具。","2026-06-11 03:47:54","high_star"]