Blog / Life Section Implementation Plan
Blog / Life Section Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Add a Blog section to the site where personal life content (travel, reading, hobbies, photography, etc.) can be published, completely separate from the academic sections.
Architecture: Use Jekyll’s existing _posts collection (already configured in _config.yml). Add a /blog/ archive page that lists all posts grouped by year (matching the year-archive.html pattern already in the codebase). Add a “Blog” entry to the header navigation.
Tech Stack: Jekyll, Liquid templates, YAML front matter
Task 1: Add Blog entry to navigation
Files:
Modify:
_data/navigation.ymlStep 1: Open
_data/navigation.yml
Current content:
main:
- title: "Publications"
url: /#publications
- Step 2: Add the Blog entry
Replace the full file with:
main:
- title: "Publications"
url: /#publications
- title: "Blog"
url: /blog/
- Step 3: Commit
git add _data/navigation.yml
git commit -m "feat: add Blog entry to site navigation"
Task 2: Create the Blog archive page
Files:
Create:
_pages/blog.htmlStep 1: Create
_pages/blog.html
---
layout: archive
title: "Blog"
permalink: /blog/
author_profile: true
---
<h2 id="2026" class="archive__subtitle">2026</h2>
<div class="list__item">
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline">
<a href="https://ZeguanXiao.github.io/life/hello-blog/" rel="permalink">Hello, Blog!
</a>
</h2>
<p class="page__meta"><i class="fa fa-clock" aria-hidden="true"></i>
less than 1 minute read
</p>
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Published:</strong> <time datetime="2026-04-20T00:00:00+00:00">April 20, 2026</time></p>
<p class="archive__item-excerpt" itemprop="description"><p>Starting a personal blog section on this site.</p>
</p>
</article>
</div>
Posts are grouped by year (same pattern as _pages/year-archive.html). The archive-single.html include renders each post with title, date, excerpt, and optional teaser image.
- Step 2: Commit
git add _pages/blog.html
git commit -m "feat: add Blog archive page at /blog/"
Task 3: Add a sample life post to verify
Files:
Create:
_posts/2026-04-20-hello-blog.mdStep 1: Create the sample post
---
title: "Hello, Blog!"
date: 2026-04-20
categories: [life]
tags: [meta]
excerpt: "Starting a personal blog section on this site."
---
A place to share thoughts on life outside of research — travels, books, music, and whatever else I find interesting.
- Step 2: Start the Jekyll dev server
bundle exec jekyll serve -l -H localhost
- Step 3: Verify the blog page
Open http://localhost:4000/blog/ in a browser.
Expected:
- Page title “Blog” appears
- “Blog” link is visible in the site header navigation
The “Hello, Blog!” post is listed under a “2026” year heading
- Step 4: Verify category archive
Open http://localhost:4000/categories/life/ and confirm the post appears there.
- Step 5: Commit sample post
git add _posts/2026-04-20-hello-blog.md
git commit -m "feat: add sample life blog post"
Writing New Life Posts
All future life posts follow this front matter convention:
---
title: "Post Title"
date: YYYY-MM-DD
categories: [life, travel] # always include "life"; add topic category
tags: [optional, freeform, tags]
excerpt: "One sentence shown in the post list."
header:
teaser: /images/optional-thumbnail.jpg # 300x200px recommended
---
Suggested topic categories alongside life:
travel— trips and placesreading— books and articlesmusic— concerts, playlists, discoveriesphotography— photo essaysgaming— games played
Image files go in /images/. Reference in posts with .
