haniubub/seo-toolkit/seo-images
Claude Code and agent skill by haniubub/seo-toolkit
- community
Checking that the SKILL.md file is still in the repository.
Image optimization analysis for SEO and performance. Checks alt text, file sizes, formats, responsive images, lazy loading, CLS prevention, image SERP rankings (via DataForSEO), and image file optimization (WebP/AVIF conversion, IPTC/XMP metadata injection). Use when user says "image optimization", "alt text", "image SEO", "image size", "image audit", "optimize images", "image metadata", "image SERP", "convert to webp", or "image file optimize".
Install
npx vskill@latest install haniubub/seo-toolkit/seo-imagesSKILL.md
Image Optimization Analysis
Checks
Alt Text
- Present on all
<img>elements (except decorative:role="presentation") - Descriptive: describes the image content, not "image.jpg" or "photo"
- Includes relevant keywords where natural, not keyword-stuffed
- Length: 10-125 characters
Good examples:
- "Professional plumber repairing kitchen sink faucet"
- "Red 2024 Toyota Camry sedan front view"
- "Team meeting in modern office conference room"
Bad examples:
- "image.jpg" (filename, not description)
- "plumber plumbing plumber services" (keyword stuffing)
- "Click here" (not descriptive)
File Size
Tiered thresholds by image category:
| Image Category | Target | Warning | Critical | |
|---|---|---|---|---|
| Thumbnails | < 50KB | > 100KB | > 200KB | |
| Content images | < 100KB | > 200KB | > 500KB | |
| Hero/banner images | < 200KB | > 300KB | > 700KB |
Recommend compression to target thresholds where possible without quality loss.
Format
| Format | Browser Support | Use Case | |
|---|---|---|---|
| WebP | 97%+ | Default recommendation | |
| AVIF | 92%+ | Best compression, newer | |
| JPEG | 100% | Fallback for photos | |
| PNG | 100% | Graphics with transparency | |
| SVG | 100% | Icons, logos, illustrations |
Recommend WebP/AVIF over JPEG/PNG. Check for <picture> element with format fallbacks.
Recommended <picture> Element Pattern
Use progressive enhancement with the most efficient format first:
The browser will use the first supported format. Current browser support: AVIF 93.8%, WebP 95.3%.
JPEG XL: Emerging Format
Third-party reporting and Wikipedia describe a Rust-based JPEG XL decoder as shipped in Chrome 145 stable (2026-02-10) behind the chrome://flags/#enable-jxl-image-format flag, not enabled by default; no Google-owned confirmation was retrieved in the fact pack. Because default support is not confirmed, it is not yet practical for production web delivery. Keep serving AVIF/WebP with JPEG fallback and monitor.
Responsive Images
srcsetattribute for multiple sizessizesattribute matching layout breakpoints- Appropriate resolution for device pixel ratios
Lazy Loading
loading="lazy"on below-fold images- Do NOT lazy-load above-fold/hero images (hurts LCP)
- Check for native vs JavaScript-based lazy loading
Detected lazy-loader methods (lazy_method field)
claude-seo run parse_html.py classifies each image's lazy-loading mechanism via the lazy_method field on every image entry. Five values:
lazy_method | Signal detected | Common stack | |
|---|---|---|---|
native | loading="lazy" HTML attribute | Modern browsers, plain HTML | |
perfmatters | data-perfmatters-src/-srcset OR class perfmatters-lazy | WordPress + Perfmatters plugin | |
ewww | data-ewww-src / data-eio OR class lazyload-eio | WordPress + EWWW Image Optimizer | |
js-generic | data-src / data-lazy-src / data-original / data-srcset OR class lazyload/lazyloaded/lazy | Lazysizes, vanilla-lazyload, jQuery plugins | |
none | Neither attribute nor class signal | Page is not lazy-loading this image |
When auditing image SEO, report lazy_method alongside loading so users know whether their site is using a JS-driven lazy-loader (in which case the native loading="lazy" attribute is intentionally absent, that is not a regression).
fetchpriority="high" for LCP Images
Add fetchpriority="high" to your hero/LCP image to prioritize its download in the browser's network queue:
Critical: Do NOT lazy-load above-the-fold/LCP images. Using loading="lazy" on LCP images directly harms LCP scores. Reserve loading="lazy" for below-the-fold images only.
decoding="async" for Non-LCP Images
Add decoding="async" to non-LCP images to prevent image decoding from blocking the main thread:
CLS Prevention
widthandheightattributes set on all<img>elementsaspect-ratioCSS as alternative- Flag images without dimensions
File Names
- Descriptive:
blue-running-shoes.webpnotIMG_1234.jpg - Hyphenated, lowercase, no special characters
- Include relevant keywords
CDN Usage
- Check if images served from CDN (different domain, CDN headers)
- Recommend CDN for image-heavy sites
- Check for edge caching headers
Output
Image Audit Summary
| Metric | Status | Count | |
|---|---|---|---|
| Total Images | - | XX | |
| Missing Alt Text | ❌ | XX | |
| Oversized (>200KB) | ⚠️ | XX | |
| Wrong Format | ⚠️ | XX | |
| No Dimensions | ⚠️ | XX | |
| Not Lazy Loaded | ⚠️ | XX |
Prioritized Optimization List
Sorted by file size impact (largest savings first):
| Image | Current Size | Format | Issues | Est. Savings | |
|---|---|---|---|---|---|
| ... | ... | ... | ... | ... |
Recommendations
- Convert X images to WebP format (est. XX KB savings)
- Add alt text to X images
- Add dimensions to X images
- Enable lazy loading on X below-fold images
- Compress X oversized images
Image SERP Analysis
When DataForSEO MCP is available, enhance the image audit with competitive data.
/seo images serp <keyword>
Cross-reference on-page images with Google Images SERP rankings.
Workflow:
- Fetch Google Images results via
serp_google_images_live_advanced(depth=100) - Extract: top domains, image types, alt text patterns
- Output competitor image SERP landscape
Output:
| Rank | Domain | Title/Alt | Image URL | Page URL | |
|---|---|---|---|---|---|
| 1 | example.com | "Blue running shoes..." | .../shoes.webp | /products/... |
Analysis includes:
- Domain dominance: which sites own the most image positions (top 10 by count)
- Alt text patterns: common title/alt patterns in top-ranking images
- Format distribution: WebP vs JPEG vs PNG in top results
- Opportunity score: keywords where you have page rankings but no image presence
If DataForSEO MCP is not available, inform user and suggest installing the extension.
Image File Optimization
Optimize image files for SEO: format conversion, metadata injection, compression.
/seo images optimize <path>
Optimize image file(s) for web and SEO. Converts to WebP/AVIF, injects IPTC metadata, compresses, and generates responsive variants.
Tools used (in order of preference):
exiftool-- EXIF/IPTC/XMP read/write (install:sudo apt install libimage-exiftool-perl)cwebp-- WebP conversion (install:sudo apt install webp)- ImageMagick
convert-- Format conversion, resizing (pre-installed on most systems) - FFmpeg -- Fallback for format conversion (pre-installed)
Before running: Check which tools are available with which exiftool cwebp convert ffmpeg.
Format Conversion
Convert images to modern formats with metadata preservation:
Metadata Injection (IPTC for Google Images Display)
Google Images displays IPTC Creator, Credit Line, and Copyright in search results. This is NOT a ranking factor but can improve Google Images display and brand attribution.
With exiftool (preferred):
With ImageMagick (fallback):
Note: WebP supports EXIF and XMP but not IPTC natively. For WebP files, use XMP fields instead of IPTC. exiftool handles this conversion automatically.
AI-Generated Images: DigitalSourceType (Merchant Center requirement)
For product images produced by generative AI, Google Merchant Center requires IPTC DigitalSourceType: TrainedAlgorithmicMedia metadata. This is an operational policy requirement, not a ranking factor: feeds missing this label on AI-generated imagery can be disapproved.
Primary source (Merchant Center AI-generated content policy): https://support.google.com/merchants/answer/14743464 (the ai-optimization-guide does not document DigitalSourceType/IPTC/Merchant labeling.)
Audit command:
Raw exiftool equivalents (for ad-hoc usage):
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/seo-images/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/haniubub/seo-toolkit/seo-images)