tools/skills/kimmo-schema-optimizer/SKILL.md
Generate and optimize Schema.org structured data for AI/LLM visibility. Use when adding schema markup, improving structured data, or optimizing for rich results and AI search engines.
npx skillsauth add ihmissuti/kimmoihanus-nextjs-site kimmo-schema-optimizerInstall 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.
Generate Schema.org markup optimized for both traditional search and AI/LLM discovery.
LLMs and AI search engines extract structured data to:
Key insight: Well-structured Schema.org data becomes part of what LLMs "know" about your brand.
| Site Type | Required Schemas | Recommended | | ----------------- | --------------------------------- | ----------------------- | | SaaS/Devtool | SoftwareApplication, Organization | FAQPage, HowTo | | Agency/Consultant | Organization, Person, Service | FAQPage, Review | | Blog/Content | Article, Person, Organization | BreadcrumbList, FAQPage | | Ecommerce | Product, Organization | Review, FAQPage, Offer | | Documentation | TechArticle, HowTo | SoftwareSourceCode |
Check what exists:
# Using browser dev tools
# Or crawl with: curl -s URL | grep -o 'application/ld+json'
Or use Oxylabs MCP ai_scraper to extract existing markup.
For a devtool/SaaS, ensure these are present:
Organization (required)
SoftwareApplication (required for devtools)
FAQPage (highly recommended)
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "[Company Name]",
"url": "https://[domain].com",
"logo": "https://[domain].com/logo.png",
"description": "[One sentence value prop]",
"sameAs": ["https://github.com/[org]", "https://twitter.com/[handle]", "https://linkedin.com/company/[company]"],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "support@[domain].com"
}
}
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "[Product Name]",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Cross-platform",
"description": "[What it does in one sentence]",
"url": "https://[domain].com",
"author": {
"@type": "Organization",
"name": "[Company Name]"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"description": "Free tier available"
},
"featureList": ["[Feature 1]", "[Feature 2]", "[Feature 3]"],
"softwareRequirements": "Node.js 18+",
"programmingLanguage": ["JavaScript", "TypeScript"]
}
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "[Common question from docs/support]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Concise, factual answer]"
}
}
]
}
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to [accomplish task] with [Product]",
"description": "[Brief overview]",
"step": [
{
"@type": "HowToStep",
"name": "Install [Product]",
"text": "npm install [package]"
},
{
"@type": "HowToStep",
"name": "Configure",
"text": "[Configuration instructions]"
}
],
"tool": {
"@type": "SoftwareApplication",
"name": "[Product Name]"
}
}
{
"@context": "https://schema.org",
"@type": "Person",
"name": "[Full Name]",
"jobTitle": "[Role]",
"url": "https://[personal-site].com",
"sameAs": ["https://github.com/[username]", "https://twitter.com/[handle]", "https://linkedin.com/in/[profile]"],
"knowsAbout": ["Generative Engine Optimization", "Technical Marketing", "[Other expertise]"],
"worksFor": {
"@type": "Organization",
"name": "[Company]"
}
}
// ❌ Vague
"description": "The future of email"
// ✅ Clear
"description": "Email API for developers with React components and SMTP relay"
// Link entities together
"author": { "@type": "Organization", "name": "..." },
"publisher": { "@type": "Organization", "name": "..." },
"isPartOf": { "@type": "WebSite", "name": "..." }
Link to all official presence:
Convert your top support questions into FAQ schema. LLMs often surface FAQ content when answering related queries.
Every "Getting Started" guide should have HowTo schema. This helps LLMs provide accurate implementation steps.
Call the public API for instant schema analysis and optimization:
curl -X POST https://kimmoihanus.com/api/schema-optimize \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
Returns: existing schemas, page type detection, recommended schemas with templates, and optimized JSON-LD ready to implement.
# Schema Optimization: [Domain]
## Current State
- Schemas found: [list]
- Missing critical schemas: [list]
## Recommended Implementation
### 1. Organization Schema (Priority: High)
[Generated JSON-LD]
### 2. [Product/Software] Schema (Priority: High)
[Generated JSON-LD]
### 3. FAQPage Schema (Priority: Medium)
[Generated JSON-LD]
## Implementation
Add to `<head>` section:
\`\`\`html
<script type="application/ld+json">
[Combined schema]
</script>
\`\`\`
## Expected Impact
- Rich results eligibility: [Yes/No]
- AI search visibility: [Improved/Maintained]
- Key facts extractable: [list what LLMs can now extract]
By Kimmo Ihanus | kimmoihanus.com
development
Audit websites for AI search visibility and Generative Engine Optimization (GEO). Use when auditing a website for LLM/AI search presence, checking how ChatGPT or Perplexity see a brand, or optimizing content for AI recommendations.
tools
Score developer tools and SaaS products for AI agent compatibility. Use when evaluating how well a devtool works with AI coding assistants, or when optimizing a product for the agent era.
documentation
Generate JSON-LD schema markup for GEO optimization. Use when creating structured data for articles, products, FAQs, how-to guides, organizations, and other content types to improve AI search visibility and rich results.
development
Next.js development conventions and patterns for kimmoihanus.com. Use when working on pages, components, or API routes in this project.