gpt-researcher

GPT Researcher is an autonomous deep research agent that conducts web and local research, producing detailed reports with citations. Use this skill when helping developers understand, extend, debug, or integrate with GPT Researcher - including adding features, understanding the architecture, working with the API, customizing research workflows, adding new retrievers, integrating MCP data sources, or troubleshooting research pipelines.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "gpt-researcher" with this command: npx skills add tokyofloripa/gpt-researcher/tokyofloripa-gpt-researcher-gpt-researcher

Running Research (Usage)

Prerequisites

  • Venv: ~/.local/share/gpt-researcher/venv/ (run setup.sh if missing)
  • Config: ~/.config/gpt-researcher/config.json
  • API key: OPENAI_API_KEY must be set in ~/cc/.env
  • First-time setup: bash ~/.claude/skills/gpt-researcher/scripts/setup.sh
  • Enhancement (profiles): bash ~/.claude/skills/gpt-researcher/scripts/enhance.sh

Research Profiles

ProfileRetrieversDeep (BxD)SourcesCostTime
quick1 free2x110-15~$0.1030s
standard4 free4x230-50~$0.502min
thorough4 free + 2 premium6x380-150~$310min
government4 free + 4 premium8x4200-500~$10-2030min+

Profiles auto-degrade: if a premium key is missing, that retriever is skipped.

Commands

Standard Research Report (~2 min)

bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" research_report

Deep Research with profile (~varies)

bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" deep --profile standard
bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" deep --profile thorough
bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" deep --profile government

Quick smoke test (~30s, ~$0.10)

bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" research_report --profile quick

Multi-Agent Research (7-agent LangGraph pipeline, magazine-quality reports)

# Autonomous mode — runs all 7 agents end-to-end
bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" multi --profile standard

# Human review mode — pauses after outline for approval
bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" multi --profile thorough --review

# Quick smoke test (~3-5 min, ~$0.50)
bash ~/.claude/skills/gpt-researcher/scripts/research.sh "QUERY" multi --profile quick

Multi-agent profiles:

ProfileSectionsModelGuidelinesTimeCost
quick3gpt-4o-minioff3-5 min~$0.50
standard5gpt-4.1APA + refs8-15 min~$2-4
thorough7gpt-4.1APA + refs + cross-ref15-30 min~$5-10
government9gpt-4.1full30-60 min~$10-20

Output: ~/cc/output/research/<date>-<slug>/ with report.md, metadata.json, and optionally report.pdf/docx.

Pipeline: Browser → Planner → [Human Review] → Parallel Researchers → Reviewer/Reviser → Writer → Publisher.

All report types: research_report, detailed_report, deep, outline_report, resource_report, multi

Output Format (JSON)

All scripts output JSON to stdout:

{
  "report": "# Full markdown report with citations...",
  "sources": ["https://...", "https://..."],
  "source_count": 23,
  "costs_usd": 0.12,
  "elapsed_seconds": 145.3,
  "report_type": "research_report",
  "query": "original query",
  "profile": "standard",
  "config_path": "/path/to/profile.json"
}

Parallel with last60days

For maximum research coverage, dispatch both skills as parallel Task agents:

  • Task 1: GPT Researcher deep mode (deep web research, academic sources, 50+ sources)
  • Task 2: /last60days (engagement-scored social signals: Reddit, X, HN, GitHub, YouTube) Synthesize both outputs — they provide complementary perspectives.

Operational Commands

Health check (imports, config, keys, profile readiness):

bash ~/.claude/skills/gpt-researcher/scripts/health.sh

Enhancement setup (create profiles, install extras):

bash ~/.claude/skills/gpt-researcher/scripts/enhance.sh

Sync upstream (merge upstream changes safely):

bash ~/.claude/skills/gpt-researcher/scripts/sync-upstream.sh

Premium Retrievers

RetrieverEnv VarUsed InSign-up
TavilyTAVILY_API_KEYthorough, governmenttavily.com
ExaEXA_API_KEYthorough, governmentexa.ai
SerperSERPER_API_KEYgovernmentserper.dev
BingBING_API_KEYgovernmentAzure portal

Add keys to ~/cc/.env. Run health.sh to verify.


GPT Researcher Development Skill

GPT Researcher is an LLM-based autonomous agent using a planner-executor-publisher pattern with parallelized agent work for speed and reliability.

Quick Start

Basic Python Usage

from gpt_researcher import GPTResearcher
import asyncio

async def main():
    researcher = GPTResearcher(
        query="What are the latest AI developments?",
        report_type="research_report",  # or detailed_report, deep, outline_report
        report_source="web",            # or local, hybrid
    )
    await researcher.conduct_research()
    report = await researcher.write_report()
    print(report)

asyncio.run(main())

Run Servers

# Backend
python -m uvicorn backend.server.server:app --reload --port 8000

# Frontend
cd frontend/nextjs && npm install && npm run dev

Key File Locations

NeedPrimary FileKey Classes
Main orchestratorgpt_researcher/agent.pyGPTResearcher
Research logicgpt_researcher/skills/researcher.pyResearchConductor
Report writinggpt_researcher/skills/writer.pyReportGenerator
All promptsgpt_researcher/prompts.pyPromptFamily
Configurationgpt_researcher/config/config.pyConfig
Config defaultsgpt_researcher/config/variables/default.pyDEFAULT_CONFIG
API serverbackend/server/app.pyFastAPI app
Search enginesgpt_researcher/retrievers/Various retrievers

