Shipseal

Open source CLI and GitHub Action

Your release, as an image. Automatically.

Shipseal is a command line tool that reads your repo, then renders a folder of ready-to-post images for a release, a milestone or a benchmark. Your colors, your logo, correct size for every platform. Every number on the card comes from a real source, never from a model.

$ npx shipseal@latest init
Shipsealv0.0.6

Never put a truncated headline on a card

Every release, sealed and ready to share

github.com/akii09/shipsealmade with shipseal.dev
v0.0.6 from the git tagheadline from CHANGELOG.mdthe link from the git remotesealed. every number has a source

A real card from the v0.0.6 release, annotated. Nothing here is mocked up.

The problem

Shipping got faster.
Announcing it did not.

Every release wants an OG image, an X card, a LinkedIn card, a GitHub preview. So you skip them, or lose an hour in Figma, or let an image model invent a number that was never true and mangle the text on the way.

Shipseal takes the hour back, and refuses to invent anything.

What you get

One command, one folder, eight images

.shipseal/output/v0.4.2/
├── release-hero-og.png              1200x630   link previews
├── release-hero-github-social.png   1280x640   repo preview
├── release-hero-x.png               1200x675   X posts
├── release-hero-linkedin.png        1200x627   LinkedIn
├── release-highlights-x.png         1200x675   what changed
├── release-highlights-linkedin.png  1200x627   what changed
├── code-card-x.png                  1200x675   snippet
├── code-card-linkedin.png           1200x627   snippet
└── manifest.json                               every fact, and where it came from

How it works

Five steps, no browser

  1. 01

    Read

    Facts already in your repo: the tag, the changelog, contributors, stars, downloads.

  2. 02

    Decide

    Optional AI picks the highlights and writes the headline. Words only, never numbers.

  3. 03

    Design

    Facts drop into templates wearing your brand colors, fonts and logo.

  4. 04

    Render

    Takumi rasterises to PNG in milliseconds. No browser, no image model.

  5. 05

    Deliver

    Files land in a folder, attach to the GitHub release, or both.

Verified facts

The manifest is the proof

An AI writes words. Code writes numbers. Every figure on a card comes from git, the GitHub API, npm or your own CI, and lands in manifest.json with the exact reference it came from. If a fact is missing, the element is hidden. Nothing is estimated and nothing is invented.

"release.commitCount": {
  "value": 7,
  "source": "git",
  "ref": "git rev-list --count
          v0.0.5..v0.0.6",
  "fetchedAt": "2026-09-11T18:38:21Z"
}

From Shipseal's own v0.0.6 manifest. Run the ref and you get 7.

One event, every size

Sized for the places you post

og1200x630Link previews
github-social1280x640Repo preview
x1200x675X posts
linkedin1200x627LinkedIn

Release story packs add the square, portrait and Product Hunt sizes. The README banner size is defined but not yet rendered by any template.

For your agent

Reading docs? In this economy?

Copy the prompt, paste it into your coding agent, go get a coffee. It reads the real API and wires Shipseal into your repo. We will not tell anyone.

Take the prompt

Humans welcome too. The docs are right there.

Your next release deserves better than a text post.

$ npx shipseal@latest init

MIT licensed. Node 22 or newer. No account, no server, and the CLI sends no telemetry. What this site measures.