Persian SEO
TronIsHere/vibefarsiui
Technical and on-page SEO for Persian (Farsi) websites: lang and hreflang for fa-IR, RTL-safe metadata, Persian titles and descriptions, slug and URL strategy for Persian content, ZWNJ and keyword…
Optimize AEM Edge Delivery Services commerce product pages for search engine crawling and indexing.
$ npx skills add adobe/skills --skill product-page-seo -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install adobe/skills product-page-seo --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo .claude/skills/product-page-seo && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "product-page-seo" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo into .claude/skills/product-page-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "product-page-seo", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add adobe/skills --skill product-page-seo -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install adobe/skills product-page-seo --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo .agents/skills/product-page-seo && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "product-page-seo" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo into .agents/skills/product-page-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "product-page-seo", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adobe/skills --skill product-page-seo -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install adobe/skills product-page-seo --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo .cursor/skills/product-page-seo && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "product-page-seo" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo into .cursor/skills/product-page-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "product-page-seo", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/adobe/skills.git --path plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add adobe/skills --skill product-page-seo -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install adobe/skills product-page-seo --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo .gemini/skills/product-page-seo && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "product-page-seo" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo into .gemini/skills/product-page-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "product-page-seo", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install adobe/skills product-page-seoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add adobe/skills --skill product-page-seo -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo .github/skills/product-page-seo && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "product-page-seo" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo into .github/skills/product-page-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "product-page-seo", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adobe/skills --skill product-page-seo -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install adobe/skills product-page-seo --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo .opencode/skills/product-page-seo && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "product-page-seo" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo into .opencode/skills/product-page-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "product-page-seo", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
product-page-seoOptimize AEM Edge Delivery Services commerce product pages for search engine crawling and indexing.
Product Page SEO is an agent skill from adobe/skills. Optimize AEM Edge Delivery Services commerce product pages for search engine crawling and indexing. Audits client-side rendered product content for crawlability, validates meta tags, Product schema.org structured data, canonical URLs, and image optimization. Addresses the core challenge that EDS product pages render catalog data via JavaScript, which search crawlers may not fully execute. Use when product pages are not appearing in search results or have poor search visibility.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `CHANGELOG.md`, `package.json` and `references/product-page-seo-reference.md`).
It sits in Marketing & SEO, covering Schema markup, Technical SEO and On-page SEO. It works with Adobe Experience Manager and JavaScript. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c8f44ec. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
schema.orggoogle.comsitemaps.orgAlso links to:
search.google.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Product Page SEO loads about 2.8k tokens when it runs, and up to ~3.7k if it reads all its reference files. Until then it costs about 125 tokens; SKILL.md has 1,121 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from adobe/skills at commit c8f44ec, republished under its Apache-2.0 licence (© adobe). 1,121 words, ~2,786 tokens.
.claude/skills/product-page-seo/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Audit AEM Edge Delivery Services commerce product pages for search engine crawlability, then remediate. EDS commerce PDPs are unusual: the initial HTML is a template with a product-details block but no catalog data. The block's JavaScript reads the product ID from the URL, queries the Catalog Service GraphQL API, and renders name, price, description, and images into the DOM.
The risk: crawlers may not execute that JavaScript, or may not wait for the API call. Googlebot renders JS with a delay and resource limits; Bing, social, and AI bots often skip it entirely. Anything not in the initial HTML response is not guaranteed to be indexed. The EDS query index also only covers authored document content, so route-based product data never enters it.
This skill fetches external web pages for analysis. When fetching:
Product pages are live but absent from search results, flagged "Discovered/Crawled - currently not indexed" in Search Console, lacking rich results, or losing rankings after migrating from a server-rendered platform. Also for SEO readiness checks before launch or after PDP block/catalog changes.
Not suited for non-commerce EDS pages (no client-side rendering issue), Adobe Commerce backend SEO, general content/keyword SEO, or initial storefront setup (use storefront-setup first).
storefront-setup (set up the PDP/PLP first), catalog-audit (validate catalog data accuracy), structured-data (non-commerce schema), sitemap-audit (verify product URLs are in the sitemap).
Sample at least 3 product pages (one simple, one configurable, one from another category). For each, compare what a non-JS crawler sees against what a browser renders.
Fetch the raw, non-executed HTML — this is the crawler's view:
curl -sL -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
"https://store.example.com/products/blue-jacket" -o raw.html
# Inspect what is present without JS:
grep -iE "<title>|name=\"description\"|rel=\"canonical\"|application/ld\+json|og:" raw.htmlFor each page, record whether each element is in the initial HTML or added by JS:
| Content Element | In Initial HTML? | Added by JS? | SEO Impact |
|---|---|---|---|
| Product name (H1) | ? | ? | Critical |
| Product price | ? | ? | Critical (rich results) |
| Product description | ? | ? | High |
| Product images | ? | ? | High |
<title> | ? | ? | Critical |
<meta name="description"> | ? | ? | High |
og:title, og:image | ? | ? | Medium |
| JSON-LD structured data | ? | ? | High |
| Canonical URL | ? | ? | Critical |
If the initial HTML contains none of the product-specific content, that is a P0 crawlability risk.
In the raw HTML <head>, verify product-specific meta exists before JS runs:
{Product Name} | {Brand}, 50-60 chars. A generic template title that only updates after JS is P0.og:title, og:description, og:image (primary product image), og:type=product, og:url matching canonical. Missing og:image is P1.If meta is JS-only, recommend a strategy from references/product-page-seo-reference.md.
Check for <script type="application/ld+json"> with a Product type in the raw HTML. Absent = P0; present but JS-injected only = P1. Verify required properties are populated and that price/availability match the displayed values (mismatches violate Google policy = P0). See the property table in references/product-page-seo-reference.md.
Inject the schema in the PDP block (product-details.js) after product data loads, and ideally also server/edge-side for non-JS crawlers:
function injectProductSchema(product) {
const schema = {
'@context': 'https://schema.org',
'@type': 'Product',
name: product.name,
image: product.images?.map((i) => i.url),
description: product.description,
sku: product.sku,
brand: product.brand ? { '@type': 'Brand', name: product.brand } : undefined,
offers: {
'@type': 'Offer',
price: product.price.final,
priceCurrency: product.price.currency,
availability: product.inStock
? 'https://schema.org/InStock'
: 'https://schema.org/OutOfStock',
url: window.location.href,
},
};
Object.keys(schema).forEach((k) => schema[k] === undefined && delete schema[k]);
const el = document.createElement('script');
el.type = 'application/ld+json';
el.textContent = JSON.stringify(schema);
document.head.appendChild(el);
}Recommend validating with Google's Rich Results Test after deployment.
In the raw HTML <head>, verify <link rel="canonical"> exists (missing = P0) and that it:
.aem.page/.aem.live preview domain (preview canonical = P0).?color=blue) to the base product URL unless variants are separate pages (P1).JS-set canonicals risk crawlers seeing the template canonical (P1) — set it server/edge-side or in head.html.
curl -sL "https://store.example.com/robots.txt"Confirm product paths (e.g., /products/, /categories/) are not in a Disallow rule (P0 if blocked) and that a Sitemap: directive points to the production domain.
EDS does not auto-generate sitemaps for route-based product pages, so a custom generator is usually required. Build one from the Catalog Service:
async function generateProductSitemap(products, base) {
const urls = products
.map((p) => ` <url>\n <loc>${base}/products/${p.urlKey}</loc>\n` +
` <lastmod>${p.updatedAt.slice(0, 10)}</lastmod>\n </url>`)
.join('\n');
return `<?xml version="1.0" encoding="UTF-8"?>\n` +
`<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${urls}\n</urlset>`;
}Verify every product canonical appears in the sitemap (missing = P0), <lastmod> is current (P1 if stale), and that catalogs over 50,000 URLs use a sitemap index (P1 if exceeded).
Check product images against the table in references/product-page-seo-reference.md. The highest-impact issue is lazy-loading the primary (LCP) product image — it must use loading="eager" and fetchpriority="high" (P0). If alt text comes from the Catalog Service, verify quality at the API level since one bad value propagates to every page.
Based on Steps 1-6, recommend a tier (see references/product-page-seo-reference.md) chosen by catalog size, search-traffic importance, and technical capacity. Tier 2 (hybrid: pre-populated meta + edge-injected JSON-LD) is the recommended minimum; Tier 3 (pre-rendered critical content) is recommended for large catalogs.
| Check | Status | Priority | Details |
|---|---|---|---|
| Product content in initial HTML | Pass/Fail | P0 | % in initial HTML vs JS-rendered |
| Title contains product name | Pass/Fail | P0 | Current title |
| Meta description product-specific | Pass/Fail | P1 | Current description |
| Product JSON-LD present + accurate | Pass/Fail | P0 | Properties, price/availability match |
| Canonical URL correct | Pass/Fail | P0 | Current canonical |
| Product URLs in sitemap | Pass/Fail | P0 | Count found |
| Image alt text | Pass/Fail | P1 | Sample values |
| LCP image loading priority | Pass/Fail | P0 | Loading attribute |
| Robots.txt allows product crawling | Pass/Fail | P0 | Relevant directives |
Rate overall: High / Medium / Low.
For each: what to change (file + location), why it matters (search impact), how to implement (concrete code/config).
Recommend Tier 1, 2, or 3 with a specific implementation plan.
For implementation tables and troubleshooting, see references/product-page-seo-reference.md.
© adobe, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo of adobe/skills.
Open the folder on GitHubat commit c8f44ec
Product Page SEO next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Product Page SEO this skilladobe/skills | 197 | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Persian SEOTronIsHere/vibefarsiui | 212 | — | ~1.7k | Automated safety check: Warn | MIT | |
| SEO Validatesoftspark/ai-toolkit | 179 | — | ~3.9k | Automated safety check: Notes | Apache-2.0 | |
| SEO Auditjosstei/maestro-orchestrate | 465 | — | ~218 | Automated safety check: Pass | Apache-2.0 | |
| SEO Audittextura-agency/next16-claude-starter | 133 | — | ~2.2k | Automated safety check: Notes | Unlicense | |
| SEO Geoericrisco/rsc-harness | 180 | — | ~2.8k | Automated safety check: Pass | MIT |
TronIsHere/vibefarsiui
Technical and on-page SEO for Persian (Farsi) websites: lang and hreflang for fa-IR, RTL-safe metadata, Persian titles and descriptions, slug and URL strategy for Persian content, ZWNJ and keyword…
softspark/ai-toolkit
SEO validator: meta/OG, Schema.org, hreflang, Core Web Vitals, crawlability.
josstei/maestro-orchestrate
Run a Maestro-style SEO assessment for meta tags, structured data, crawlability, and Core Web Vitals
textura-agency/next16-claude-starter
Audit a page or the whole site for technical and on-page SEO — crawlability, metadata, heading outline, structured data, internal linking, Core Web Vitals, and the animation-specific crawlability…
ericrisco/rsc-harness
A skill your agent uses when one existing page needs to rank in Google AND get cited by AI answer engines — auditing a URL for on-page SEO, structured-data JSON-LD, GEO citation levers, Core Web…
unifapi-agent/agents
When the user wants to audit, review, or diagnose SEO issues on their site.
adobe/skills
Scaffolds, implements, deploys and debugs Adobe Runtime actions in App Builder projects, with templates for webhooks, events, database CRUD, sequences and Asset Compute workers.
adobe/skills
Launches Chrome with an unpacked extension over CDP, opens its sidepanel, popup or options page, and hands over to cdp-connect for clicks, typing and screenshots.
adobe/skills
Extracts icons, metadata, text, forms, videos and social links from any web page with playwright-cli, with SVG icon classification and cleanup.
adobe/skills
Detect all languages used on a webpage — both declared (html@lang, hreflang alternate links, nested lang= attributes, meta content-language) and actually present in the body text (Google CLD3 via…
adobe/skills
Prepare any webpage for clean interaction by detecting and removing disruptive overlays (cookie banners, GDPR consent, modals, popups, newsletter signups, paywalls, login walls).
adobe/skills
Reduce a webpage to a structural skeleton with semantic tokens.
Works with
Categories
Optimize AEM Edge Delivery Services commerce product pages for search engine crawling and indexing. Product Page SEO is an agent skill from adobe/skills. Optimize AEM Edge Delivery Services commerce product pages for search engine crawling and indexing.
Product Page SEO fits situations like: product pages are not appearing in search results; have poor search visibility.
Run `npx skills add adobe/skills --skill product-page-seo -a claude-code`. Or copy the skill folder (plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo in adobe/skills) into .claude/skills/product-page-seo in your project. Claude Code loads it when a task matches its description.
Run `npx skills add adobe/skills --skill product-page-seo -a codex`. Or copy the skill folder (plugins/aem/edge-delivery-services-content-ops/skills/product-page-seo in adobe/skills) into .agents/skills/product-page-seo in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adobe/skills --skill product-page-seo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/product-page-seo, .gemini/skills/product-page-seo, .github/skills/product-page-seo and .opencode/skills/product-page-seo in your project.
Going by SKILL.md and its folder, Product Page SEO needs the command-line tools its instructions call (curl).
SKILL.md names 4 domains. In commands or code: schema.org, google.com and sitemaps.org; the agent is likely to contact these when it follows the instructions. As links in the text: search.google.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Product Page SEO is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 949 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Product Page SEO: Persian SEO (TronIsHere/vibefarsiui, 212 stars), SEO Validate (softspark/ai-toolkit, 179 stars), SEO Audit (josstei/maestro-orchestrate, 465 stars) and SEO Audit (textura-agency/next16-claude-starter, 133 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
adobe (a GitHub organization) maintains it in adobe/skills, which has 197 GitHub stars. The repository holds 66 skills in this directory. The repository was last updated on October 10, 2026.
Source: adobe/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.