Automate Obsidian workflows with Claude Code skills. Ideal for operations teams to streamline knowledge management, task automation, and data organization. Connects to Obsidian for enhanced productivity and workflow integration.
git clone https://github.com/ArtemXTech/personal-os-skills.gitPersonal OS Skills provides Claude Code extensions that integrate directly with Obsidian to automate knowledge management and task workflows. The skill collection includes task management via TaskNotes API, meeting note syncing from Granola, voice dictation analysis from Wispr Flow, NotebookLM integration for creating protocols, and session recall with temporal and topic search. Users can export Claude Code conversations to Obsidian markdown with auto-sync hooks and load context from previous sessions with graph visualization. These skills are designed for operations teams and knowledge workers who want to reduce manual data entry and keep their Obsidian vault synchronized with external tools.
1. **Identify your workflow**: Determine which Obsidian tasks you want to automate (e.g., note creation, backlinks, task extraction). Use the prompt template to describe your specific need. 2. **Set up Claude Code**: Ensure you have Claude Code installed and configured with access to your Obsidian vault path. Test basic Python file operations in your vault first. 3. **Customize the script**: Replace [WORKFLOW_DESCRIPTION] with your specific requirements. For API-based automation, you may need to install the Obsidian Python library (`pip install obsidianmd`). 4. **Test incrementally**: Start with a small, reversible change (like creating a test note) before automating critical workflows. Use `print()` statements to verify each step. 5. **Schedule execution**: For recurring tasks, set up cron jobs (Mac/Linux) or Task Scheduler (Windows). For complex workflows, consider using a task runner like `make` or `just`. **Pro Tip**: Store your automation scripts in a dedicated folder within your vault (e.g., `Automation Scripts`) and link to them from your daily notes for easy access.
Sync meeting notes from Granola automatically into Obsidian
Manage Obsidian tasks through Claude Code using TaskNotes API
Import NotebookLM notebooks as linked knowledge graphs in Obsidian
Export Claude Code conversations to Obsidian with auto-sync
No install command available. Check the GitHub repository for manual installation instructions.
git clone https://github.com/ArtemXTech/personal-os-skillsCopy the install command above and run it in your terminal.
Launch Claude Code, Cursor, or your preferred AI coding agent.
Use the prompt template or examples below to test the skill.
Adapt the skill to your specific use case and workflow.
Automate the following Obsidian workflow: [WORKFLOW_DESCRIPTION]. Use Claude Code to create a Python script that interacts with the Obsidian API or file system. The script should [SPECIFIC_TASKS]. For example: 'Automate daily note creation in Obsidian by generating a template with today's date, adding a task list from my calendar for the day, and tagging it with #daily-review. Save it to the Daily Notes folder.' Include error handling for cases where the Obsidian vault isn't found or the API fails.
```python
# Obsidian Daily Note Automation Script
# Generated by Claude Code for vault: ~/Documents/Obsidian/SecondBrain
import os
from datetime import datetime
import json
# Configuration
VAULT_PATH = os.path.expanduser('~/Documents/Obsidian/SecondBrain')
DAILY_NOTES_FOLDER = os.path.join(VAULT_PATH, 'Daily Notes')
TEMPLATE_PATH = os.path.join(VAULT_PATH, '.obsidian/templates/daily-note.md')
# Create daily note directory if it doesn't exist
os.makedirs(DAILY_NOTES_FOLDER, exist_ok=True)
# Get today's date
today = datetime.now().strftime('%Y-%m-%d')
note_filename = f'{today}.md'
note_path = os.path.join(DAILY_NOTES_FOLDER, note_filename)
# Check if note already exists
if os.path.exists(note_path):
print(f'Note for {today} already exists at {note_path}')
exit()
# Read template
with open(TEMPLATE_PATH, 'r') as f:
template_content = f.read()
# Generate content with dynamic elements
calendar_tasks = """### Tasks
- [ ] Morning standup with team
- [ ] Review Q3 budget report
- [ ] Update client onboarding checklist
- [ ] Research new automation tools"""
# Replace placeholders in template
content = template_content.replace('{{date}}', today)
content = content.replace('{{tasks}}', calendar_tasks)
content = content.replace('{{tags}}', '#daily-review #automation')
# Write to file
with open(note_path, 'w') as f:
f.write(content)
print(f'Successfully created daily note at {note_path}')
print(f'Content preview:\n{content[:200]}...')
```
**Output Log:**
```
Successfully created daily note at /Users/alex/Documents/Obsidian/SecondBrain/Daily Notes/2024-05-15.md
Content preview:
# Daily Note - 2024-05-15
## Tasks
- [ ] Morning standup with team
- [ ] Review Q3 budget report
- [ ] Update client onboarding checklist
- [ ] Research new automation tools
## Notes
## ##tags #daily-review #automation
```
**Next Steps:**
1. Test the script by running it in your terminal
2. Add it to your system's cron jobs to run daily at 8 AM
3. Customize the template at `/.obsidian/templates/daily-note.md` to match your preferred formatKnowledge-powered CRM with networked thinking
AI assistant built for thoughtful, nuanced conversation
Get more done every day with Microsoft Teams – powered by AI
Automate your spreadsheet tasks with AI power
Agentic AI Workflow platform
Connected workspace for docs, wikis, and projects
Take a free 3-minute scan and get personalized AI skill recommendations.
Take free scan