Quarto/Jupyter Blog Post Guidelines
Quarto/Jupyter Blog Post Guidelines
This document outlines the workflow for creating and deploying blog posts using Jupyter Notebooks and Quarto.
This workflow uses a Jekyll Collection (_blogs) to generate a dynamic list of blog posts on the /blogs page. The actual content is rendered from Jupyter Notebooks (.ipynb) into standalone HTML files that live in the blog_assets directory. A custom navigation header is injected during the render process to allow users to navigate back to the main site.
Workflow
- Create Your Jupyter Notebook:
- Create your new Jupyter Notebook (
.ipynb) file. - Place the notebook inside the
blog_assets/directory, organized by year and month. For example:blog_assets/2026/02/my-new-post.ipynb.
- Create your new Jupyter Notebook (
- Render All Notebooks to HTML:
- Open your terminal in the root directory of this project.
- Run the batch file:
render_blogs.bat - This script will automatically find and render every
.ipynbfile within theblog_assetsdirectory. It will create the corresponding.htmlfile (and_filesfolder, if needed) in the same location as the source notebook.
- Create a Pointer File in
_blogs:- Create a new Markdown file in the
_blogsdirectory, named with the date and a slug (e.g.,_blogs/2026-02-15-my-new-post.md). - This file only needs YAML front matter. This metadata will be used to create the “card” on the
/blogspage. The
link:key is crucial: it must point to the path of the rendered HTML file from the previous step.--- title: "My New Blog Post Title" date: 2026-02-15 excerpt: "A short, one-sentence teaser for your blog post that will appear on the card." link: /blog_assets/2026/02/my-new-post.html ---
- Create a new Markdown file in the
- Check Your Work:
- Restart your local Jekyll server to ensure it picks up the new file in the
_blogscollection. - Navigate to your
/blogspage. You should see a new card for your post. Clicking it should take you to your rendered HTML page, which will have the site’s navigation bar at the top.
- Restart your local Jekyll server to ensure it picks up the new file in the
Updating the Navigation Bar
The navigation bar in the rendered blog posts is a snapshot of the main site’s navigation. If you ever update the main site’s navigation (in _data/navigation.yml), you will need to manually update the _includes/blog_nav_header.html file to reflect these changes. This can be done by copying the rendered HTML of the new navbar into that file.
