getwowlink
For developers

Stop hand-coding OG images.

Give your coding agent one prompt. It adds the tags to every page; we render, cache and serve an OG image for each route. The design lives in a visual editor, not in your repo.

Claude Code, Cursor, Codex — any stack
or by hand:Next.jsPHPHTML

Been there?

“300 lines of @vercel/og for a picture.”

Satori layouts, flexbox quirks, custom fonts as ArrayBuffers — for an image nobody on the team wants to own.

“Fonts and emoji break in the edge runtime.”

It works locally, then renders tofu in production. Debugging it is nobody’s favorite ticket.

“Every design tweak is a PR.”

Marketing wants a new color. You open the image route again.

HOW IT WORKS

One prompt. Your agent does the rest.

Claude Code, Cursor or Codex finds where your site builds <head> and adds the tags on every page — static, dynamic and catch-all routes.

1

Copy the prompt

It already has your site ID and explains the image URL, so the agent doesn’t have to guess.

Prompt for Claude Code, Cursor or any coding agent
Add Open Graph preview images from getwowlink to this site (yourproduct.com).

How it works: getwowlink renders a preview image for any page of the site from that page's path. The image lives at

https://getwowimg.com/a1b2c3d4e5/<page path>.png

where <page path> is the path of the page the tags are on, as it appears in the URL (percent-encoded, no query string, no leading or trailing slash), and "index" for the home page. For example, https://yourproduct.com/blog/hello-world uses https://getwowimg.com/a1b2c3d4e5/blog/hello-world.png. Every page must pass its own path, computed when the page is rendered — not one hardcoded URL for the whole site.

Task: make every page's <head> contain exactly one of each of these tags, all pointing at that page's image:
- og:image, plus og:image:width 1200 and og:image:height 630
- twitter:card = summary_large_image
- twitter:image

Remove or override any existing og:image / twitter:image tags so they don't conflict. Don't add dependencies.

For example, /blog/launch-week should end up with:

<meta property="og:image" content="https://getwowimg.com/a1b2c3d4e5/blog/launch-week.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://getwowimg.com/a1b2c3d4e5/blog/launch-week.png" />

When done, check a couple of different pages: og:image must be https://getwowimg.com/a1b2c3d4e5/ followed by that page's own path and .png.
2

Paste it into your agent

It adds the tags to every page and replaces old og:image tags. Deploy, share any link — the dashboard turns green.

  • Works with any framework that renders <head>
  • Images cached on a CDN, rebuilt when a page changes
  • Pages over the limit get your fallback image — never a 500
  • Same image for X, LinkedIn, Slack, WhatsApp, iMessage
PREFER TO DO IT BY HAND?

It’s one meta tag

Fine for a single layout or a small static site. Most teams hand it to the agent.

Next.js App Router

app/[[...slug]]/page.tsx
export async function generateMetadata({ params }) {
  const { slug } = await params;
  const path = (slug ?? []).join("/") || "index";
  const image = "https://getwowimg.com/a1b2c3d4e5/" + path + ".png";
  return {
    openGraph: { images: [{ url: image, width: 1200, height: 630 }] },
    twitter: { card: "summary_large_image", images: [image] },
  };
}
Next.js guide →

Any HTML <head>

<head> of /blog/launch-week
<meta property="og:image"
  content="https://getwowimg.com/a1b2c3d4e5/blog/launch-week.png" />
<meta name="twitter:card"
  content="summary_large_image" />
HTML guide →PHP guide →

Hand the design to someone else

Designers and marketers edit fonts, colors and layout in the editor. Your code never changes.

Nothing to run

No image route, no headless browser, no font files in the repo.

Debug it like a page

Open the image URL in a browser. Check any route in 6 apps with the free checker.

PRICING

Free for one site. $59 a year for three.

Free

Try it on your launch. For side projects and build-in-public makers.

$0forever
No card needed
Start free
  • 1 website
  • 100 pages with images
  • 1 design for the whole site
  • 10 AI actions a month
  • Small getwowlink badge on images
Indie

For bloggers and makers with a few sites on WordPress, Ghost or Webflow.

$59/ year
Under $5 a month · save 30%
  • 3 websites
  • 5,000 pages with images
  • 5 section designs per site
  • 50 AI actions a month
  • No badge on images
Recommended
Pro

For SaaS marketing sites, docs and content-heavy blogs that care about the brand.

$190/ year
$15.83 a month · 2 months free
  • 10 websites
  • 50,000 pages with images
  • Unlimited section designs
  • 300 AI actions a month
  • Analytics by platform
  • Priority rendering
Prices in USD, taxes added at checkout. Cancel anytime. An AI action is one generated design or one AI edit.Compare all plans →
FAQ

Before you ask

What exactly do you read from my page?

The final HTML that crawlers see: title, og:title, og:image, description and any fields you map in the editor (author, price, date). Nothing runs on your server.

How fresh are images?

They’re cached on a CDN and rebuilt when the page’s content changes.

Rate limits or cold starts?

Crawlers get a cached image. A new page renders on its first request; if anything goes wrong, the crawler gets your fallback image, never an error.

Can I keep @vercel/og for some routes?

Yes. Only routes that point og:image at getwowlink use it.

One URL instead of an image pipeline

Check a route first — see how it shares today and what getwowlink would make for it.

Free · no sign-up · see your link in X, LinkedIn, Slack, WhatsApp and more