ReallyGood Research

approved

by reallygood83

Run NotebookLM/Tavily-style deep research and publish Markdown plus HTML into your vault. - This plugin has not been manually reviewed by Obsidian staff.

1 stars481 downloadsUpdated 28d agoMIT

ReallyGood Research

Obsidian/CLI deep-research publisher for NotebookLM MCP and Tavily.

BRAT install

  1. Install the BRAT Obsidian plugin.
  2. Add this repository: reallygood83/reallygood-research.
  3. Enable ReallyGood Research in Obsidian.
  4. Run ReallyGood Research: Open deep research console.

The plugin is desktop-only because it writes files directly into your local vault.

Privacy and permissions

ReallyGood Research does not include client-side telemetry or ads.

The plugin uses network requests only when you run a provider that needs them:

  • Tavily requests are sent to Tavily's API to create research reports, search, extract, and test usage.
  • NotebookLM requests are handled by your configured local notebooklm-mcp command, which uses your own NotebookLM/Google login.
  • Optional AI synthesis calls a local CLI you select, such as Claude Code, Codex, Gemini, Grok, Antigravity, or a custom command.

The plugin accesses files outside your vault only for local configuration and tools:

  • Tavily keys are saved to ~/.reallygood-research.env, not to Obsidian settings.
  • NotebookLM and AI provider commands may run local CLIs installed on your machine.

Tavily requires your own API key. NotebookLM and optional AI synthesis require accounts or local CLI sessions that you manage outside this plugin.

Obsidian ribbon buttons

When the plugin is enabled, it automatically adds two ribbon buttons:

  • ReallyGood Research: opens the deep research console.
  • Open ReallyGood HTML report: opens the HTML report matching the active generated Markdown note, or opens the active HTML report directly.

After updating through BRAT, toggle the plugin off and on or reload Obsidian if the new ribbon button does not appear immediately.

Quick start

Tavily only

This is the easiest path after saving a Tavily API key.

  1. Paste a Tavily API key into Tavily API key.
  2. Click Save key.
  3. Keep Providers as tavily.
  4. Choose an output folder.
  5. Run a research topic.

The plugin writes:

  • a Markdown note
  • an optional HTML report
  • JSON history under .deep-research-publisher/

The key can be saved from the research console or from plugin settings. It is written to ~/.reallygood-research.env, not to Obsidian settings. Tavily reports use the Tavily Research API; keyless Search output is not used for research notes.

NotebookLM

NotebookLM uses uvx by default, so users do not need to install nlm before clicking Login NotebookLM.

Default commands:

NotebookLM login command: uvx --from notebooklm-mcp-cli nlm login
NotebookLM MCP command: uvx --from notebooklm-mcp-cli notebooklm-mcp

For faster repeat use, the plugin also shows this optional install command in the console and settings as Copy install.

uv tool install notebooklm-mcp-cli

After installing permanently, advanced users may change the settings to:

NotebookLM login command: nlm login
NotebookLM MCP command: notebooklm-mcp

Click Login NotebookLM in the console or Open login popup in settings, approve the browser login, then set Providers to either:

notebooklm

or:

notebooklm,tavily

If uv is not on the Obsidian shell path, use the full path to uvx in those two command fields.

AI synthesis

AI synthesis is optional. It uses a local CLI that the user has already logged into, not an API key stored by this plugin.

Supported built-in choices:

  • codex
  • claude
  • gemini
  • grok
  • antigravity
  • custom

Leave AI provider as None if no local AI CLI is installed or logged in.

The plugin searches common macOS/Linux paths, NVM/Bun/Cargo user bins, and Windows CLI names such as .exe, .cmd, and .ps1. On Windows it also checks common npm/AppData install locations. For Antigravity, both agy and antigravity command names are supported.

Local checkout example

If you are developing against a local notebooklm-cli checkout, use commands like:

cd /path/to/notebooklm-cli && uv run nlm login
cd /path/to/notebooklm-cli && uv run notebooklm-mcp

On macOS Homebrew installs, Obsidian may not inherit /opt/homebrew/bin. In that case, use /opt/homebrew/bin/uv instead of uv.

CLI

node bin/deep-research.mjs run \
  --topic "Agentic AI vertical market" \
  --providers notebooklm,tavily \
  --vault-dir "/path/to/Obsidian/Vault/Research" \
  --html

Outputs:

  • Markdown note in the selected vault folder
  • optional HTML report
  • JSON history under .deep-research-publisher/

Use --mock only for local test output. Tavily mode always uses the Tavily Research API and requires TAVILY_API_KEY. NotebookLM mode uses the notebooklm-mcp stdio server from notebooklm-mcp-cli.

NotebookLM example with a custom MCP command:

node bin/deep-research.mjs run \
  --topic "미국 AI 에듀테크 트렌드" \
  --providers notebooklm \
  --vault-dir "/path/to/Obsidian/Vault/Research" \
  --html \
  --notebooklm-mcp-command "uvx --from notebooklm-mcp-cli notebooklm-mcp"

To save a Tavily API key locally:

node bin/deep-research.mjs setup tavily

The key is saved to ~/.reallygood-research.env with file mode 600. You can override the path with --env-path.

To synthesize the research with an AI subscription you already use, call a local CLI instead of storing an API key:

node bin/deep-research.mjs run \
  --topic "AI search workflow comparison" \
  --providers tavily \
  --vault-dir "/path/to/Obsidian/Vault/Research" \
  --html \
  --ai-provider claude

Supported built-in CLI providers are codex, claude, gemini, grok, and antigravity. The plugin resolves common Homebrew, local-bin, npm-global, Bun, Cargo, and NVM paths so Obsidian can find CLIs that your terminal can use. For any other logged-in CLI, use --ai-provider custom --ai-command "<command>". The research prompt is passed through stdin.

In the Obsidian plugin, choose AI provider from the console or settings. This uses your existing local CLI login/OAuth session; it does not ask for or store AI provider API keys.

MCP

The same package can run as a local stdio MCP server:

node /path/to/reallygood-research/bin/deep-research.mjs mcp

It exposes:

  • run_research
  • setup_tavily
  • tavily_search
  • tavily_extract

Example MCP server config shape:

{
  "mcpServers": {
    "reallygood-research": {
      "command": "node",
      "args": ["/path/to/reallygood-research/bin/deep-research.mjs", "mcp"]
    }
  }
}

run_research uses Tavily Research API output for saved reports. tavily_search and tavily_extract remain utility MCP tools, but they also require the configured Tavily API key; keyless mode is not supported.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.