omriluz
/
image-seo
Claude Code skill for image SEO — alt text, file naming, WebP, original imagery, placement. Based on Edward Sturm's framework.
image-seo
A Claude Code skill for image SEO — covers the five-step framework from Edward Sturm's The AdWords Show Ep. 1,046, "Image SEO Secrets: 241,000 Impressions from Optimizing Alt Text" (video).
The unique insight: use your image filenames as a prompt to an LLM that's also looking at the full page content, then have it write contextual alt text. Cited results from the video: 7,000+ clicks, 241,000+ impressions, 2.9% CTR from image optimization alone.
Install
Via Vercel's skills CLI — use the -g (global) flag:
npx skills add omriluz/image-seo -g
Works with 18+ AI agents including Claude Code, Cursor, GitHub Copilot, Codex, Cline, OpenCode, and more. After install, restart your agent so it picks up the new skill (Claude Code only scans ~/.claude/skills/ at session start — run /exit and re-launch).
Why
-gand not the defaultnpx skills add omriluz/image-seo? The default does a project-scoped install…
Every developer reading this has published a page with an image named IMG_2847.jpg and blank alt text.
Every. Single. One.
And then you wonder why Google Images sends you zero traffic.
I watched a YouTube video last month that didn't just make me cringe—it made me feel like I'd been leaving actual money on the table for years. Edward Sturm, on episode 1,046 of The AdWords Show, casually revealed he got 241,000 Google impressions and 7,000+ clicks just by fixing his image alt text.
No backlink begging. No "content refresh." Just the tedious, boring thing we all skip because it feels like busywork.
I'm a developer. When I'm annoyed, I build things. So I built a Claude Code skill to automate it. But the real gold wasn't the automation—it was the absurdly simple framework I uncovered. I almost wanted to kick myself.
The thing nobody tells you about alt text
Here's what everyone knows: alt text should describe the image. Be specific. Don't leave it blank.
Groundbreaking, right?
But here's the quiet insight that Edward surfaced, and it changed everything for me:
Your image filename is a prompt.
Think about it. When you name a file use-cases_image-seo-tips_screenshot-from-ahrefs-showing-my-seo-wins.webp, you've pre-loaded the context. You've told the LLM exactly what it's looking at, what page it's on, and what the surrounding content is about—before you write a single word of alt text.
Then you paste your page content into Claude and say:
"Use the file names and page content to write contextual alt text for each image."
The model now works from three signals at once: the engineered filename, the article copy, and the image itself. The output isn't a robotic "screenshot of analytics dashboard." It's something that actually earns a ranking.
So embarrassingly simple I'd never thought of it. And I suspect you haven't either.
The 5-step framework (with brutal honesty scores)
Edward's video builds on a framework from SEO researcher Hridoy Rahman. Here are the five steps, complete with importance scores that are far more blunt than any corporate blog would ever give you.
1. Rename the file before upload — 20/100
Not that important. But do it. Lowercase, hyphens, descriptive.
IMG_2847.jpg → blue-nike-pegasus-40-side.webp
One rule: do it before upload. Renaming after is a CMS nightmare you don't deserve.
2. Compress to WebP — 70/100
A 2 MB image loads like a sloth on sedatives. A slow page is a buried page. Edward uses CloudConvert so often that Google flags it as a site he visits frequently. Some folks are going further with AVIF (reportedly 2 MB → 20 KB). WebP is the safe, lazy default.
3. Write contextual alt text — 100/100
The big one. And the one we all shortcut.
Edward's naming convention makes this scale effortlessly:
subfolder_url-slug_descriptive-file-name.webp
Real example:
use-cases_image-seo-tips_screenshot-ahrefs-241k-impressions.webp
That filename is the prompt. The LLM does the rest.
4. Use original images, not stock — "super important"
Google can tell you're using the same Shutterstock photo as 40 other sites. For SaaS: screenshot your actual product. Drop contextual emojis into the screenshot where they help the copy make sense. It sounds weird. It works.
For landing pages where the same image appears across multiple pages: upload a separate copy per page so you can give each one a page-specific filename. Some CMSs need a plugin to support per-page alt text; this sidesteps the problem entirely.
5. Place images near relevant text — 40/100
This one comes with a note: "honestly so important."
The 40/100 is for pure ranking signal. But Google uses surrounding text to understand an image. Your image, the nearest <h2>, and the paragraph below it should all sing the same tune. If they don't, you're confusing the crawler. And confused crawlers don't send traffic.
Why I built a skill (and what that even means)
For the developers: a "skill" in Claude Code is just a Markdown file you drop into ~/.claude/skills/your-skill-name/SKILL.md.
Claude Code reads it at startup. From then on, whenever you start talking about alt text or image filenames, the agent knows the full framework—Edward's naming convention, the LLM prompt, the WebP workflow, the checklist, the common mistakes. All of it. Without you re-explaining a single thing.
It's not code. It's structured knowledge. You're briefing your agent the way you'd brief a new hire who actually reads the docs.
The hardest part wasn't the content. It was the trigger description—that one-line summary in the front matter that tells the agent when to wake up. Too vague and it fires constantly. Too narrow and it sits dormant forever.
What finally worked? Listing specific anti-patterns.
description: Use when optimizing images for SEO — renaming files, writing alt
text, compressing to WebP... Also use when auditing a site whose images are
named `IMG_1234.jpg` or have blank alt text.
The IMG_1234.jpg pattern is what made the trigger reliable. The agent now recognizes the smell of a problem, not just the abstract concept of "image SEO." And that's a game-changer.
The QA checklist (steal this)
I added this to the end of the skill, and it's what I actually reach for the most. Run it before you publish. You'll catch something almost every time.
"Click to expand the full checklist"
IMG_*, no Screenshot_*)subfolder_page-slug_descriptive-name.webp
alt="")
That collapsible block? That's your new pre-publish ritual. Share it with someone who still has IMG_2847.jpg on their production site. You'll both feel better.
The surprising part
I thought the interesting part of this project was the SEO framework.
It wasn't.
The interesting part was realizing how much valuable, actionable knowledge sits inside YouTube videos and Twitter threads, never getting operationalized. Edward spent time figuring out a system that delivers a 2.9% CTR from image optimization alone. That knowledge lives in a 20-minute video most people watch once and then forget.
A skill is just a way to make that knowledge permanent and available in context. You're not automating the thinking—you're making sure the thinking is always in the room.
That's a different way to relate to expertise. And I'm going to keep building skills around it.
Install it:
npx skills add omriluz/image-seo -g
Restart Claude Code. Then just start talking about images or alt text—it'll activate automatically. Or invoke it directly with /image-seo.
Repo:
omriluz
/
image-seo
Claude Code skill for image SEO — alt text, file naming, WebP, original imagery, placement. Based on Edward Sturm's framework.
image-seo
A Claude Code skill for image SEO — covers the five-step framework from Edward Sturm's The AdWords Show Ep. 1,046, "Image SEO Secrets: 241,000 Impressions from Optimizing Alt Text" (video).
The unique insight: use your image filenames as a prompt to an LLM that's also looking at the full page content, then have it write contextual alt text. Cited results from the video: 7,000+ clicks, 241,000+ impressions, 2.9% CTR from image optimization alone.
Install
Via Vercel's skills CLI — use the -g (global) flag:
npx skills add omriluz/image-seo -g
Works with 18+ AI agents including Claude Code, Cursor, GitHub Copilot, Codex, Cline, OpenCode, and more. After install, restart your agent so it picks up the new skill (Claude Code only scans ~/.claude/skills/ at session start — run /exit and re-launch).
Why
-gand not the defaultnpx skills add omriluz/image-seo? The default does a project-scoped install…
Framework credit: Hridoy Rahman and Edward Sturm — The AdWords Show Ep. 1,046 (watch it, seriously)
If the checklist caught something on your last publish, drop it in the comments. I'm genuinely curious how many IMG_* files are still out there. And if this made you laugh or feel slightly attacked, sharing it is the legally required response.

Top comments (0)