OGKit

2026 Open Graph checklist: ship cards that stay correct

  • open-graph
  • checklist
  • social-preview
  • ogkit

You do not need another essay on what og:title means. You need a page you can print, tick, and hand to whoever ships the next landing page — without rediscovering the whole series every time.

This is the series wrap-up: three checklists (15 minutes before ship, 15 minutes after ship, quarterly engineering), a map of which OGKit surface owns each job, and an index of posts 01–11. If an item is unclear, follow the deep link; do not invent policy in a Slack thread.

Honest boundary, same as the rest of the product: third-party multi-previews are approximations. Only each platform’s official debugger can invalidate that platform’s cache.

How to use this page

  • Print or keep one tab open during release. Tick boxes; leave notes next to anything deferred.
  • Prefer fixing the template (layout, CMS default, SSR shell) over one heroic URL.
  • Re-run the relevant slice after you change tags, images, routing, or bot rules — not only after a full redesign.

Self-proof: this article’s own share card is generated from the same blog pipeline as every other post. If you paste this URL into a scanner or debugger and the card is wrong, the checklist failed its own job.

1. Pre-release — 15 minutes

Do this on the production-shaped URL (staging that matches CDN, HTTPS, and bot access — not only localhost with a different shell).

Tags (minimum correct set)

Image

Platforms & crawlers

SPA / SSR

  • curl without a browser shows the same og:* as DevTools after a hard refresh
    SPA / SSR
  • Dynamic routes that need unique cards do not rely on client-only document.title hacks
    dynamic OG images

Private / pre-prod

  • localhost / VPN / auth-walled staging was checked with a local path (extension or fixture), not by pasting secrets into a public checker
    localhost & staging

Fast public pass: paste the URL into the homepage scan. You want rule findings you can act on, not a single green “looks fine” mock card.

2. Post-deploy — 15 minutes (rescrape)

Shipping new HTML is not the same as clearing every platform’s memory of the old card.

  • Confirm production HTML (View Source or curl -A with a social bot UA) has the new tags and image URL
    cache & rescrape
  • For each platform that matters this release, run the official debugger / Post Inspector / refresh flow — not only a third-party preview
    rescrape helper (official entry points by URL)
  • Image URL strategy: either a new path (cache-bust) or accept that you must rescrape every network that already cached the old one
  • Spot-check one real unfurl in Slack / chat / LinkedIn feed after official refresh — approximations lie about cache state
  • If the card is still wrong after rescrape, stop guessing TTL: re-check redirects, final image bytes, and bot-facing HTML first
    blank card patterns

There is no “clear the whole internet” button. Plan rescrape time into the launch checklist the same way you plan DNS TTL.

3. Quarterly engineering checklist

Release heroes burn out. Put the boring gates on a calendar.

CI & baselines

  • Critical templates (home, pricing, docs hub, blog post layout) run an OG check on every PR
    CI regression gate
  • Checks use stable rule ids and a non-zero exit code on failure (treat like ESLint, not a screenshot gallery)
  • Baseline / allowlist exists for known debt — and shrinks over time, not grows forever
  • HTML fixtures or public canaries cover “meta only after JS” and “relative og:image” so refactors cannot reintroduce them silently

Example shape (wire to your real CI; package and flags evolve — verify against the CLI package):

# Public URL or built HTML — exit non-zero on rule failures
npx --yes @og-kit/cli check https://www.example.com/

Image budget

  • Default OG asset pipeline targets a max byte size the team agreed on (document the number; do not rely on folklore alone)
    image engineering
  • Dynamic image routes (Satori / opengraph-image / template API) are load-tested for font subset and timeout failures
    dynamic OG images
  • CDN / signed URL expiry longer than “how long a crawler might retry after a share spike”

Platform & bot matrix

  • Re-verify platform docs numbers you depend on (title length, image slot) — UIs change; mark stale assumptions
  • Re-sample bot UA behavior if you added edge auth, bot management, or a new CDN
    crawler UA guide
  • Tooling review: official debuggers still bookmarked; preview sites only for layout QA
    tooling comparison

Ownership

  • Someone owns “share card broken” on-call or triage — not “whoever last touched the CMS”
  • Needs-human / multi-property audits: use consulting only when the problem is process and surface area, not a missing meta tag

4. OGKit capability map

Use the thinnest surface that can see the URL.

Job Use Not a substitute for
Score a public URL, rule-by-rule Homepage scan + rules docs Official cache invalidation
Understand why a rule fired Rules reference (stable ids) Platform product policy
Compare platform field / crop behavior Platforms + series 03 Pixel-perfect official UI
Force official rescrape Rescrape helper → platform tools Third-party “refresh” buttons
localhost / private HTML Browser extension (page ↔ extension bridge) Pasting cookies into SaaS checkers
CI / filesystem / build output @og-kit/cli check (+ Action thin wrapper when you wire it) Manual DevTools on main
Multi-site / process-heavy audit Consulting A scanner alone

One-line product pitch for the series: OGKit is ESLint + Lighthouse for Open Graph — crawl like a bot, score with named rules, fail the build when share cards would break. It does not replace Meta’s or LinkedIn’s own debuggers.

5. Series index (01–11)

# Topic Link
01 What Open Graph actually solves what-open-graph-really-solves
02 Required OG / Twitter meta tags required-open-graph-meta-tags
03 Platform card differences social-platforms-og-card-differences
04 Image engineering (size, bytes, format, redirects) open-graph-image-engineering
05 Cache, TTL, and rescrape open-graph-cache-and-rescrape
06 SPA crawlers, SSR, prerender spa-open-graph-ssr-prerender
07 Dynamic OG images (Next / Satori) dynamic-og-image-next-satori
08 Crawler user-agents and content forks crawler-user-agents-open-graph
09 CI regression gates open-graph-ci-lint-regression
10 localhost / staging preview gaps preview-open-graph-localhost-staging
11 Choosing tools (debugger / preview / generator) open-graph-tools-comparison
Companion: blank card failure modes why-your-open-graph-card-is-blank
12 This checklist open-graph-checklist-ogkit

One command to start

Public URL, no install required beyond npx:

npx --yes @og-kit/cli check https://www.example.com/

Or paste the same URL into the web scanner. When the report is green and the official debuggers show the new art, you are done — until the next template change, which is why the quarterly and CI rows exist.