This guide provides detailed steps for adding new blog posts to the GeoDa Docusaurus site and publishing them via GitHub Actions.
- Git access to the
GeoDaCenter.github.iorepository - Basic knowledge of Markdown syntax
- Image files ready (if needed)
If you have write access to the main branch and want to add a simple blog post quickly:
-
Create your blog post file in the
blog/directory:# Navigate to blog directory cd blog # Create a new markdown file with date prefix touch YYYY-MM-DD-your-post-title.md
-
Add content to your file with proper frontmatter:
--- title: Your Blog Post Title authors: [existing-author-id] tags: [existing-tag1, existing-tag2] --- Your blog post content here...
-
Commit and push directly to main:
git add blog/YYYY-MM-DD-your-post-title.md git commit -m "Add blog post: [Your Post Title]" git push origin main -
Automatic deployment:
- GitHub Actions will automatically build and deploy
- Your post will be live at
https://geodacenter.github.io/blog/within minutes
Note: This shortcut is for simple posts using existing authors and tags. For new authors, tags, or complex posts with images, follow the full guide below.
-
Clone the repository (if not already done):
git clone https://github.com/GeoDaCenter.github.io.git cd geodacenter.github.io -
Create a new branch:
git checkout -b add-blog-post-[post-title]
-
Follow the detailed steps below
-
Navigate to the blog directory:
cd blog -
Create a new markdown file with the naming convention:
YYYY-MM-DD-[slug].mdExample:
2025-01-30-new-feature-announcement.md -
Add the frontmatter at the top of the file:
--- title: Your Blog Post Title authors: [author-id] tags: [tag1, tag2] ---
-
Write your content below the frontmatter:
--- title: New GeoDa Feature Announcement authors: [jkoschinsky] tags: [news, features] --- Your blog post content goes here. You can use standard Markdown syntax. ## Subheadings You can include: - **Bold text** - *Italic text* - [Links](https://example.com) - Code snippets: `inline code` - And more...
-
Create a directory with the naming convention:
YYYY-MM-DD-[slug]/ -
Create an
index.mdfile inside the directory:--- slug: your-slug-name title: Your Blog Post Title authors: [author-id] tags: [tag1, tag2] --- Your blog post content here.
-
Add images to the same directory and reference them:

If you're a new author, add your information to blog/authors.yml:
your-author-id:
name: Your Full Name
title: Your Title
url: https://your-website.com
image_url: https://your-photo-url.com/photo.jpg
page: true
socials:
x: your-twitter-handle
linkedin: your-linkedin-id
github: your-github-usernameAvailable author fields:
name: Your full nametitle: Your professional titleurl: Your personal websiteimage_url: URL to your profile photopage: Set totrueto create an author pagesocials: Social media handles (optional)
If you're using new tags, add them to blog/tags.yml:
your-tag:
label: Your Tag Label
permalink: /your-tag
description: Description of what this tag representsAvailable tag fields:
label: Display name for the tagpermalink: URL path for the tag pagedescription: Description of the tag
-
Install dependencies (if not already done):
pnpm install
-
Start the development server:
pnpm start
-
Navigate to the blog:
- Go to
http://localhost:3000/blog - Check that your post appears correctly
- Verify images load properly
- Test any links
- Go to
-
Check for warnings:
- Look for console warnings about missing authors or tags
- Fix any issues before committing
-
Add your files:
git add blog/your-post-file.md git add blog/authors.yml # if you modified it git add blog/tags.yml # if you modified it
-
Commit your changes:
git commit -m "Add blog post: [Your Post Title]" -
Push to your branch:
git push origin add-blog-post-[post-title]
-
Go to GitHub:
- Navigate to
https://github.com/GeoDaCenter/geodacenter.github.io - You should see a prompt to create a pull request from your branch
- Navigate to
-
Create the pull request:
- Click "Compare & pull request"
- Add a descriptive title:
Add blog post: [Your Post Title] - Add a description explaining what the post is about
- Request review if needed
-
Wait for review and merge:
- The pull request will be reviewed
- Once approved, it will be merged to the main branch
Once merged to the main branch, GitHub Actions will automatically:
- Build the site with your new blog post
- Deploy to GitHub Pages at
https://geodacenter.github.io/ - Make your post live at
https://geodacenter.github.io/blog/
- Use clear, descriptive titles
- Include relevant tags for categorization
- Add images when appropriate (use descriptive alt text)
- Keep paragraphs short for readability
- Use headings to organize content
- Include links to relevant resources
- Optimize images before uploading (compress PNG/JPG files)
- Use descriptive filenames (e.g.,
geoda-new-feature-screenshot.png) - Include alt text for accessibility
- Keep file sizes reasonable (< 1MB when possible)
# Main heading
## Subheading
### Sub-subheading
**Bold text** and *italic text*
[Link text](https://example.com)

- Bullet point 1
- Bullet point 2
1. Numbered list item 1
2. Numbered list item 2
`inline code`
```javascript
// Code block
function example() {
return "Hello World";
}Blockquote text
## 🔧 Troubleshooting
### Common Issues
1. **Post not appearing**:
- Check the frontmatter syntax (YAML format)
- Verify the filename follows the date convention
- Ensure the file is in the correct location
2. **Images not loading**:
- Check the image path is correct
- Verify the image file exists
- Use relative paths (e.g., `./image.png`)
3. **Author/tag warnings**:
- Add missing authors to `authors.yml`
- Add missing tags to `tags.yml`
- Check spelling and case sensitivity
4. **Build errors**:
- Check the console for specific error messages
- Verify all YAML syntax is correct
- Ensure all referenced files exist
### Getting Help
If you encounter issues:
1. **Check the Docusaurus documentation**: https://docusaurus.io/docs/blog
2. **Review existing blog posts** for examples
3. **Ask for help** in the pull request or issues
4. **Contact the maintainers** at spatial@uchicago.edu
## 📅 Publishing Timeline
- **Development**: Test locally with `pnpm start`
- **Review**: Pull request review process
- **Merge**: Automatic deployment via GitHub Actions
- **Live**: Available at `https://geodacenter.github.io/blog/` within minutes
## 🎯 Quick Reference
### File Structure
blog/ ├── YYYY-MM-DD-post-title.md # Simple post ├── YYYY-MM-DD-post-with-images/ # Post with images │ ├── index.md │ └── image.png ├── authors.yml # Author definitions └── tags.yml # Tag definitions
### Frontmatter Template
```markdown
---
title: Your Post Title
authors: [author-id]
tags: [tag1, tag2]
---
git checkout -b add-blog-post-[title]
git add blog/your-file.md
git commit -m "Add blog post: [Title]"
git push origin add-blog-post-[title]Need help? Contact the GeoDa team at spatial@uchicago.edu or create an issue on GitHub.