Pre-blog-posting checklist
General tasks applied to every blog post before it goes live. These steps are independent of the blog content.
Lessons learned (2026-06-01 session)
Citation rendering bug
Markdown reference-style links ([1] in text + [1]: url at bottom) are consumed by kramdown (Jekyll’s parser) and never rendered as visible content. The “Citations” heading shows, but the URLs underneath are invisible. The fix: use kramdown footnote syntax instead:
| Before (broken) | After (works) |
|---|---|
context[1] |
context[^1] |
[1]: https://... |
[^1]: <https://...> |
Footnotes render as clickable superscript links in the text and a visible list at the bottom. Each footnote scrolls bidirectionally between reference and definition.
Checklist adaptation per site
This checklist was originally written for a math blog but applies to any Jekyll blog. Key adaptations:
- Frontmatter: Match the existing post conventions of the site. If all posts use only
titleandtags, don’t forcecategories,share,read_time,excerpt— those fields may not be supported by the theme. - Math rules: Skip or de-emphasize for non-math posts. Still run the grep checks but understand that clean output is expected.
- “Mathematics” category: Only include if the site actually uses categories and the post is math-related.
YouTube/reference link spam
Raw source material often has excessive repeated links (e.g. the same two YouTube URLs pasted 40+ times across every sentence and table cell). Detection and fix:
- Identify unique URLs with
grep -oP '\[.*?\]\(https?://[^)]+\)'and count duplicates - Consolidate all duplicates into a References section at the bottom
- Remove all inline link spam from body text
- Keep only genuinely distinct, context-specific links inline
Dry-run before push
Always run the grep checks (section 8) before committing. Catching a stray \[ or raw <> after pushing means a second commit to fix rendering — avoidable with 10 seconds of grep.
1. Source material preparation
Read the raw content file and identify:
- The core theorem/identity/concept
- Natural connections to other topics (cross-linking opportunities)
- Sections that need markdown formatting removed from math blocks
- Any raw
<or>characters in math that need LaTeX replacement - Excessive repeated links — consolidate duplicates into a References section
- Citation format — if the source uses
[N]/[N]: urlreference-style links, convert to[^N]/[^N]: <url>kramdown footnotes
2. Frontmatter
Every post must have this YAML block at the top:
---
title: "..."
date: YYYY-MM-DD
categories:
- CategoryName
- Mathematics
tags:
- tag-one
- tag-two
share: true
read_time: true
excerpt: "..."
---
Rules:
datemust be the current datecategoriesmust include at least one topic category plus “Mathematics”tagsshould be kebab-case, narrowly topical, 4-8 of themexcerptmust be 2-3 sentences, no more than ~300 characters
Adaptation note: Match the existing frontmatter conventions of the target site. If the site’s existing posts only use title and tags, follow that pattern. Adding unsupported fields like categories or share may cause build warnings or be silently ignored. Check at least 3-5 existing posts to determine the actual convention before writing frontmatter.
3. Title requirements
The title must be viral-style: curiosity-driven, arouses interest, promises a revelation.
Patterns that work:
| Pattern | Example skeleton |
|---|---|
| “The X That Secretly Y — And You’ve Never Heard of It” | Surprise + exclusivity |
| “Why X Lives Inside Y — The Strangest Secret of Z” | Unexpected connection |
| “X’s Secret: How Y Escaped Z and Took Over W” | Origin story + ambition |
| “The X That Lets You Y — Z’s Most Beautiful Formula” | Empowerment + beauty |
Avoid: dry declarative titles like “An Introduction to X” or “On the Theory of Y”.
4. Opening hook
Immediately after the frontmatter, place a challenge to the reader in bold:
**Challenge to the reader:** [concrete, verifiable task using the post's content]
Rules:
- It must be specific (e.g. “Compute X for Y” not “Explore X”)
- It must be solvable after reading the post
- It appears before any body text
Scatter 2-3 additional challenges at midpoints and one final challenge at the end.
5. Math rendering rules
From change_for_math.md, applied to every post:
| Rule | Do | Don’t |
|---|---|---|
| Display math | $$...$$ |
\[...\], \\[...\\] |
| Inline math | $...$ |
\(...\) |
| Inside math | Valid LaTeX only | No ====, ---, *, markdown links |
| Inequalities | $\lvert z \rvert < 1$ |
Raw |z|<1 outside math |
| Curly braces | {}_2F_1, \frac{a}{b} — safe |
N/A |
Long equations use alignment environments:
$$
\begin{aligned}
x &= a + b \\
y &= c + d
\end{aligned}
$$
6. Content structure
Every post follows this skeleton:
- Challenge (bold, before any body text)
- Core identity/theorem stated upfront
- Why it matters (2-3 lines)
- Numbered sections — each section is one digestible idea
- Mid-post challenges (after key derivations)
- Connection table (where applicable — show related functions)
- Deeper significance section
- Final challenge (harder, synthesis-required)
Section headings use ## N. Descriptive Name format.
7. Visual separators
Use --- to separate major sections. These must be on their own line, outside any $$...$$ blocks.
8. Pre-publish verification
Run these commands in the repo root, replacing the filename:
# 1. No old-style math delimiters (should print nothing)
grep -n '\\\\\[\|\\\\\]\|\\(' _posts/NEW-FILE.md
# 2. No markdown headings/rules inside math blocks (should print nothing;
# lines matching "---" or "====" are only legitimate section separators
# OUTSIDE $$...$$ blocks)
grep -n '^=\|^--' _posts/NEW-FILE.md
# 3. No raw < or > outside of valid HTML tags and math mode
grep -n '<\|>' _posts/NEW-FILE.md
# 4. Check for excessive repeated links (count unique URLs and their occurrences)
grep -oP '\[.*?\]\(https?://[^)]+\)' _posts/NEW-FILE.md | sort | uniq -c | sort -rn
# 5. Check for broken reference-style citations (these are invisible in kramdown output)
grep -n '^\[[0-9]\+\]:' _posts/NEW-FILE.md
For checks 2 and 3, manually verify that any matches are:
- Frontmatter
---delimiters (legitimate) - Section separator
---lines (legitimate) - HTML tags like
</script>(legitimate) - LaTeX commands like
\lt,\gt,\langle(legitimate in$$/$)
For check 4, if any link appears more than 3 times, consolidate duplicates into a References section at the bottom.
For check 5, if any [N]: url lines exist, they will NOT render visibly. Convert to [^N]: <url> kramdown footnote syntax, and update all in-text [N] references to [^N].
9. Git workflow
# Stage the new post
git add _posts/NEW-FILE.md
# Commit with a message that summarizes the post content
git commit -m "Add [topic] blog post
[One line describing the core content]
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"
# Push to deploy (GitHub Pages rebuilds automatically)
git push
Never amend. Always create a new commit. Never skip hooks.
10. Post-publish verification
After pushing, wait ~2 minutes for GitHub Pages to rebuild, then:
- Visit the live URL:
https://hackmathsdeveloper.github.io/category/mathematics/post-slug/ - Check that all
$$blocks render as math, not raw LaTeX - Check that inline
$renders correctly - Verify the title, excerpt, tags, and read-time appear on the listing page
- Verify the site index at
https://hackmathsdeveloper.github.io/lists the new post - Citation-specific: Verify footnote references (
[^1],[^2], etc.) are clickable and the Citations section at the bottom displays all URLs
If math blocks show raw LaTeX:
- The most common cause is a stray
\\[or\\(delimiter - Re-run the grep check from section 8
- Fix and push again
If citations don’t appear:
- Check that you used
[^N](footnote) syntax, not[N]:(reference-style link) syntax - Reference-style definitions are invisible — convert to footnotes
- Re-run check 5 from section 8
Quick reference card
□ Frontmatter complete (title, date, tags — match existing site conventions)
□ Viral-style title (curiosity + promise)
□ Reader challenge at top (bold, concrete)
□ All math uses $$ / $ delimiters (skip for non-math posts)
□ No markdown inside $$ blocks
□ No raw < > in math mode
□ No excessive repeated links (>3 occurrences → consolidate to References)
□ No [N]: reference-style citations (use [^N]: footnote syntax instead)
□ 2-3 additional challenges scattered through post
□ Final challenge at end
□ grep checks 1-5 pass
□ git commit + push
□ Live URL verified (including footnote/citation rendering)