seoskills.sh
Catalog/Programmatic SEO/Product Feed SEO Optimizer

Product Feed SEO Optimizer

Audits a Google Merchant product feed for title quality, attribute completeness, and GTIN/identifier validity using the…

Updated

New

Use this skill

$ npx skills add seoskills.sh/product-feed-seo-optimizer
Repository
seoskills.sh
GitHub stars
License
MIT

About this skill

Product Feed SEO Optimizer is a Programmatic SEO skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves large-scale page generation and ecommerce SEO built for consistent quality. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.

SKILL.md

Product Feed SEO Optimizer

AGENT ROLE: Autonomous product-feed agent. Validate identifiers and attributes, score and rewrite titles against a demand-informed pattern, generate Product schema, join Merchant Center disapprovals, and emit the JSON in references/output.schema.json. One diff that improves organic and Shopping together.

OBJECTIVE

For every product in a feed, return: identifier validity (real GTIN check digit), attribute completeness, a title score with a rewritten demand-informed title (diff), recommended Product JSON-LD, and any Merchant Center disapproval — so the feed ranks in Shopping and the landing pages win rich results.

INPUTS

  • feed (REQUIRED via --feed): a Google Merchant product feed as TSV/CSV (id, title, description, link, image_link, availability, price, brand, gtin, mpn, condition, color, size, ...) or JSON array of product objects. Format is auto-detected.
  • volumes (OPTIONAL via --volumes): JSON map of term -> monthly volume; drives demand-informed title front-loading.
  • title_pattern (OPTIONAL, default "{brand} {title} {color} {size}"): tokens {brand} {title} {color} {size} {material} {gender} {category}.
  • title_max (OPTIONAL, default 150): Merchant title limit; title_optimal (OPTIONAL, default 70): organic visible length.
  • merchant_id (OPTIONAL via --merchant-id): when set, disapprovals are pulled from the Content API for Shopping.
  • max_products (OPTIONAL, default 100000) and max_status_pages (OPTIONAL, default 40): cost guards.

AUTHENTICATION (Content API for Shopping)

  1. The feed file is local and needs no credentials.
  2. IF --merchant-id is passed THEN REQUIRE env CONTENT_API_ACCESS_TOKEN (OAuth bearer, content scope). IF unset THEN STOP error.code="AUTH_MISSING_CONTENT_API". IF the token is rejected THEN STOP error.code="AUTH_CONTENT_API_FORBIDDEN". Calls productstatuses.list.

EXPECTED TOOL CALLS

  • Run scripts/product_feed_optimizer.py --feed feed.tsv [--volumes volumes.json] [--merchant-id 1234567] [--title-pattern "{brand} {title} {color} {size}"].
  • Zero network calls in the offline path; paginated productstatuses.list (250/page) only when --merchant-id is set.

PROCEDURE (deterministic, per product)

STEP 1 — IDENTIFIER: strip non-digits from gtin; validate length in {8,12,13,14} and the GS1 mod-10 check digit. Status = gtin_valid / invalid_gtin / brand_mpn / identifier_exempt (when identifier_exists=false) / missing_identifier. STEP 2 — ATTRIBUTES: check the required Merchant set (id, title, description, link, image_link, availability, price, condition, gtin-or-mpn); add color/size/gender/age_group for apparel categories; compute coverage and the missing list. STEP 3 — TITLE AUDIT: penalize over-limit length, over-optimal length (info), promotional ALL-CAPS, promotional phrases, brand not front-loaded, and keyword stuffing; produce a 0-100 title score. STEP 4 — REWRITE: compose a title from title_pattern; IF volumes given THEN front-load the highest-volume phrase the product actually matches; truncate at a word boundary to title_max. Emit old vs new and title_changed. STEP 5 — SCHEMA: generate recommended Product JSON-LD (name, brand, sku, mpn, valid gtin, image, description, offers{price, priceCurrency, availability, itemCondition, url}). STEP 6 — DISAPPROVALS: IF --merchant-id THEN map each product id to its disapproved item-level issues from the Content API. STEP 7 — EMIT products sorted worst-coverage-first with feed-level rollups.

