Process, translate and refine selected text with any OpenAI-compatible LLM directly in the editor.
Process, translate and refine text in your Obsidian notes with LLMs, directly in the editor
This is the Obsidian edition of LLM Text Assistant — the browser extension (Chrome/Firefox/Thunderbird) by the same author, with the same actions, prompts and streaming behaviour, adapted to the Obsidian editor.
{TARGET_LANGUAGE} placeholder for translation)Install the plugin directly from the Obsidian Community directory:
👉 https://community.obsidian.md/plugins/llm-text-assistant
Or from within Obsidian: Settings → Community Plugins → Browse → search for LLM Text Assistant → Install.
Then:
main.js, styles.css and manifest.json from the latest release<your-vault>/.obsidian/plugins/llm-text-assistant/ and copy the three files into it — or use Obsidian 1.8+: Settings → Community Plugins → Install from filesOpen Settings → LLM Text Assistant:
| Setting | Description |
|---|---|
| API URL | Chat Completions endpoint, e.g. https://api.openai.com/v1/chat/completions |
| API Key | Your API key (leave empty for local endpoints) |
| Model | e.g. gpt-4o-mini, llama3.1, mistral |
| Temperature | Creativity (0–2, default: 0.3) |
| Timeout (seconds) | Max wait time per attempt (default: 60). Retries twice on timeout. |
| Target language (Translate) | Language to translate into (e.g. English, German, French) |
| System prompts | Per-action instructions, e.g. {TARGET_LANGUAGE} placeholder for translation |
| Custom actions | Your own actions with emoji, title and prompt |
| Free prompt | Show/hide the 💬 Free prompt entry |
Hotkeys: every action appears in Obsidian's command palette — assign hotkeys under Settings → Hotkeys.
| Provider | URL | API Key |
|---|---|---|
| Ollama | http://localhost:11434/v1/chat/completions |
leave empty |
| LM Studio | http://localhost:1234/v1/chat/completions |
leave empty |
Ctrl/Cmd+P), the ribbon icon ✨ or its action menuOpen it via the context menu or the action menu. Your current selection is loaded as context — give instructions one after another, e.g. "Improve the text" or "Translate into English". ✓ Apply writes the result into the editor, ⧉ copies it to the clipboard, ↺ Reset restarts the chat with fresh context.
.obsidian/plugins/llm-text-assistant/data.json) and only sent as Authorization header to the configured endpointPrerequisites: Node.js ≥ 20 and npm.
npm install
npm run build # type-check (tsc) + bundle main.js
npm run typecheck # TypeScript check only
npm run smoke # core tests without an Obsidian runtime (streaming, retry, abort, i18n)
npm run dev # watch mode for development
The smoke tests mock Obsidian's requestUrl via a Node loader hook (scripts/smoke-hook.mjs) — no Obsidian installation required. See AGENTS.md for conventions and release details.
We welcome contributions from the community!
For code changes by third parties, please coordinate with us via email at [email protected] before making any changes.
You can also:
If you find this project useful and would like to support its continued development, you can buy me a coffee! Your support helps me dedicate more time and resources to improving the application and adding new features. While financial support is not required, it is greatly appreciated and helps ensure the project's ongoing maintenance and development.
📄 License: GNU GENERAL PUBLIC LICENSE Version 3 (see LICENSE file)