How I Automated My Blog to Update from Obsidian Notes
Introduction
In this post, I’ll explain how I built an automated workflow that syncs my Obsidian vault directly to my Jekyll blog, eliminating the manual copy-paste process and ensuring my writeups are always up-to-date.
The Problem
Writing technical writeups in Obsidian is great for:
- Quick note-taking during CTF challenges
- Linking related concepts
- Embedding images easily
- Local version control
However, publishing to a Jekyll blog traditionally meant:
- Copying markdown files manually
- Fixing image links (Obsidian uses
![[image.png]]format) - Adjusting frontmatter
- Uploading images to the correct directory
- Committing and pushing changes
This manual process was tedious and error-prone.
The Solution
Architecture Overview
Obsidian Vault (obsidian-notes branch)
↓
GitHub Actions Workflow
↓
1. Detect new/modified writeups
2. Convert Obsidian image syntax to Jekyll format
3. Copy images to assets directory
4. Update markdown files
5. Commit changes to main branch
↓
Jekyll Build & Deploy
Key Components
1. Two-Branch Strategy
obsidian-notesbranch: Contains my raw Obsidian vaultmainbranch: Contains the processed Jekyll blog
2. GitHub Actions Workflow
[TODO: Add workflow details]
3. Image Conversion Script
[TODO: Add script explanation]
Step-by-Step Implementation
Step 1: Repository Structure
[TODO: Explain repository organization]
Step 2: GitHub Actions Configuration
[TODO: Add workflow YAML]
Step 3: Image Processing
[TODO: Explain image handling]
Step 4: Frontmatter Conversion
[TODO: Explain metadata handling]
Benefits
- Zero Manual Work: Write in Obsidian, commit, and the blog updates automatically
- Consistent Formatting: Automated conversion ensures all posts follow the same structure
- Image Management: Images are automatically copied and links updated
- Version Control: Full history of both raw notes and published content
- Fast Workflow: From note completion to live blog post in minutes
Challenges Faced
[TODO: Add challenges and solutions]
Future Improvements
- Add support for Obsidian callouts
- Implement tag synchronization
- Add automated SEO optimization
- Create a dashboard for writeup statistics
Conclusion
[TODO: Add conclusion]
Tech Stack Used:
- Obsidian
- GitHub Actions
- Jekyll
- Python (for image processing)
- GitHub Pages
Resources: