A GitHub-style contribution heatmap for your Substack posts.
Takes your Substack data export and generates an interactive heatmap showing your posting activity over time -- just like GitHub's contribution graph, but for your writing.
Features:
- GitHub dark-theme heatmap with green intensity scale
- Hover any day to see post titles
- Month and day-of-week labels
- Stats: total posts, posts/week average, best week, longest daily streak
- Copy as PNG / download image buttons
- Single self-contained HTML file
- Go to your Substack dashboard
- Click Settings in the left sidebar
- Scroll down to the Exports section
- Click Create new export
- You'll receive an email with a download link -- download and unzip the archive
- Inside the archive you'll find a
posts.csvfile
This repo is designed to work as a skill for AI coding agents (Claude Code, OpenCode, Cursor, etc.):
- Point your agent at this repo and the
SKILL.mdfile - Give it your unzipped Substack export directory
- Ask it to generate the contribution graph
The agent will read your posts.csv, inject it into the template, and produce a ready-to-go index.html.
- Open
template.html - Replace
{{SUBSTACK_HANDLE}}with your Substack handle (e.g.jamespember) - Replace
{{CSV_DATA}}with the contents of yourposts.csvfile - Open the resulting HTML file in a browser
Note: Since the CSV is placed inside a JavaScript template literal, you'll need to escape any backtick characters (` to \`) and ${ sequences (${ to \${) in your CSV data. In practice, Substack CSVs rarely contain these characters.
MIT