8197aa6d5fe913b7cd341519b0c7af98ea90a829
Note Tagging & SEO Automation
Automatically tag your Obsidian notes and add SEO metadata using a local LLM.
Setup
-
Install dependencies:
pip install pyyaml requests -
Make sure LM Studio is running on
http://192.168.68.84:1234with theopenai/gpt-oss-20bmodel loaded -
Place these files in a directory:
tag-notes.py(the main script)tag-taxonomy.yaml(your tag taxonomy)
Usage
Simply run the script:
./tag-notes.py
It will automatically process all markdown files in:
~/Documents/ejl-zk/40 Public/41 Notes/
To change the folder, edit the NOTES_FOLDER variable at the top of tag-notes.py.
What it does
The script will:
- ✓ Add tags (1-5) using your taxonomy + 1-2 new suggestions
- ✓ Add SEO title (clean, non-clickbaity)
- ✓ Add SEO description (150-160 chars, factual)
- ✓ Add SEO keywords (generous, 10-15 keywords)
- ✓ Only updates empty fields - preserves existing values
- ✓ Updates files directly (no confirmation needed)
- ✓ Only touches:
tags,seo-title,seo-description,seo-keywords - ✓ Preserves everything else in your frontmatter
Managing the taxonomy
Edit tag-taxonomy.yaml to add new tags that the LLM suggests and you like.
The LLM will:
- Prefer existing taxonomy tags
- Suggest 1-2 new tags if the content warrants it
- Be conservative with new tag suggestions
Example output
Processing: /path/to/note.md
+ Added tags: self-hosting, linux, docker
(New suggestions: containers)
+ Added SEO title: Setting Up a Self-Hosted Development Environment
+ Added SEO description
+ Added 12 SEO keywords
✓ Updated successfully
Troubleshooting
LLM connection errors:
- Check that LM Studio is running:
curl http://192.168.68.84:1234/v1/models - Verify the model is loaded in LM Studio
No frontmatter found:
- The note needs YAML frontmatter between
---delimiters
Fields already populated:
- Script skips notes where all four fields are already filled
- To re-process a note, clear the specific fields you want regenerated
Description
Languages
Python
100%