Add valid JSON-LD schema from visible page facts, with your agent
Generates, wires and validates JSON-LD structured data (Organization, LocalBusiness, Product, Service, Article, FAQPage and BreadcrumbList) from the visible facts on your pages, checked live with clickd.
Add it, from the top of the site’s repositorynpx skills add subinternal/clickd --skill clickd-schema-markup
Then ask your agentAdd valid Organization, Service and FAQPage JSON-LD schema to our templates from visible page data and verify with clickd.
For a developer wiring structured data into site layouts and page templatesCheck a page’s schema
Four steps from template audit to live JSON-LD
Your agent matches each template to the right schema.org type, wires fields to the same variables the page renders visibly, escapes the JSON safely, and checks live.
1Audit existing JSON-LD and match types to templatesclickd_pages
2Generate JSON-LD from visible page data onlyclickd_schema_create
3Render safely in the page head
4Check live with clickdclickd_check
Visible page facts wired to JSON-LD
Every field in the script block comes from the same data object that renders the visible HTML.
example.com/services/roof-repair
Service, LocalBusiness and FAQPage JSON-LD wired from template data.
Sample
@context & @typeMissing or broken JSON-LD plugin outputSpecific RoofingContractor, Service and FAQPage types with https://example.com/#org @id
Entity & sameAsNo organization identity or external profile linksCanonical @id, telephone, PostalAddress and verified sameAs links
Visible parityHardcoded 5.0 aggregateRating not shown on page (spam risk)Removed hidden rating; kept only visible pricing scope and on-page Q&A
XSS safety & parsingUnescaped title string inside script tagJSON.stringify with \u003c escaping; passes JSON.parse and clickd_check
How clickd validates structured data
Checked against schema.org vocabulary and Google’s structured data policies on the live URL.
clickd_schema_createDrafts valid Organization, LocalBusiness, Product, Service, Article or FAQPage JSON-LD from verified page facts.
clickd_check (kind: "product")Checks Product, Offer, shipping and return fields on live store pages without a key.
clickd_rescan & clickd_changesConfirms structured-data, schema-valid and entity-links pass across every updated template.
When to reach for it
Reach for it when
clickd reports structured-data, schema-valid or entity-links findings on your templates.
You want Organization, LocalBusiness, Service, Article or FAQPage JSON-LD wired cleanly in code.
You want sameAs entity links connected so search engines and AI assistants recognize your business.
Leave it when
You want to mark up star ratings, prices or FAQs that are not visible to readers on the page.2
You only need Google Universal Cart merchant fields on a store: the shop ready skill goes deeper.
More things to ask your agent
Everyday prompts that load the Schema markup skill in Claude Code, Codex or Cursor.
Wire Organization & Service schemaAdd Organization, Service and BreadcrumbList JSON-LD to our layouts from our site config and verify live with clickd.
Fix broken or hidden schemaAudit all application/ld+json blocks on example.com, remove any fields not visible on the page, and validate with clickd_check.
Add sameAs entity linksConnect our Organization JSON-LD to our official GitHub, LinkedIn and documentation profiles with sameAs and check live.
Schema markup skill vs the alternatives
Why pairing an open repository skill with a live crawler beats manual audits and prompt-only checklists.
How it reads your siteBy hand: Manual spot-checks in a browser · Prompt-only skill: Reads local source files only; misses live headers, redirects and JS shellsReads the live URL, HTTP headers, raw HTML and Search Console via clickd MCP
How changes are madeBy hand: Copy-pasting between docs, spreadsheets and editors · Prompt-only skill: Suggests generic copy in chat with no repo contextEdits your actual templates, routes and schema in the repository
How fixes are provedBy hand: Checking pages one by one after deploy · Prompt-only skill: Agent grades its own homework with no live checkRuns clickd_rescan and clickd_changes on the deployed site to prove rules passed
Skills to use alongside it
Included when you run npx skills add subinternal/clickd.
Shop readyFixes the Product data in a shop's own product templates so it states what the page shows, and checks each live page with clickd before and after.See skill
Local SEOWires specific LocalBusiness subtype JSON-LD, crawlable NAP (name, address, phone and hours) and genuine service and location pages without doorway spam, benchmarked against local rivals with clickd.See skill
AI visibilityAudits and fixes your site’s visibility in ChatGPT, Claude, Perplexity and Google AI Overviews: AI crawler access, non-JS HTML readability, answer-first passages, entity sameAs schema and live citation tracking.See skill
Questions about the Schema markup skill
Why must JSON-LD fields come from the same variables as visible HTML?
Google’s structured data policies forbid marking up ratings, prices or FAQs that readers cannot see on the page, and hardcoded JSON blocks quickly drift out of sync when prices or copy change.
How does the skill prevent XSS in JSON-LD script tags?
It serializes data with JSON.stringify and escapes < as \u003c so a page title or description containing </script> can never break out of <script type="application/ld+json">.
Install it by hand
The line at the top adds it for any agent. Or fetch its 1 files where your agent looks. Your agent also needs clickd connected over MCP: connecting an agent shows how.
Loads skills from .claude/skills/ in the repository, for everyone who works in it, or ~/.claude/skills/ for every project on your machine. Claude uses it when a request matches its description, or type /clickd-schema-markup.
Puts the files in .claude/skills/clickd-schema-markup/.
Loads skills from .agents/skills/ in the repository and its parent folders, or ~/.agents/skills/ for every project. Codex uses it when a task matches its description, or mention it as $clickd-schema-markup; /skills lists them.
Puts the files in .agents/skills/clickd-schema-markup/.
Loads skills from .cursor/skills/ or .agents/skills/ in the repository, or ~/.cursor/skills/ for every project. It also reads .claude/skills/, so one copy there serves both. The agent uses it when it is relevant, or type / in Agent chat and pick it.
Puts the files in .cursor/skills/clickd-schema-markup/.
An agent that does not load skills can still follow the file. Save the folder in the repository and point its standing instructions at it, with a line in AGENTS.md, which many agents read. The agent reads AGENTS.md when it starts, and follows the file when the task matches.
SKILL.md stays short and sends your agent to a reference when a step needs it.
SKILL.mdThe four steps from matching schema types to templates, generating JSON-LD from visible page facts, escaping and rendering in the head, and validating live with clickd.90 lines
2General Structured Data Guidelines, Google Search Central.The rule that structured data must represent content visible to readers on the page.
3Search Gallery and Rich Results, Google Search Central.The schema types and required properties Google Search supports for rich results.
schema.org
4Full Hierarchy of Types, schema.org.The complete vocabulary of types and subtypes for `Organization`, `LocalBusiness`, `Product`, `Service` and `Article`.
Agent skills format and clients
5Extend Claude with skills, Anthropic, Claude Code docs.Where Claude Code loads skills from, and how one is called.
6Build skills, OpenAI, ChatGPT Learn.Where Codex loads skills from, and how one is called.
7Agent Skills, Cursor docs.Where Cursor loads skills from, and how one is called.
8Specification, Agent Skills.The format every skill here keeps: the folder, the frontmatter and its limits.