open-deep-research

open-deep-research

Open source alternative to Gemini Deep Research. Generate reports with AI based on search results.

Stars: 174

Visit
 screenshot

Open Deep Research is an open-source tool designed to generate AI-powered reports from web search results efficiently. It combines Bing Search API for search results retrieval, JinaAI for content extraction, and customizable report generation. Users can customize settings, export reports in multiple formats, and benefit from rate limiting for stability. The tool aims to streamline research and report creation in a user-friendly platform.

README:

Open Deep Research

Open Deep Research Demo

An open-source alternative to Gemini Deep Research, built to generate AI-powered reports from web search results with precision and efficiency.

This app functions in three key steps:

  1. Search Results Retrieval: Using the Bing Search API, the app fetches comprehensive search results for the specified search term.
  2. Content Extraction: Leveraging JinaAI, it retrieves and processes the contents of the selected search results, ensuring accurate and relevant information.
  3. Report Generation: With the curated search results and extracted content, the app generates a detailed report tailored to your custom prompts, providing insightful and synthesized output.

Open 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 (change the model, prompt, update rate limits and number of results both fetched and selected etc.)

Features

  • 🔍 Web search with time filtering
  • 📄 Content extraction from web pages
  • 🤖 AI-powered report generation
  • 📊 Multiple export formats (PDF, Word, Text)
  • ⚡ Rate limiting for stability
  • 📱 Responsive design

Demo

Try it out at: Open Deep Research

Configuration

The app's settings can be customized through the configuration file at lib/config.ts. Here are the key parameters you can adjust:

Rate Limits

Control rate limiting and the number of requests allowed per minute for different operations:

rateLimits: {
  enabled: true,         // Enable/disable rate limiting (set to false to skip Redis setup)
  search: 5,            // Search requests per minute
  contentFetch: 20,     // Content fetch requests per minute
  reportGeneration: 5,  // Report generation requests per minute
}

Note: 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.

Search Settings

Customize the search behavior:

search: {
  resultsPerPage: 10,           // Number of search results to fetch
  maxSelectableResults: 3,      // Maximum results users can select for reports
  safeSearch: 'Moderate',       // SafeSearch setting ('Off', 'Moderate', 'Strict')
  market: 'en-US',             // Search market/region
}

AI Platform Settings

Configure which AI platforms and models are available:

platforms: {
  google: {
    enabled: true,
    models: {
      'gemini-flash': {
        enabled: true,
        label: 'Gemini Flash',
      },
      'gemini-flash-thinking': {
        enabled: true,
        label: 'Gemini Flash Thinking',
      },
      'gemini-exp': {
        enabled: false,
        label: 'Gemini Exp',
      },
    },
  },
  openai: {
    enabled: true,
    models: {
      'gpt-4o': {
        enabled: false,
        label: 'GPT-4o',
      },
      'o1-mini': {
        enabled: false,
        label: 'O1 Mini',
      },
      'o1': {
        enabled: false,
        label: 'O1',
      },
    },
  },
  anthropic: {
    enabled: true,
    models: {
      'sonnet-3.5': {
        enabled: false,
        label: 'Claude 3 Sonnet',
      },
      'haiku-3.5': {
        enabled: false,
        label: 'Claude 3 Haiku',
      },
    },
  },
}

For each platform:

  • enabled: Controls whether the platform is available
  • For each model:
    • enabled: Controls whether the specific model is selectable
    • label: The display name shown in the UI

Disabled models will appear grayed out in the UI but remain visible to show all available options.

To modify these settings, update the values in lib/config.ts. The changes will take effect after restarting the development server.

Getting Started

Prerequisites

  • Node.js 18+
  • npm, yarn, pnpm, or bun

Installation

  1. Clone the repository:
git clone https://github.com/btahir/open-deep-research
cd open-deep-research
  1. Install dependencies:
npm install
# or
yarn install
# or
pnpm install
# or
bun install
  1. Create a .env.local file in the root directory:
# Azure Bing Search API key (required for web search)
AZURE_SUB_KEY=your_azure_subscription_key

# Google Gemini Pro API key (required for AI report generation)
GEMINI_API_KEY=your_gemini_api_key

# OpenAI API key (optional - required only if OpenAI models are enabled)
OPENAI_API_KEY=your_openai_api_key

# Anthropic API key (optional - required only if Anthropic models are enabled)
ANTHROPIC_API_KEY=your_anthropic_api_key

# Upstash Redis (required for rate limiting)
UPSTASH_REDIS_REST_URL=your_upstash_redis_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token

Note: 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.

  1. Start the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
  1. Open http://localhost:3000 in your browser.

Getting API Keys

Azure Bing Search API

  1. Go to Azure Portal
  2. Create a Bing Search resource
  3. Get the subscription key from "Keys and Endpoint"

Google Gemini Pro API

  1. Visit Google AI Studio
  2. Create an API key
  3. Copy the API key

OpenAI API Key

  1. Visit OpenAI Platform
  2. Sign up or log in to your account
  3. Go to API Keys section
  4. Create a new API key

Anthropic API Key

  1. Visit Anthropic Console
  2. Sign up or log in to your account
  3. Go to API Keys section
  4. Create a new API key

Upstash Redis

  1. Sign up at Upstash
  2. Create a new Redis database
  3. Copy the REST URL and REST Token

Tech Stack

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

Acknowledgments

  • Inspired by Google's Gemini Deep Research feature
  • Built with amazing open source tools and APIs

Follow Me

If you're interested in following all the random projects I'm working on, you can find me on Twitter:

Twitter Follow

For Tasks:

Click tags to check more tools for each tasks

For Jobs:

Alternative AI tools for open-deep-research

Similar Open Source Tools

For similar tasks

For similar jobs