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.
Been there?
Satori layouts, flexbox quirks, custom fonts as ArrayBuffers — for an image nobody on the team wants to own.
It works locally, then renders tofu in production. Debugging it is nobody’s favorite ticket.
Marketing wants a new color. You open the image route again.
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.
Copy the prompt
It already has your site ID and explains the image URL, so the agent doesn’t have to guess.
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.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
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
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] },
};
}Any HTML <head>
<meta property="og:image"
content="https://getwowimg.com/a1b2c3d4e5/blog/launch-week.png" />
<meta name="twitter:card"
content="summary_large_image" />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.
Free for one site. $59 a year for three.
Try it on your launch. For side projects and build-in-public makers.
- 1 website
- 100 pages with images
- 1 design for the whole site
- 10 AI actions a month
- Small getwowlink badge on images
For bloggers and makers with a few sites on WordPress, Ghost or Webflow.
- 3 websites
- 5,000 pages with images
- 5 section designs per site
- 50 AI actions a month
- No badge on images
For SaaS marketing sites, docs and content-heavy blogs that care about the brand.
- 10 websites
- 50,000 pages with images
- Unlimited section designs
- 300 AI actions a month
- Analytics by platform
- Priority rendering
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.