Latest Update: Three commands now available — generate title from note, paste to new note, or paste & share to Gist. Auto version bump enabled.
A completely rewritten Obsidian plugin to generate note titles using multiple AI providers with optional Gist sharing and GFM formatting.
- Three Workflow Commands:
- Rename title & (optional) Gist share — Generate title for current note, optionally publish to Gist
- Paste & Share to Gist — Read clipboard, create new note, generate title, reformat to GFM, publish to GitHub Gist
- Paste to new note — Read clipboard, create new note, generate title (no GFM/Gist)
- Dynamic Model Loading with Search: Automatically detects and loads available models from your configured AI providers
- GFM Reformatting: Transform AI-generated content into clean GitHub Flavored Markdown (task lists, tables, fenced code blocks, strikethrough)
- Citation/Reference Cleaning: Strip citation markers from AI output (works with Perplexity, Semantic Scholar, etc.)
- Q&A Prefix Stripping: Remove Q&A patterns (Q:/Question: / A:/Answer:) from Perplexity-generated content
- Smart Duplicate Detection: AI-powered duplicate detection during GFM reformatting
- Gist Auto-Share: Automatically publish reformatted content to GitHub Gist with frontmatter tracking
- Multi-Provider AI: Choose from OpenAI, Anthropic, Google Gemini, or OpenRouter
- Intelligent Title Refinement: AI shortens titles while preserving meaning
- Mobile-First Design: All API calls use Obsidian's native
fetchAPI
- Install the BRAT plugin in Obsidian
- Open BRAT settings and click "Add Beta Plugin"
- Enter repository:
rlaksana/title-generator - Click "Add Plugin" and enable it
Having BRAT installation issues? Check our CDN Troubleshooting Guide for quick fixes.
- Ensure you have the latest version of Obsidian
- Install the plugin via the Community Plugins browser in Obsidian
- Enable the plugin in your settings
- Download the
main.jsandmanifest.jsonfiles from the latest GitHub Release - Place these files in your vault's
.obsidian/plugins/title-generator/directory - Reload Obsidian and enable the plugin
Open the command palette (Ctrl/Cmd + P) and search for one of:
| Command | Description |
|---|---|
| Rename title & (optional) Gist share | Generate title for current/selected note(s). Optional Gist share if enabled in settings. |
| Paste clipboard & share to Gist | Read clipboard → create new note → generate title → reformat GFM → publish to Gist → open note |
| Paste to new note | Read clipboard → create new note → generate title (normal flow, no GFM/Gist) |
| Copy title and Gist link | Copy formatted title + Gist URL from current note |
Right-click a note in the file explorer:
- "Rename title & (optional) Gist share" — Process single note
- "Rename N titles & (optional) Gist share" — Batch process multiple notes
When you run a command for the first time (or keys are missing), a popup will appear asking for your API keys:
- AI API Key — Required for all commands. Choose your provider and enter the key.
- GitHub PAT — Required only for Paste & Share to Gist command.
No need to navigate to Settings — keys are entered directly in the popup and saved automatically.
Open Settings → Forge to configure:
| Setting | Description | Default |
|---|---|---|
| AI Provider | Select AI service (OpenAI, Anthropic, Google, OpenRouter) | OpenAI |
| API Key | Your API key for the selected provider | (empty) |
| Model | AI model to use (auto-detected from provider) | Auto |
| Temperature | AI creativity level (0.0 = deterministic, 1.0 = creative) | 0.7 |
| Setting | Description | Default |
|---|---|---|
| Lower-case titles | Convert all titles to lowercase | false |
| Remove forbidden chars | Strip OS-forbidden characters from filenames | true |
| Max Title Length | Maximum characters for generated title | 200 |
| Max Content Length | Max characters sent to AI (for cost savings) | 2000 |
| Setting | Description | Default |
|---|---|---|
| Enable GFM reformatting | Transform content to GitHub Flavored Markdown | false |
| Strip citations | Remove citation markers [1], [^1], etc. | false |
| Strip Q&A prefix | Remove Q:/Question: and A:/Answer: patterns (Perplexity) | false |
| GFM Prompt | Custom prompt for GFM reformatting AI request | (default) |
| Setting | Description | Default |
|---|---|---|
| Enable Gist auto-share | Automatically publish to GitHub Gist after title generation | false |
| GitHub PAT | Personal Access Token with gist scope |
(empty) |
When enabled, the plugin transforms content using AI:
- Task Lists:
- [ ],- [x],[X]→ standardized- [ ]format - Tables: Normalizes separators, alignment markers (
:---,:---:,---:) - Code Blocks: Converts indented code (4+ spaces) to fenced
``` - Strikethrough:
<del>,<s>,<strike>→~~text~~ - URLs: Auto-links bare URLs with angle brackets
- HTML Sanitization: Removes dangerous tags while preserving safe structural HTML
AI-powered detection identifies and removes duplicate content during reformatting, including:
- Title-to-content duplication
- Consecutive duplicate paragraphs
- Near-duplicate variations
The plugin auto-detects available models from providers:
- Setting or changing an API key
- Switching between AI providers
- Clicking the reload button next to model dropdown
- Opening settings (if models are older than 1 hour)
- OpenAI:
gpt-4o,gpt-4o-mini,gpt-4-turbo, etc. - Anthropic:
claude-sonnet-4-5,claude-3-5-sonnet-latest, etc. - Google Gemini:
gemini-3-flash-preview,gemini-1.5-pro-latest, etc.
| Level | Description |
|---|---|
Off |
Standard generation |
Low |
Minimal reasoning |
Medium |
Balanced reasoning |
High |
Maximum reasoning depth |
- Invalid API Key: Verify key in your provider's dashboard
- Network Errors: Ensure internet connection for cloud providers
- No Title Generated: Check Obsidian console (
Ctrl/Cmd + Shift + I)
- Models Not Loading: Click reload button (🔄) next to model dropdown
- "Loading models..." Stuck: Check connection and API key
- Fallback Models: Curated list shown if auto-detection fails
MIT © Richard Laksana