The excerpt and alt-text sweep
Two fields almost every blog has bad versions of, and both are easy wins. Excerpts are the snippet that shows up in your homepage cards, your RSS feed, and social shares — and the default is usually the first fifty words of the body, clipped mid-sentence, selling nothing. A deliberate excerpt is the first thing a reader sees on your homepage and can lift in-site click-through noticeably. Feature-image alt text is required for accessibility, used by image search, and ignored by most blogs — a short, accurate alt with the right keyword helps screen-reader users and surfaces in Google Images for long-tail traffic. Both live in frontmatter, both are tedious by hand, and both are easy for an assistant with the post text and (for images) vision in context.
What you need
- Specter synced to your blog
- An AI assistant with vision (needed for the alt-text pass)
- Feature images accessible by URL — Specter preserves these as
feature_imagefrontmatter
The recipe
- Pull. Run a Specter pull so titles, bodies, and feature-image URLs are local.
- Run the excerpt pass. It writes a custom excerpt into each post’s frontmatter.
- Run the alt-text pass. A vision-capable model fetches each feature image and writes a
feature_image_altfield, leaving any human-written alts alone. - Dry-run and push. Spot-check ten posts, then push — frontmatter-only changes are safe in bulk.
The prompt
The excerpt pass:
For each post, read the title and first ~500 words and write a NEW excerpt of
110–150 characters that makes a specific promise, includes the title's primary
keyword naturally, doesn't repeat the title verbatim, avoids "in this post" /
"discover" / "learn about", leads with an active verb, and is a complete
sentence. Write it to the excerpt (or custom_excerpt) frontmatter field,
replacing any existing one. Don't touch the body. Skip posts under 200 words
and log them.
The alt-text pass, which preserves existing alts:
For each post with a feature_image, fetch the image and write alt text of
50–125 characters: describe what's literally in the image first, then weave in
one keyword from the title if natural. Don't start with "An image of" and don't
write a caption. Save it to a new feature_image_alt field. If feature_image_alt
already exists, leave it alone. If the image won't fetch, write nothing and log
the URL.
Cost and time
| Blog size | Tokens (excerpt + alt/vision) | Cost | Wall-clock |
|---|---|---|---|
| 50 posts | ~80k + ~120k | $0.45 | 10 min |
| 200 posts | ~320k + ~480k | $1.80 | 35 min |
| 600 posts | ~960k + ~1.4M | $5.20 | 90 min |
The alt-text pass is the more expensive of the two (vision tokens).
Pitfalls
- Vision hallucination. A model can describe an image plausibly without seeing it. Spot-check five random alts against the actual images.
- Don’t over-stuff. One keyword per alt, max — three reads like spam to assistive tech and to Google alike.
- Don’t overwrite human alts. Anyone who wrote one chose it deliberately; the prompt preserves existing
feature_image_alt, so don’t loosen that.
Where to go next
Because it touches only frontmatter, run it back to back with the schema injector in one dry-run review. If you also run translation bulk apply, generate the alt text per language too — it surfaces in localized image search.