Skill

substack

Run your Substack growth loop from the command line — publish, schedule, engage, and measure with cross-table...

Verified: 2026-05-13 (printing-press-ingest-2026-05-13+enrich-capability-skill)

When to use substack

Choose if

You operate a Substack and want an agent to drive the growth loop end-to-end — publishing, cadence-aware Note scheduling, swap-partner reciprocity tracking, attribution joins across publications and Notes. Versus the official Substack web UI, this gives you cross-table SQL-grade analytics no dashboard exposes, and versus single-purpose community wrappers it covers publish + engage + measure in one CLI with `--compact` token-efficient output for agent loops.

Avoid if

Substack has no public API, so this whole capability is a reverse-engineered wrapper across community libraries. Avoid when the agent needs strict SLAs or guaranteed durability — upstream changes can break commands silently, the RSS surface is sometimes blocked by Cloudflare TLS fingerprinting, and the more exotic engagement endpoints aren't in any community wrapper at all (the CLI emits raw curl for them). Production-critical newsletter ops should keep a human in the loop.

Risk Flags

  • MEDIUM auth Authenticates via Substack session cookie (substack.sid) only. If the cookie expires the README directs you to re-run `auth login --chrome`; agents on long autonomous runs must detect this and reauthenticate.
  • MEDIUM rate_limit A built-in cadence guard enforces a minimum 30-minute spacing between own Notes — Substack's algorithm hides or fails Notes posted in the same minute. Heavy publishing loops have to plan around this.
  • MEDIUM data_quality Cloudflare TLS fingerprinting periodically blocks the RSS surface; README's workaround is "retry from a different IP or use `posts archive`". Engagement endpoints are not in any community wrapper and the tool prints curl requests by default for those — meaning the surface is reverse-engineered and can break.
  • LOW scope Substack has no official API. The whole capability rests on community reverse engineering across 8 third-party wrappers; upstream changes can break commands without notice.

Cost

Type: Free · Free tier: The CLI binary is free to install (MIT-licensed family). Authentication is via your existing Substack session cookie (substack.sid) — no API key, no paid plan on the upstream side. Substack itself has no public API; the CLI is a community reverse-engineered wrapper across ~8 third-party libraries.

Install

Default

npx -y @mvanhorn/printing-press install substack
# Authenticate against your existing Substack session:
<cli> auth login --chrome
# If the cookie expires later, re-run the same command.

Setup docs →

Estimated time to first success: ~10 min

Dependencies

Minimum runtime: Node.js (or pre-built Go binary fallback)

Distribution

Repository
https://github.com/mvanhorn/printing-press-library
License
MIT