RATE LIMITS & ERROR HANDLING

  • Content API 429 -> backoff 2^attempt (max 5) then STOP RATE_LIMITED; 5xx retry <=3 then STOP REQUEST_FAILED; pages are fetched sequentially with pacing (concurrency 1) and capped at --max-status-pages.
  • 401/403 from the Content API STOP AUTH_CONTENT_API_FORBIDDEN.
  • An empty or unparseable feed STOPs error.code="EMPTY_FEED".

MISSING / INSUFFICIENT DATA

  • WITHOUT --volumes titles are rewritten structurally only (demand_informed=false, demand_lead_keyword=null); no volume is invented and no keyword is front-loaded on a guess.
  • WITHOUT --merchant-id disapprovals are not fetched (disapprovals_source="none"); the audit never claims a product is approved or disapproved.
  • schema_status="recommended" reflects that JSON-LD is generated from feed data; the skill does not assert the markup is live on the page unless that is separately verified.
  • A GTIN that is absent is missing_identifier (or brand_mpn/identifier_exempt), never silently treated as valid; a present-but-wrong GTIN is invalid_gtin.

OUTPUT

One JSON object per references/output.schema.json.

FILES

  • scripts/product_feed_optimizer.py — feed parsing, GS1 GTIN validation, attribute + title audit, demand-informed title rewrite, Product JSON-LD generation, Content API disapproval join.
  • 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

seoskills.sh install badge

More in Programmatic SEO

Programmatic SEOcoreyhaines31/marketingskills

programmatic-seo

When the user wants to create SEO-driven pages at scale using templates and data. Also use when the user mentions "programmatic SEO," "template pages," "pages at scale," "directory pages," "location pages," "[keyword] + [city] pages," "comparison pages," "integration pages," "building many pages for SEO," "pSEO," "generate 100 pages," "data-driven pages," or "templated landing pages." Use this whenever someone wants to create many similar pages targeting different keywords or locations. For auditing existing SEO issues, see seo-audit. For content strategy planning, see content-strategy.

131.7K installs
Programmatic SEOagricidaniel/claude-seo

seo-programmatic

Programmatic SEO planning and analysis for pages generated at scale from data sources. Covers template engines, URL patterns, internal linking automation, thin content safeguards, and index bloat prevention. Use when user says "programmatic SEO", "pages at scale", "dynamic pages", "template pages", "generated pages", or "data-driven SEO".

5.3K installs
Programmatic SEOagricidaniel/claude-seo

seo-ecommerce

E-commerce SEO analysis: Google Shopping visibility, Amazon marketplace intelligence, product schema validation, competitor pricing analysis, and marketplace keyword gaps. Combines on-page product SEO with marketplace data from DataForSEO Merchant API. Use when user says "ecommerce SEO", "product SEO", "Google Shopping", "marketplace SEO", "product schema", "Amazon SEO", "product listings", "shopping ads", or "merchant SEO".

4.7K installs
Programmatic SEOnexscope-ai/ecommerce-skills

product-page-seo

Optimize e-commerce product pages for search engine visibility. On-page SEO, structured data, page speed, mobile optimization, and content strategy for Google, Bing, and platform-specific search.

975 installs
Programmatic SEOaffilino/ecommerce-seo-audit-skill

ecommerce-seo-audit

Comprehensive ecommerce SEO audit for product pages, collection pages, technical SEO, log file analysis, and competitor research. Use when the user asks for SEO audit, ecommerce SEO review, collection page optimization, product page SEO, crawl analysis, or wants to improve organic rankings.

824 installs
Programmatic SEOseoskills.sh

Programmatic Link Mesh Builder

Models a generated page set as a directed graph, computes PageRank by power iteration and finds orphan and unreachable…

New