Architecture Overview

User Query → GPTResearcher.__init__()
                │
                ▼
         choose_agent() → (agent_type, role_prompt)
                │
                ▼
         ResearchConductor.conduct_research()
           ├── plan_research() → sub_queries
           ├── For each sub_query:
           │     └── _process_sub_query() → context
           └── Aggregate contexts
                │
                ▼
         [Optional] ImageGenerator.plan_and_generate_images()
                │
                ▼
         ReportGenerator.write_report() → Markdown report

For detailed architecture diagrams: See references/architecture.md


Core Patterns

Adding a New Feature (8-Step Pattern)

  1. Config → Add to gpt_researcher/config/variables/default.py
  2. Provider → Create in gpt_researcher/llm_provider/my_feature/
  3. Skill → Create in gpt_researcher/skills/my_feature.py
  4. Agent → Integrate in gpt_researcher/agent.py
  5. Prompts → Update gpt_researcher/prompts.py
  6. WebSocket → Events via stream_output()
  7. Frontend → Handle events in useWebSocket.ts
  8. Docs → Create docs/docs/gpt-researcher/gptr/my_feature.md

For complete feature addition guide with Image Generation case study: See references/adding-features.md

Adding a New Retriever

# 1. Create: gpt_researcher/retrievers/my_retriever/my_retriever.py
class MyRetriever:
    def __init__(self, query: str, headers: dict = None):
        self.query = query
    
    async def search(self, max_results: int = 10) -> list[dict]:
        # Return: [{"title": str, "href": str, "body": str}]
        pass

# 2. Register in gpt_researcher/actions/retriever.py
case "my_retriever":
    from gpt_researcher.retrievers.my_retriever import MyRetriever
    return MyRetriever

# 3. Export in gpt_researcher/retrievers/__init__.py

For complete retriever documentation: See references/retrievers.md


Configuration

Config keys are lowercased when accessed:

# In default.py: "SMART_LLM": "gpt-4o"
# Access as: self.cfg.smart_llm  # lowercase!

Priority: Environment Variables → JSON Config File → Default Values

For complete configuration reference: See references/config-reference.md


Common Integration Points

WebSocket Streaming

class WebSocketHandler:
    async def send_json(self, data):
        print(f"[{data['type']}] {data.get('output', '')}")

researcher = GPTResearcher(query="...", websocket=WebSocketHandler())

MCP Data Sources

researcher = GPTResearcher(
    query="Open source AI projects",
    mcp_configs=[{
        "name": "github",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-github"],
        "env": {"GITHUB_TOKEN": os.getenv("GITHUB_TOKEN")}
    }],
    mcp_strategy="deep",  # or "fast", "disabled"
)

For MCP integration details: See references/mcp.md

Deep Research Mode

researcher = GPTResearcher(
    query="Comprehensive analysis of quantum computing",
    report_type="deep",  # Triggers recursive tree-like exploration
)

For deep research configuration: See references/deep-research.md


Error Handling

Always use graceful degradation in skills:

async def execute(self, ...):
    if not self.is_enabled():
        return []  # Don't crash
    
    try:
        result = await self.provider.execute(...)
        return result
    except Exception as e:
        await stream_output("logs", "error", f"⚠️ {e}", self.websocket)
        return []  # Graceful degradation

Critical Gotchas

❌ Mistake✅ Correct
config.MY_VARconfig.my_var (lowercased)
Editing pip-installed packagepip install -e .
Forgetting async/awaitAll research methods are async
websocket.send_json() on NoneCheck if websocket: first
Not registering retrieverAdd to retriever.py match statement

Reference Documentation

TopicFile
System architecture & diagramsreferences/architecture.md
Core components & signaturesreferences/components.md
Research flow & data flowreferences/flows.md
Prompt systemreferences/prompts.md
Retriever systemreferences/retrievers.md
MCP integrationreferences/mcp.md
Deep research modereferences/deep-research.md
Multi-agent systemreferences/multi-agents.md
Adding features guidereferences/adding-features.md
Advanced patternsreferences/advanced-patterns.md
REST & WebSocket APIreferences/api-reference.md
Configuration variablesreferences/config-reference.md

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Research

gpt-researcher

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

openclaw-version-monitor

监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明

Archived SourceRecently Updated
Coding

ask-claude

Delegate a task to Claude Code CLI and immediately report the result back in chat. Supports persistent sessions with full context memory. Safe execution: no data exfiltration, no external calls, file operations confined to workspace. Use when the user asks to run Claude, delegate a coding task, continue a previous Claude session, or any task benefiting from Claude Code's tools (file editing, code analysis, bash, etc.).

Archived SourceRecently Updated
Coding

ai-dating

This skill enables dating and matchmaking workflows. Use it when a user asks to make friends, find a partner, run matchmaking, or provide dating preferences/profile updates. The skill should execute `dating-cli` commands to complete profile setup, task creation/update, match checking, contact reveal, and review.

Archived SourceRecently Updated