plugins/aem/edge-delivery-services-content-ops/skills/geo-rewrite/SKILL.md
Rewrite AEM Edge Delivery Services page content for AI search discoverability (GEO — Generative Engine Optimization). Analyzes content structure, semantic clarity, and factual density, then produces optimized rewrites that rank in both traditional search and AI-powered search engines. Use when optimizing pages for search visibility, AI discoverability, or content clarity.
npx skillsauth add adobe/skills geo-rewriteInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Optimize AEM Edge Delivery Services page content for AI search discoverability (GEO — Generative Engine Optimization). Makes content discoverable, quotable, and accurately represented by AI search engines (ChatGPT Search, Perplexity, Google AI Overviews, Gemini, Claude) while maintaining strong traditional SEO performance.
AI-powered search is changing how content is discovered. Users increasingly ask AI assistants for answers instead of scanning search result pages. AI search engines synthesize answers from crawled content, and the pages they quote share common traits: they are factually dense, clearly structured with semantic HTML, free of marketing fluff, authoritative, and directly answer questions.
Adobe acquired Semrush ($1.9B, April 2026) and launched LLM Optimizer to help customers address this shift. This skill complements those tools by optimizing EDS-authored content at the document level — ensuring the content that ships from Google Docs or Word through AEM Edge Delivery Services is structured for both traditional crawlers and AI extraction.
GEO is not a replacement for SEO. It is an additional lens: "If an AI assistant reads this page, can it extract a clear, correct, quotable answer?"
When fetching or analyzing external URLs:
Before starting, create a TodoList to track progress through each step:
Update each item as you complete it.
Fetch the target URL provided by the user. Also fetch the .plain.html version of the same URL — for non-root paths, append .plain.html to the path before the query string (e.g., /about becomes /about.plain.html). For root paths (/), use /index.plain.html. The .plain.html rendition shows the clean semantic HTML that EDS produces — this is what AI crawlers actually see.
Note: Some tools convert fetched HTML to markdown, which loses HTML attributes (alt text, loading, class names). When auditing image alt text or other attributes, use curl or a tool that preserves raw HTML.
Analyze the following:
Heading structure and hierarchy
Content density
Question-answer patterns
Factual claims
Internal linking structure
Image alt text
Current metadata
Ask the user: "What queries or topics should this page rank for?"
If the user provides target queries, use those. If the user says to infer them, analyze the content and identify:
Present the identified queries to the user for confirmation before proceeding. If the user has already specified queries or asked you to infer them autonomously, skip the confirmation and proceed.
Score the current content on six dimensions. Use a 1–10 scale for each.
Structure score (1–10) Are headings descriptive and hierarchical? Do they form a logical outline that a reader (or AI) could scan to understand the page without reading body text?
Density score (1–10) Is every paragraph adding information, or is there filler?
Factual score (1–10) Are claims specific and verifiable?
Answer score (1–10) Does the content directly answer the target queries within the first 2–3 sentences of the relevant section?
Authority score (1–10) Are sources cited? Are credentials or expertise signals present?
Snippet score (1–10) Can an AI extract a clean, quotable 1–3 sentence answer from this content?
Present the scores in a table and identify the two lowest-scoring dimensions as priority focus areas.
Rewrite the content following these GEO principles:
The first paragraph of each section should directly answer the implied question of that section's heading. Do not build up to the point — state it, then support it.
H2 and H3 headings should be specific topic statements or questions, not vague labels. Change "Benefits" to "How EDS Reduces Page Load Times." Change "Overview" to "What Edge Delivery Services Does."
Remove these and similar phrases:
Replace vague claims with specific data, examples, or evidence:
If specific data is not available in the source content, flag the claim for the user to verify or add data. Do not fabricate statistics.
Use lists, tables, and definition patterns that AI engines can extract and quote:
The rewrite should sound like the brand, not like a textbook or a Wikipedia article. Preserve the organization's terminology, tone, and personality. If the original is conversational, keep it conversational. If it is formal, keep it formal.
Where the content mentions topics covered by other pages on the site, add or improve internal links. Contextual links within body text (not just nav/footer links) help both traditional crawlers and AI engines understand site structure and topic relationships. Link text should be descriptive — use the topic phrase, not "click here" or "learn more."
All content must be authorable in Google Docs or Microsoft Word via da.live. This means:
Generate optimized metadata for the page. Present each item with the current value (if any) and the recommended value.
Title tag
Meta description
og:title
og:description
Structured data / JSON-LD (if applicable)
head.html or a metadata sheet, not the content document itself.Present metadata changes as a table with columns: Field, Current Value, Recommended Value, Notes. This table format is ready to paste into the EDS Metadata block in the source document.
Present the final output as a structured report:
For each section of the page, show:
Show the before and after scores in a table:
| Dimension | Before | After | Change | |-----------|--------|-------|--------| | Structure | X | Y | +/- | | Density | X | Y | +/- | | Factual | X | Y | +/- | | Answer | X | Y | +/- | | Authority | X | Y | +/- | | Snippet | X | Y | +/- | | Overall | X | Y | +/- |
Provide step-by-step instructions for applying the changes:
head.html..page or .live domain before publishing.A standalone table formatted for direct paste into the EDS Metadata block:
| Property | Value | |----------|-------| | title | ... | | description | ... | | og:title | ... | | og:description | ... |
Avoid these common GEO mistakes:
tools
Use the run-workflow MCP to discover, compose, execute, publish, and save Adobe Firefly workflows. TRIGGER when: user asks what actions are available, what the MCP can do, how to process images/video/3D via workflow, wants to build/run/save/publish a workflow, OR pastes any workflow/batch/execution ID. BARE ID (UUID/workflowId/batchId) = INSPECT ONLY — call inspect_run, NEVER run_workflow_submit. ALWAYS call list_actions first for capability/discovery questions. DO NOT TRIGGER for direct Firefly API calls without MCP (use firefly-api-specs).
tools
Run predefined featured workflows via run-workflow MCP. TRIGGER when user names a featured workflow (retargeting, banners at scale, localization, packaging, banner advertising, etc.) or asks to run a known marketing/production workflow. Requires run-workflow MCP. ALWAYS call get_featured_workflow before compose_workflow. DO NOT TRIGGER for custom one-off workflows with no named template — use run-workflow skill.
tools
Migrate an Adobe Commerce App Builder project from the Integration Starter Kit or Checkout Starter Kit to the new App Management approach. Run from the root of the App Builder project to be migrated. Pass --auto to skip confirmation prompts (suitable for CI or batch use) — auto mode prints a summary of all Q&A questions answered with their defaults. Pass --doc-scan-only to scan README.md and env.dist for outdated content without modifying any files. Use when the user wants to migrate an App Builder project from the Integration Starter Kit or Checkout Starter Kit to the App Management approach, or mentions upgrading their Adobe Commerce extension architecture.
development
Add or modify webhook interceptors in an Adobe Commerce app. Use when the user wants to intercept Commerce operations to validate input, append data, or modify behavior — before or after execution. Requires a base app initialized with commerce-app-init.