This guide covers creating and managing content on this Jekyll site, which uses the Minimal Mistakes theme. Whether you’re adding a new blog post, updating navigation, or troubleshooting build errors, you’ll find the steps here.

Creating Content with Octopress

Octopress is a Ruby gem that scaffolds Jekyll content with proper file naming and front matter. Install it with gem install octopress.

New Post

octopress new post "Your Post Title" --dir posts

What it does: Creates a new file in _posts/ with the current date and slugified title.

Output: _posts/2025-01-29-your-post-title.md

Verify: Check that the file exists with ls _posts/.

New Page

octopress new page page-name/

Output: page-name/index.md

New Draft

octopress new draft "Draft Title"

Output: _drafts/draft-title.md (no date prefix needed for drafts)

Working with Drafts

Store unpublished posts in _drafts/. Drafts don’t require a date in the filename.

Preview drafts locally:

npm run serve -- --drafts

When ready to publish, move the file to _posts/ and add the date prefix:

mv _drafts/my-draft.md _posts/2025-01-29-my-draft.md

Front Matter

Every content file needs YAML front matter at the top. Here’s a complete post example:

---
layout: single
title: "Post Title"
date: 2025-01-29
excerpt: "A brief description for previews and SEO."
categories: [analysis]
tags: [data, visualization]
author_profile: true
toc: true
---

Required fields: layout, title

Recommended fields: date, excerpt, categories, tags

Feature Images

Add header images to posts and pages:

---
header:
  image: /assets/images/cover.png
  teaser: /assets/images/cover-thumbnail.png
  caption: "Photo credit: [Source](https://example.com)"
---

Table of Contents

Enable an auto-generated table of contents for long posts:

---
toc: true
toc_label: "On This Page"
toc_sticky: true
---

Schema.org Structured Data

For enhanced SEO, add structured data:

---
schema_type: tech-article
schema_about_page:
  type: "Person"
  name: "Name"
  url: "https://example.com"
---

Managing Navigation

Edit _data/navigation.yml to add or remove menu items:

main:
  - title: "Blog"
    url: /posts/
  - title: "Projects"
    url: /projects/
  - title: "About"
    url: /about/

Verify: Run npm run serve and check the navigation bar.

Managing Images

Store images in assets/images/:

assets/images/
├── cover.png           # Header images
├── avatar.jpg          # Profile photo
└── posts/              # Post-specific images
    └── 2025-01-29/

Naming convention: Use lowercase, hyphens instead of spaces.

Optimization: Keep images under 500KB. Use WebP format when possible.

Reference in posts:

![Alt text](/assets/images/posts/2025-01-29/example.png)

Content Collections

CollectionLocationPurpose
Posts_posts/Blog posts (requires YYYY-MM-DD-title.md format)
Drafts_drafts/Unpublished posts (no date prefix)
Projects_projects/Portfolio items
Reports_reports/Technical reports
Work_work/Work-in-progress

Local Development

# Install dependencies (first time only)
bundle install
npm install

# Serve locally with live reload
npm run serve
# Site available at http://localhost:4000

# Serve with drafts visible
npm run serve -- --drafts

# Build for production
npm run build
# Output in _site/

Customization

Colors and fonts are defined in _sass/_variables.scss:

SettingValue
Body fontPT Serif
Heading fontPT Sans Narrow
Accent colorAcademic red (#8b2635)

Testing Before Deploy

Always run the full test suite before pushing:

npm run test:all

This runs build validation, unit tests, end-to-end tests, and performance audits.

Deployment

The site deploys automatically via GitHub Pages when you push to the main branch. GitHub runs jekyll build and serves the _site/ output.

Verify deployment: Check isabelbudenz.com after pushing.

Troubleshooting

ErrorCauseFix
“Liquid syntax error”Unescaped double braces in contentWrap in raw/endraw tags
“Invalid date” in filenameWrong filename formatUse YYYY-MM-DD-title.md exactly
Styles not updatingCached assetsDelete _site/ and rebuild: rm -rf _site && npm run build
“Could not find gem”Missing Ruby dependenciesRun bundle install
Port 4000 in useAnother server runningKill it: lsof -ti:4000 | xargs kill
Post not appearingFuture date or draftCheck date is today or earlier; ensure file is in _posts/

Additional Resources

was published on .