Title & Meta Pixel Optimizer
Crawls titles and meta descriptions, measures rendered pixel width for truncation, checks primary-keyword placement, an…
SKILL.md
---
name: Title & Meta Pixel Optimizer
description: Crawls titles and meta descriptions, measures rendered pixel width for truncation, checks primary-keyword placement, and detects site-wide duplicates, then recommends rewrites that fit the pixel budget. Use when the user wants title-tag and meta-description optimization, truncation checks, or to find duplicate or missing metadata at scale.
category: on-page-seo
---
# Title & Meta Pixel Optimizer
AGENT ROLE: Autonomous metadata-optimization agent. Measure each page's title/meta against pixel and keyword rules, detect duplication, and emit the JSON in `references/output.schema.json`.
## OBJECTIVE
Find titles and meta descriptions that truncate in the SERP, bury or omit the primary keyword, or duplicate other pages — and recommend length-safe rewrites, prioritized by search demand when GSC is connected.
## INPUTS
- `urls` (REQUIRED string[]) OR `sitemap_url`.
- `target_keywords` (OPTIONAL): map `url → primary_keyword`.
- `title_px_budget` (OPTIONAL, default 580), `meta_px_budget` (OPTIONAL, default 920).
- `gsc_site` (OPTIONAL): a verified GSC property to prioritize by impressions.
## AUTHENTICATION / RUNTIME
- Crawl: keyless HTTPS GET, UA `seoskills-title-meta/1.0`, honor robots.
- `gsc_site` prioritization: REQUIRE `GOOGLE_APPLICATION_CREDENTIALS`/OAuth (scope `webmasters.readonly`). IF absent THEN skip prioritization and note `priority_basis="none"`.
## EXPECTED TOOL CALLS
- Run `scripts/title_meta.py --urls a,b,c [--gsc sc-domain:example.com]`.
- Per URL: GET; extract `<title>` and `<meta name="description">`. IF `gsc_site` set: one `searchAnalytics` call for page-level impressions.
## PROCEDURE (deterministic, per page)
STEP 1 — EXTRACT title + meta description text.
STEP 2 — PIXEL WIDTH: estimate rendered width using the per-character width table (proportional font approximation). Flag `TITLE_TRUNCATED` IF width > `title_px_budget`; `META_TRUNCATED` IF > `meta_px_budget`; `TITLE_TOO_SHORT` IF < 200px.
STEP 3 — PRESENCE: `TITLE_MISSING` / `META_MISSING` when absent or empty.
STEP 4 — KEYWORD (if provided): `KEYWORD_NOT_IN_TITLE`; `KEYWORD_NOT_FRONT_LOADED` IF present but after ~30 pixels of other text.
STEP 5 — DUPLICATES: after crawling all pages, group identical (normalized) titles and metas → `DUPLICATE_TITLE` / `DUPLICATE_META` with the sibling URLs.
STEP 6 — PRIORITIZE: `priority = impressions` (GSC) else page order; EMIT issues per page with a length-safe rewrite suggestion (trim/rephrase to fit the budget while keeping the keyword front-loaded).
## RATE LIMITS & ERROR HANDLING
- Crawl: ≤ 5 concurrent, ≥ 150ms per host, timeout 12s. Per-URL failure → `{url, status:"unreachable"}`, continue.
- GSC `429` → backoff `2^attempt` (max 4); on persistent failure disable prioritization (`priority_basis="none"`), keep the audit.
## MISSING / INSUFFICIENT DATA
- Pixel width is an ESTIMATE (real rendering varies by font/locale) — always return both `char_count` and `estimated_px`, and label estimates as such.
- A missing meta description is a finding, not an error (Google may generate one) — severity `warning`, not `critical`.
- Never invent a rewrite that drops the primary keyword to fit the budget; if it cannot fit, flag `IRREDUCIBLE` and return the best trimmed option.
## OUTPUT
One JSON object per `references/output.schema.json`. No prose.
## FILES
- `scripts/title_meta.py` — extraction, pixel-width estimation, keyword + duplicate checks, GSC prioritization.
- `references/output.schema.json` — output contract.
Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.
Embed a badge
More in On-Page SEO
schema
When the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user mentions "schema markup," "structured data," "JSON-LD," "rich snippets," "schema.org," "FAQ schema," "product schema," "review schema," "breadcrumb schema," "Google rich results," "knowledge panel," "star ratings in search," or "add structured data." Use this whenever someone wants their pages to show enhanced results in Google. For broader SEO issues, see seo-audit. For AI search optimization, see ai-seo.
schema-markup
When the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user mentions "schema markup," "structured data," "JSON-LD," "rich snippets," "schema.org," "FAQ schema," "product schema," "review schema," "breadcrumb schema," "Google rich results," "knowledge panel," "star ratings in search," or "add structured data." Use this whenever someone wants their pages to show enhanced results in Google. For broader SEO issues, see seo-audit. For AI search optimization, see ai-seo.
seo-schema
Detect, validate, and generate Schema.org structured data. JSON-LD format preferred. Use when user says "schema", "structured data", "rich results", "JSON-LD", or "markup".
seo-images
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".
seo-image-gen
AI image generation for SEO assets: OG/social preview images, blog hero images, schema images, product photography, infographics. Powered by Gemini via nanobanana-mcp. Requires banana extension installed. Use when user says \"generate image\", \"OG image\", \"social preview\", \"hero image\", \"blog image\", \"product photo\", \"infographic\", \"seo image\", \"create visual\", \"image-gen\", \"favicon\", \"schema image\", \"pinterest pin\", \"generate visual\", \"banner\", or \"thumbnail\".
seo-drift
SEO drift monitoring: capture baselines of SEO-critical elements, detect changes, and track regressions over time. Git for SEO: baseline, diff, and track changes to your on-page SEO. Use when user says "SEO drift", "baseline", "track changes", "did anything break", "SEO regression", "compare SEO", "before and after", "monitor SEO changes", or "deployment check".