Personal blog and portfolio site built with Hugo, featuring optimized images and a custom Obsidian-compatible theme.
- Hugo Extended v0.124.1+ (required for SCSS processing)
- Go 1.19+ (required for
hugo-obsidiantool) - Python 3.8+
- Node.js 18+ and npm
- Git
git clone --recurse-submodules https://github.com/akcube/akcube.github.io.git
cd akcube.github.ioIf you already cloned without submodules:
git submodule update --init --recursivecd themes/obsidian-hugo-texify3
npm install
cd ../..cd publisher
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cd ..go install github.com/jackyzha0/hugo-obsidian@latestVerify installation:
hugo-obsidian --helphugo server -DThis will:
- Build the site with draft posts included (
-Dflag) - Start a local server at
http://localhost:1313 - Watch for file changes and auto-reload
- Enable live browser reload
Additional useful flags:
--bind 0.0.0.0- Allow external connections (useful for testing on mobile)--port 1313- Specify custom port--navigateToChanged- Navigate to changed content on live reload
hugo --minifyOutput will be in the public/ directory.
To publish a blog post from your Obsidian vault:
- Run the publisher script to convert Obsidian markdown to Hugo format
- Run
hugo-obsidianto generate link indices for the graph visualization - Review changes locally with
hugo server -D - Commit and push to deploy
Quick workflow:
# 1. Activate Python environment and publish from Obsidian
cd publisher
source venv/bin/activate
python publisher.py \
--source ~/Kishore-Brain/Zettelkasten/my-post.md \
--dest ../content/blog \
--idest ../static/images \
--imgdirs ~/Kishore-Brain/Files
cd ..
# 2. Generate link indices for graph
hugo-obsidian -input=content -output=assets/indices -index -root=.
# 3. Test locally
hugo server -D.
├── content/ # Hugo content
│ ├── blog/ # Blog posts
│ └── ...
├── static/ # Static assets
│ ├── images/ # Optimized blog images (WebP + PNG)
│ ├── css/ # Custom CSS
│ └── js/ # Custom JavaScript
├── layouts/ # Hugo layout overrides
│ └── _default/
│ └── _markup/ # Custom markdown rendering (e.g., images)
├── themes/ # Hugo themes
│ └── obsidian-hugo-texify3/ # Custom theme (git submodule)
├── publisher/ # Publishing tools
│ ├── publisher.py # Main conversion script
│ ├── optimize_existing_images.py # Batch optimization script
│ └── requirements.txt
├── hugo.toml # Hugo configuration
└── package-lock.json # NPM dependencies (theme)
All images are automatically optimized during publishing:
- Display size: Max 650px width (preserves natural size for smaller images)
- Format: WebP with PNG fallback for browser compatibility
- Compression: 85% WebP quality, optimized PNG
- Zoom: Click any image to view full-size with smooth animation
To batch optimize all images already in static/images/:
cd publisher
source venv/bin/activate
python optimize_existing_images.pyContent is © Kishore Kumar. Theme based on Obsidian TeXify3.