Automatically generate metadata for your Obsidian notes using Claude AI from Anthropic. The plugin analyzes your note content and generates tags, descriptions, and titles—with full customization for your workflow.
- AI-Powered Metadata: Generate tags, descriptions, and titles using Claude AI
- Flexible Updates: Force update all fields or only fill in missing metadata
- Cost Optimization: Truncate content to limit API usage (save money on large notes)
- Customizable Fields: Rename metadata fields and add custom key-value pairs
- Multiple Models: Choose from Claude Sonnet 4.5, Opus 4.5, Sonnet 3.7, or Haiku 3.5
- Tag Extraction: Extract and manage existing tags from your vault
- Custom Prompts: Write your own instructions for tag/description/title generation
-
Clone this repository into your vault's plugins folder:
cd /path/to/vault/.obsidian/plugins git clone https://github.com/markayers/metadator.git cd metadator
-
Install dependencies with Bun:
bun install
-
Build the plugin:
bun run build
-
Enable the plugin in Obsidian: Settings → Community Plugins → Metadator
A test Obsidian vault is already configured in this project directory.
-
Open the vault in Obsidian
- Launch Obsidian
- Click "Open folder as vault" (or "Open another vault")
- Navigate to and select this project directory
- Obsidian will open with the plugin already loaded
-
Configure your API key
- Get an API key: Go to console.anthropic.com
- Sign up or log in with billing enabled
- Create a new API key
- In Obsidian, go to Settings → Metadator
- Paste your API key in the "API Key" field
-
Test with sample notes
- Open Sample Note 1.md (about Obsidian)
- Press Cmd/Ctrl + P to open Command Palette
- Type "metadata" and select "Generate metadata for current note"
- Watch the plugin analyze content and update frontmatter
- Try Sample Note 2.md and Sample Note 3.md for other examples
-
Reload changes during development
- After making code changes, run
bun run devfor watch mode - In Obsidian, press Cmd/Ctrl + R to reload the plugin
- After making code changes, run
- Model: Choose your Claude model
- Sonnet 4.5 (recommended): Best balance of speed and quality
- Opus 4.5: Most capable, slower and more expensive
- Sonnet 3.7: Good balance of speed and cost
- Haiku 3.5: Fastest and cheapest, good for simple notes
- Always Regenerate: Re-run Claude on every command (regenerate all metadata fields)
- Preserve Existing (default): Only generate empty fields, preserve existing metadata
Enable to reduce API costs on large notes:
- Truncate Content: Enable/disable content limiting
- Max Tokens: Maximum content length to send to Claude (default: 1000)
- Truncation Method:
- Beginning Only: Send just the first N tokens
- Beginning + End: Send start and end, omit middle
- Headings: Send document outline plus first paragraph of each section
Token Counting Note: The plugin uses a simplified token counter that handles English words, CJK characters (Chinese, Japanese, Korean), and punctuation. It may differ slightly from Claude's actual tokenization (typically within 10-15%). If you set maxTokens: 1000, the plugin will send approximately 1000 tokens, but Claude might count slightly differently. To be conservative, set maxTokens lower than your comfort level.
Customize what the frontmatter fields are called:
- Tags Field: Default
tags - Description Field: Default
description - Title Field: Default
title
Write custom instructions for Claude:
- Tags Prompt: How to select tags (e.g., "Choose 3-5 relevant tags")
- Description Prompt: How to write descriptions (e.g., "One sentence summary")
- Title Prompt: How to generate titles (e.g., "Concise title, max 10 words")
Add any additional metadata fields (e.g., author: Your Name, status: draft)
- Open a note you want to add metadata to
- Open Command Palette: Cmd/Ctrl + P
- Search for "Metadator" and select "Generate metadata for current note"
- Watch the plugin analyze your content and update the frontmatter
Before:
---
---
# My Morning Routine
I wake up at 6am and start with a 20-minute meditation session. Then I exercise for 30
minutes, take a cold shower, and have a healthy breakfast. This routine has improved my
energy levels and focus throughout the day.After:
---
tags:
- habits
- wellness
- productivity
description: A morning routine focused on meditation, exercise, and nutrition to boost energy and focus
title: Morning Routine for Productivity
---
# My Morning Routine
[content unchanged...]- Bun - Fast JavaScript runtime and package manager
- Node.js 18+ (via Bun)
# Install dependencies
bun install
# Development mode (watch mode with inline source maps)
bun run dev
# Production build (minified, optimized)
bun run build
# Type checking
bun run typecheck
# Linting and formatting
bun run check
bun run format
# Full validation (types, lint, format, build)
bun run validate
# Run unit tests
bun run testFor detailed development, architecture, and build information, see DEVELOPMENT.md.
Your Anthropic API key is stored in your Obsidian vault's plugin data folder (~/.obsidian/plugins/metadator/data.json) in plain text. This is the standard way Obsidian plugins store settings, but be aware:
- Risk: If your vault folder is compromised, the API key could be exposed
- Mitigation:
- Restrict permissions on your vault folder (not world-readable)
- Store your vault on encrypted disk (macOS FileVault, Windows BitLocker, Linux LUKS)
- Use a dedicated API key for this plugin (don't reuse your main key)
- Revoke the key immediately if you suspect compromise
If you need higher security, consider using OS keychain integration (future enhancement—see CONCERNS.md #15).
Note content is sent to Anthropic's Claude API for metadata generation. This means:
- Your note text leaves your vault and is processed by Anthropic's servers
- Anthropic may retain API usage data per their privacy policy
- Review Anthropic's terms before using with sensitive content
- Check the developer console (Cmd/Ctrl + Shift + I) for errors
- Ensure
main.jsexists in the plugin directory - Verify Obsidian version is 1.0.0 or higher
- Reload Obsidian (Cmd/Ctrl + R)
- You haven't added an API key yet
- Go to Settings → Metadator and add your key
- Verify you have billing enabled on your Anthropic account
- Your API key is incorrect or invalid
- Copy a fresh key from console.anthropic.com
- Ensure there are no extra spaces when pasting
- You're making requests too quickly
- Wait a moment and try again
- Consider using Haiku 3.5 for faster requests
- Check the Developer Console (Cmd/Ctrl + Shift + I) for error details
- Ensure the note has enough content
- Try enabling "Always Regenerate" in settings
- Verify your API key is valid
- Ensure you saved the settings
- Try disabling and re-enabling the plugin
- Reload Obsidian (Cmd/Ctrl + R)
- Update version in
package.json - Run
bun run versionto sync versions andbun run validateto verify - Commit and tag:
git tag X.Y.Z && git push origin main --follow-tags - GitHub Actions automatically creates release with artifacts
MIT
Contributions are welcome! Please follow these guidelines:
- Use Bun for package management
- Follow the existing code style (Biome formatting)
- Run
bun run validatebefore submitting PRs - Update documentation as needed
If you encounter issues or have questions:
- Check the troubleshooting section above
- Review the developer console for error details
- Open an issue on GitHub with details and error logs