# How Jordan Crawford runs his Substack from Claude Code

Jordan Crawford turns his day-to-day Claude Code sessions into Substack posts. A hook logs each session, a queue flags topics with enough material, sub-skills draft the post and research headlines, and a custom publisher ships it with working images.

| | |
|---|---|
| **Who** | Jordan Crawford, "On the Edge" ([Substack @jordancrawfordgtm](https://substack.com/@jordancrawfordgtm)) |
| **Problem** | Turning daily build work into posts, and publishing images Substack's tools mangled |
| **Stack** | Claude Code hooks and sub-skills, Whisper, Gemini, Serper, Exa, Substack (cookie-based) |
| **Confidence** | High |
| **Last verified** | 2026-10-13 |

## The problem
He wanted posts to come out of the work he was already doing. He also writes that Substack's MCP tool couldn't render images: they showed up as raw text.

## The blueprint
1. A hook fires at the end of every Claude Code session. It reads the transcript, tags tools, files and topics against a taxonomy, and appends to a daily log.
2. When enough sessions pile up on one topic, the queue tells him he has material for a post.
3. Sub-skills cover content generation, headline optimization, image generation, session capture and Slack recaps.
4. A 458-entry knowledge corpus sits behind "Edge Copilot."
5. A custom publisher converts markdown into Substack's ProseMirror JSON, uploads images to Substack's CDN and PUTs the post to the API. Auth comes from a browser session cookie that a wrapper script refreshes.

## Stated results
40+ scripts, 5 sub-skills, 458 wiki entries, $0.04 per headline research run. The per-post cost figure did not come through in retrieval: [UNVERIFIED].

## Caveats
- X handle [UNVERIFIED]. Substack: @jordancrawfordgtm.
- The publisher uses an undocumented API and browser cookies. This is his setup, not a recommendation.

## Sources
- https://edge.blueprintgtm.com/p/heres-how-i-automated-my-entire-substack