GRAFF
Graph Registry, Architecture & Field Framework
What does GRAFF do?
GRAFF turns a plain-language description of a site into a connected Schema.org entity graph, copy-paste JSON-LD snippets for each page type, and Google rich-result eligibility checks. Online stores also get return, shipping, and loyalty policy markup, product variants, and a Merchant Center readiness check.
Nothing is stored on the server. Take what is generated before you leave.
Describe the site
Generation
Blueprint
Entity graph
About this graph
Gemini mapping summary
How to read it
Every node is a Schema.org entity with a stable @id; every edge is a
Schema.org property linking two entities. Labels show the entity name and its
primary type.
- Organization: the business. Content points at it via
publisher(articles, videos) orbrand(products). - WebSite: the site container. Pages declare
isPartOf→ WebSite; it declarespublisher→ Organization. - WebPage nodes: one per template page. Each points at its
subject via
mainEntityand at itsbreadcrumbtrail. - BreadcrumbList: the Home → template trail Google shows in results and agents use to locate a page in the site hierarchy.
- Missing edges are usually schema.org domain rules, not omissions. A
Product cannot declare
isPartOfbecause it is not a CreativeWork. - Store policies (returns, shipping, loyalty, variants) are nested objects inside the Organization and Product entities rather than separate nodes — click a node to see them summarized on its card.
Graph source
Rich result opportunities
What makes a page eligible?
Google publishes rules for each rich result type in Search Central: a set of required properties the markup must carry, and recommended properties that strengthen the result. A page qualifies when its markup uses a matching Schema.org type and every required property is present. The cards below track exactly that: Qualifies now means the requirements are met, Needs values means the structure is complete but placeholder values remain, and Missing data means a required property needs real nested content GRAFF won't invent.
Rich result eligibility is the baseline; there are more fields to fill than just the required ones. If all things are equal, the most complete, truthful entity graph wins the competition. Aim past "qualifies" and fill as many fields as completely as possible.
Retired by Google
Markup that once earned a rich result but no longer does. GRAFF does not generate or screen for these; they are listed so you know where they went.
Merchant Center readiness
Googlebot reads this markup for Merchant Center's automated feeds and item updates, so a complete product snippet doubles as a starter feed. Merchant Center settings override on-page markup.
JSON-LD snippets
Paste each block into a <script type="application/ld+json"> tag on
matching pages. Replace every {{TOKEN}} with real
values before publishing. Blocks are editable in place; copies and exports use the
edited text.
About these snippets
Each template gets one self-contained snippet: a @graph holding the
page's primary entity (Product, Article, Recipe…), a WebPage node, its
BreadcrumbList, and the shared Organization and WebSite. One block serves every
page built from that template. Fill the per-page tokens
({{PAGE_URL}},
{{PAGE_TITLE}}) from the page itself and the
site-wide tokens ({{ORGANIZATION_LOGO_URL}})
once.
-
@idfragments: entities are named by URL plus fragment: site-wide ones on the origin (/#organization,/#website), page-scoped ones on the page URL (#webpage,#breadcrumb). Keep them exactly as generated: crawlers merge nodes with the same@idacross pages, and this joins per-page markup into one site-wide graph. -
Duplicate Organization and WebSite blocks: every snippet
repeats them so each page stands alone. Search engines de-duplicate them by
@id. - Nested objects: Offer, PostalAddress, Person, and ListItem shapes match what Google's documentation specifies for each feature.
-
Breadcrumb hub levels: middle crumbs come from the example
path (
/gear/tentyields Home > Gear > page). Confirm each hub URL exists as a real page, or remove that level. -
References: values like
{"@id": "…/#organization"}are pointers to another node in the graph, not text. Leave them unchanged.
Schema.org references
Documentation for every type and property used in this blueprint. Each link opens the schema.org definition with its expected values and usage notes.
Export
One JSON file, three jobs: implement the markup, document the architecture, or feed another tool.
After deploying, verify live pages with the Google Rich Results Test and Schema Markup Validator. AI makes mistakes. Don't trust this blindly! Use this tool as inspiration during the discovery phase.