AI Link Summarizer
approvedby laroy-sh
Right-click links in the editor and summarize them with Gemini, OpenAI, or Claude. - This plugin has not been manually reviewed by Obsidian staff.
AI Link Summarizer (Obsidian Community Plugin)
Right-click a URL or Markdown link in the editor and run Summarize link.
AI Link Summarizer sends the target URL to Gemini, OpenAI, or Claude, then inserts a concise summary as an [!summary] callout above the detected link.
Auth-gated pages (LinkedIn, X, Medium, ...) are read through a logged-in browser session you sign in to once, and whole folders of link notes can be summarized in one batch.
Features
- Detects URLs from:
- selected raw URLs (
https://...) - selected Markdown links (
[label](https://...)) - Markdown/raw link under cursor on right-click
- selected raw URLs (
- Adds editor context menu action: Summarize link
- Batch mode: right-click a folder → Summarize link notes in folder (also available as a command for the current folder)
- appends an
[!summary]callout to each link-only note; already-summarized notes are skipped, so re-runs resume where they stopped - with Generate title and tags enabled (default), also renames each note to an AI-generated title (from its summary) and merges topic tags into frontmatter — best-effort, so the summary still lands if titling fails
- waits out per-minute provider rate limits automatically and stops early when a daily quota is exhausted
- per-note failure reasons are written to
AI Link Summarizer batch log.mdin the vault root (overwritten each run)
- appends an
- Inbox auto-ingest: link-only notes dropped into a watched folder are summarized (and titled/tagged) automatically, reusing the same per-note pipeline as batch mode
- runs both when a note is created in the folder and in a one-time startup sweep of notes already sitting there
- notes are held in place — never moved — for a later review pass
- non-link notes and already-summarized notes are skipped
- Fetch modes (how page content is obtained):
provider— the LLM provider fetches the URL itselfbrowser— the page is rendered in a hidden, logged-in, persistent webview session (reads auth-gated pages)auto(default) — browser session for configured auth-gated hosts, provider for everything else
- Browser session login: Log in to sites for browser fetch opens a modal with one-click buttons for each configured auth-gated host plus a free-form URL bar; sign in once and the session is remembered
- Provider support:
- Gemini via
@google/genai+urlContext - OpenAI via
openai+web_search_preview - Claude via
@anthropic-ai/sdk(fetches page content locally viarequestUrl)
- Gemini via
- Inserts the summary as an
[!summary]callout above the link's line (optional timestamp prefix) — the same format batch mode uses - Settings:
- Provider (Gemini/OpenAI/Claude)
- Separate settings blocks for Summary, Gemini, OpenAI, and Claude
- Gemini API key + model
- OpenAI API key + model
- Claude API key + model
- Fetch mode (auto / provider-native / browser session) and the auth-gated host list
- Gemini model presets:
gemini-3.5-flash,gemini-3.1-flash-lite(with free-tier quota notes) - OpenAI model presets:
gpt-5.4-mini,chat-latest(GPT-5.5 Instant) - Claude model presets:
claude-sonnet-4-6,claude-haiku-4-5-20251001 - Summary length range (characters), format like
200-600(minimum200) - Private-network URL policy toggle (advanced)
- Request timeout (ms), range
5000-120000 - One-click clear stored API keys (and command:
clear-api-keys) - Custom prompt (optional)
- Include timestamp
- Generate title and tags in batch runs (default on)
- Auto-summarize new inbox notes (default on) — auto-ingest link notes created in, or found at startup in, the inbox folder
- Inbox folder watched for auto-ingest (vault-relative, default
_inbox)
- Notices + clean errors for:
- no URL found
- invalid URL
- blocked private-network URL
- provider request timeout
- provider request failure (with real HTTP status mapping: invalid key, rate limit, exhausted quota, server error)
- unsupported/unreadable page
- auth-gated page that needs a browser login
- no active editor
Build
- Install dependencies:
npm install - Build once:
npm run build - Or watch during development:
npm run dev
Pre-submit Checklist
Run this before tagging a release or updating your Obsidian Community Plugins PR:
npm run preflight
This runs:
- Type check (
npm run check) - Obsidian lint guardrails (
npm run lint:obsidian) - Production build (
npm run build)
If your submission PR in obsidianmd/obsidian-releases references this plugin, keep the PR body Repo URL aligned with the current repository:
https://github.com/laroy-sh/obsidian-ai-link-summarizer
Install In Obsidian
-
Build the plugin so
main.jsexists. -
Copy these files to your vault plugin folder:
manifest.jsonmain.jsstyles.css(empty here, but included for compatibility)
-
Target folder:
<your-vault>/.obsidian/plugins/ai-link-summarizer/
-
In Obsidian:
- Settings -> Community plugins
- Enable AI Link Summarizer
- Open plugin settings and set provider + API key + model
How The Context Menu Hook Works
The plugin registers the official workspace event:
this.registerEvent(
this.app.workspace.on("editor-menu", (menu, editor) => {
// ...
})
);
When you right-click in an editor, Obsidian provides the current menu and editor.
The plugin extracts a URL from the selection or link under cursor. If found, it adds Summarize link to that menu.
Security Notes
- The plugin sends only the target URL and your prompt settings to the selected provider.
- API keys are stored locally in Obsidian plugin data and are not encrypted by this plugin.
- Private-network URLs (
localhost,*.local, and private/link-local IPs) are blocked by default. - You can clear all stored API keys from plugin settings or via the command Clear stored API keys.
- Non-overridable prompt constraints are enforced (single paragraph, full sentence ending, configured length range, no secrets disclosure).
Known Limitations
- Model output is probabilistic and may be inaccurate or incomplete.
- The plugin inserts plain text only; it does not execute returned code or commands.
Releases (GitHub Actions)
Pushing a version tag like 0.3.2 triggers a workflow that runs a security audit, builds the plugin, and uploads release assets for that version:
main.jsmanifest.jsonversions.jsonstyles.cssobsidian-ai-link-summarizer-<version>.zip
To publish:
git tag <version>
git push origin <version>
Install From GitHub Release
- Open the GitHub Release for your version tag.
- Download either:
- the zip (
obsidian-ai-link-summarizer-<version>.zip), or - the individual files (
main.js,manifest.json,styles.css,versions.json)
- the zip (
- Extract/copy into:
<your-vault>/.obsidian/plugins/ai-link-summarizer/
- Reload/enable the plugin in Obsidian.
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.