Guide

Add a CTA or disclosure to all your posts

By Axel Antas-Bergkvist Published May 10, 2026 Updated May 29, 2026

There is a class of edit that should be one action and is instead a hundred: adding the same block to every post. A newsletter call-to-action at the foot of each article, an affiliate disclosure at the top of your reviews, a standard “about the author” footer. The Ghost editor has no way to insert a block across many posts, so people either skip it, paste it by hand for weeks, or give up — which is a real problem when an affiliate disclosure is not optional but a requirement. An AI recipe across the whole archive makes it a single pass.

Append the block, reviewed before it ships

Specter connects to your Ghost blog in the browser and brings every post into one workspace, so adding the same block everywhere is one recipe instead of a hundred trips into the editor. The cleanest version of this job is adding plain prose — a heading, a sentence, a link — to the end of each post, because that round-trips through Specter reliably. Connect via the first-sync guide, then scope the instruction tightly:

Append this block, exactly as written, to the end of every post, on its own new line. Don’t add it to a post that already contains it, and don’t change anything else:

Enjoyed this? Join the newsletter for a post like it each week.

For a disclosure that belongs at the top, target a category instead of the whole blog:

For every post tagged “reviews”, insert this disclosure as the first paragraph if it isn’t already present. Leave all other posts and all other content untouched.

A note on schema and raw HTML

You may want to add structured data — FAQ or Article JSON-LD schema — to every post. Be a little careful here. Two things are true. First, the most robust place for site-wide schema is usually Ghost’s own code injection or your theme, not pasted into each post body. Second, Ghost doesn’t store your writing as markdown — under the hood it’s Lexical, the format Koenig cards draw from — so Specter works with a faithful projection of each post, not a lossy export. Plain text, headings, lists, and links round-trip cleanly; raw HTML blocks don’t always come back byte-for-byte, the same caveat covered in how Specter handles Ghost cards. For plain CTAs, disclosures, and footers you have nothing to worry about; for embedded HTML, test on one post first and check the round trip before running it across the archive.

Review the diff, then publish

As always, reviewing is free: read the diff to see exactly which posts would update before anything goes live, then approve. Every publish keeps a snapshot behind it, so a block applied to two hundred posts is as easy to pull back as it was to apply if you change the wording. This is the same workflow behind bulk SEO edits and refreshing old posts — one decision, applied everywhere, reviewed before it ships. Browsing and reviewing cost nothing; only the AI run spends credits, and your workspace opens with 500 free. Subscribe now →


Prefer to do this on your own machine, appending the block to plain .md files with a script or your own AI? The desktop and open-source edition runs the same pass locally.