Skip to content

Weekly

Find Ghost post images missing alt text

Once a week I get a list of posts with images that lack alt text or are too large.

Runs
Weekly
Apps
Ghost
AI
Not needed
Access
Admin API key (read)

Send this to your assistant

Create a ClickRuntime automation: every Monday at 9am, check my published Ghost posts for images without alt text or over 500 KB and email me the posts and image links.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Images are where a Ghost publication quietly loses search traffic. A writer drops in a 4 MB phone photo, forgets the alt text and publishes, and months later the post loads slowly on mobile and gets no image search visibility. Across two hundred posts, nobody can say how many have the problem, because checking means opening every post in the editor and inspecting each picture.

Once a week, published posts are listed with their HTML, every image tag is parsed, and each one is checked for a missing alt attribute and for a very large file size. The posts that need attention are collected into a single email with links, so the fix list is ready to work through in one sitting.

Editors of content sites, SEO freelancers who look after a client's Ghost blog and solo writers with a long archive will find it most useful.

What you get out of it

  • Accessibility gaps get found and fixed

    Missing alt text means screen reader users hear nothing for an image. A weekly list of offending posts turns that from a vague intention into a short task someone can finish before the next newsletter.

  • Page speed improves where it counts

    Oversized images are a common reason a post feels slow on mobile. Naming the heavy ones lets you replace them with compressed versions, which helps visitors stay and helps the page pass speed checks.

  • The archive is audited without opening a single post

    Checking images by hand across hundreds of articles is not realistic, so problems pile up unseen. An automated pass covers every published post and keeps covering new ones as they appear.

  • New posts are caught within a week

    A writer who forgets alt text on Monday has the post flagged by the next report, so bad habits are corrected while the article is still getting its first and most valuable traffic.

  • An easy checklist for freelancers and editors

    The email links straight to each affected post, which makes it simple to hand the list to a junior editor or include it as evidence of work in a monthly client report.

How it works

What happens, step by step

  1. Once a week, ClickRuntime gets every published post from your Ghost site.

  2. It finds each image in each post and checks whether it has alt text.

  3. It also checks each image's file size and flags anything over about 500 KB.

  4. If anything needs fixing, you get one email listing the post title, the problem and the image link.

Before it runs live

  • Connect Ghost

What you get

RunsWeekly
Find Ghost post images missing alt texttoday, 9:00Succeeded
Email · Image auditPricing explained: missing alt text https://blog.example.com/content/images/chart.png Our 2026 roadmap: 1,240 KB https://blog.example.com/content/images/hero.jpg

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Ghost steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
post_image_seo_audit.pyexample
import re, time, jwt
from clickruntime import on_trigger, credentials, notify, http

SITE = "https://blog.example.com"

def ghost_token():
    key_id, secret = credentials.secret("GHOST_ADMIN_API_KEY").split(":")
    now = int(time.time())
    return jwt.encode({"iat": now, "exp": now + 300, "aud": "/admin/"}, bytes.fromhex(secret),
                      algorithm="HS256", headers={"kid": key_id})

@on_trigger
def run(event):
    posts = http.get(f"{SITE}/ghost/api/admin/posts/", headers={"Authorization": f"Ghost {ghost_token()}"},
                     params={"formats": "html", "filter": "status:published", "limit": "all"}).json()["posts"]
    issues = []
    for post in posts:
        for tag in re.findall(r"<img[^>]*>", post.get("html") or ""):
            src = re.search(r'src="([^"]+)"', tag).group(1)
            size = int(http.head(src).headers.get("content-length", 0))
            if 'alt=""' in tag or "alt=" not in tag:
                issues.append(f"{post['title']}: missing alt text {src}")
            if size > 500_000:
                issues.append(f"{post['title']}: {size // 1024} KB {src}")
    if issues:
        notify.email_me(f"Ghost image audit: {len(issues)} issues", "\n".join(issues))
    return {"posts": len(posts), "issues": len(issues)}

FAQ

Common questions

What counts as an oversized image?
The check flags images whose file size passes a threshold you set, commonly around 500 KB to 1 MB for in-article images. You decide the cutoff, since a photography site tolerates larger files than a text-heavy newsletter.
Does it also check the feature image of each post?
It parses the images inside the post HTML. The feature image is a separate field in Ghost, so tell your AI assistant if you want it audited too, and the updated checks are shown for approval first.
Will it change anything in my posts?
No. It only reads published posts and emails a report. Nothing in Ghost is edited, so you stay in charge of when to add alt text or swap images, and no post can be altered by mistake.
What permissions does it need?
Admin API key (read). Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (weekly). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Find Ghost post images missing alt text” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.