Connect by JBRH Open Connect

Structured data and content

Structured data is a machine-readable description of what a page already says. Content is what a person can read. The rule that keeps both useful is that markup must describe what is visible — mark up a fact that is not on the page and you have published a claim nobody can check, which is both an eligibility problem and a credibility one.

Status
Reference What this means
Audience
developer
Last verified
Product version
6.3.2

What each one is for#

Content answers the question. Structured data — JSON-LD using the schema.org vocabulary — tells a machine what kind of thing the page is and which parts are the title, the question, the answer, the date. It makes a page *legible*, and legibility is not the same as substance.

The practical consequence is that markup cannot rescue a thin page. A retrieval system that wants to quote you needs a sentence worth quoting; there is no property in any vocabulary that supplies one.

Content
The words, the tables, the examples, the failure modes. Read by people, quoted by machines.
Structured data
A description of those words in a defined vocabulary. Read by machines, invisible to people.
The relationship
One describes the other. It is never a second source of truth, and the moment it becomes one, one of them is lying.

The rule, and why it is a rule#

Markup must match what a reader can see. Search systems state this in their own guidance, and the enforcement is not subtle: markup that describes content the page does not contain makes the page ineligible for the feature it was reaching for, and repeated cases attract manual action against the site.

  • An FAQ described in markup must be an FAQ a reader can see and read.
  • A date in markup must be the date the page actually changed.
  • A price in markup must be a price on the page. If there is no price, there is no property.
  • An author must be a real, identified author — which is why nothing here claims one.

Drift, and how to make it impossible#

Markup and content agree on the day they are written and diverge every day after, if they are maintained separately. Somebody edits a paragraph; nobody edits the JSON-LD. Six months later the page says one thing and its description says another, and the machine reads the description.

The fix is structural rather than procedural: generate both from one record. Every page in this corpus is a data structure — the answer, the sections, the FAQs, the date — and the HTML and the JSON-LD are two renderings of it. The build refuses malformed JSON-LD, and it refuses a page whose parts are missing, so drift is not something anyone has to remember to check.

ApproachFails whenEffort over time
Hand-written markup beside hand-written contentAnybody edits either oneConstant, and unrewarded
Both generated from one page recordThe record is wrong — which is visible to a reader as wellOnce, at build time

What to do with the effort instead#

Structured data is cheap once it is generated, so the marginal hour is better spent on the content it describes. Concretely: answer the question in the first paragraph, name the real mechanism instead of *the system*, give the number you measured rather than an adjective, and write the failure modes down — a page that only describes success is half a page, and it is the half nobody needed.

Questions#

Does structured data improve ranking?

It makes a page eligible for presentation features and helps a machine parse what is there. It does not add information, and a page with excellent markup and nothing to say competes against pages that answer the question. Treat it as plumbing, not as an advantage.

Can I mark up an FAQ that is only in the markup?

No. That is precisely the violation — content described but not visible. If the questions are worth answering, put them on the page where a reader benefits too; if they are not, do not publish them in either place.

How does this documentation keep the two in step?

Every page is one record from which the HTML, the JSON-LD, the Markdown alternate and the manifests are all generated, and the build gate refuses malformed markup, a page missing a required part, and a sitemap that disagrees with the published set.