Field notes8 min read

The Stars Were Fake:
A Structured Data Audit of This Site

Google’s rich-result menu, checked against what actually still renders in 2026 — what the audit found on this site, what shipped, and the one type this site once faked and will not touch again.

The pitch for structured data is seductive: paste a <script type="application/ld+json"> block of schema.org JSON into your page, and Google rewards you with stars, sitelinks, accordions, even a search box under your result. Some of that menu no longer exists. Some of it was never controlled by markup at all. And the most clickable item on it — review stars — is the one people fake.

So I did the boring thing: ran this site against the current menu, type by type, keeping only what each page can honestly show. This is the audit, the fixes that shipped, and one confession from the git history.

Three years of quiet deprecations cut the menu down. In August 2023, FAQ accordions were restricted to well-known, authoritative government and health sites — everyone else’s FAQPage markup still validates in every testing tool and renders nothing. HowTo went desktop-only that same month and disappeared entirely the next. In November 2024 the sitelinks search box — that little input under big-brand results — was removed from results altogether; Google kept the WebSite schema it rode in on, but only for reading your site’s name.

What’s left for a normal site is a shorter, steadier list.

ResultStatus in 2026What it takes
Breadcrumb path lineShown, widelyBreadcrumbList matching a visible trail
Article dates and bylineShownArticle / TechArticle with real dates
Site name above resultsShown on mobileWebSite name in the root layout
Review starsShown for item typesReal, visible, user-submitted ratings
FAQ accordionGovernment and health sites only, since Aug 2023Nothing — you can't markup your way in
Sitelinks search boxRemoved from results, Nov 2024Nothing — the feature is gone
Sitelinks mini-navEarned, not marked upSite structure and what users click
HowTo stepsRetired, 2023
Every row is sourced at the bottom of this page. And every “shown” means “shown, under current policy” — Google prunes this list without much ceremony.

What the audit found

The site was in better shape than I expected. Both long posts already carried full TechArticle schema — headline, dates, author, publisher, and the entities each piece is about. FAQ sections render from one array that feeds both the visible markup and the FAQPage JSON, so the two cannot drift apart. The tool index emits a CollectionPage. The sitemap lists only canonical URLs, with lastModified matching the date each page displays and the date its JSON-LD carries.

Then the gaps. Breadcrumb markup existed on exactly one route type. The notes section — summarized talks and interviews, every entry in the sitemap — carried no structured data at all. And nothing anywhere declared the site’s own identity: no Organization, no WebSite.

The stars this site once had

Here is the confession. This site used to show, at the top of every tool page, a “Community Rating” panel: a star average, a per-dimension breakdown, and a confidence line reading Wilson confidence ±0.15 (95% CI). Those numbers came from a mock fixture — the fixture’s own comment said Mock confidence interval. Below it sat a “Rate this tool” form that validated your input, thought for a second, told you your rating was submitted, and dropped it on the floor. There was never an endpoint behind it.

It’s gone now. And reading Google’s current review-snippet rules, it could never have been honest markup either: ratings must be visible on the page, sourced from actual users, and not aggregated from other sites. Since 2019 a review is “self-serving” — displayed as nothing — when the entity being reviewed controls the page the review appears on. And in July 2026 Google made the obvious rule explicit: fake or undisclosed incentivized reviews are banned from markup, full stop.

The advice still circulates anyway: put a rating widget on the page, add the schema, and let users assume Google scored you. Users probably will assume that — that is the whole pitch. It works until a spam classifier or a human reviewer notices there is nothing behind the numbers, and a structured-data manual action is a much worse souvenir than the clicks were worth. The honest version is slower: these tool pages review third-party software, SoftwareApplication is a legitimately eligible type, so if a real rating feature ever ships — real users, real storage — the markup follows the data. Not the other way around.

What shipped

Breadcrumbs, one source of truth

The highest-return fix was the most boring one. A single component now renders the trail and its schema from the same array:

tsx
// One array is the single source. The trail you see and
// the BreadcrumbList Google reads are the same data.
const items = [
  { name: 'Home', href: '/' },
  { name: 'Blog', href: '/blog' },
  { name: 'The Stars Were Fake', href: '/blog/…' },
];

const jsonLd = {
  '@context': 'https://schema.org',
  '@type': 'BreadcrumbList',
  itemListElement: items.map((item, index) => ({
    '@type': 'ListItem',
    position: index + 1,
    name: item.name,
    item: `https://saikodev.ai${item.href}`,
  })),
};

Hand-maintaining two copies — one for humans, one for crawlers — is exactly how markup drifts from the page, and markup that disagrees with what the page says is a guideline violation, not a gray area. The component replaced a bespoke implementation on the tool pages too, so there is now exactly one breadcrumb in the codebase. Every route two or more levels deep carries it: posts, notes, the starter-kit pages, tool detail pages.

Notes got Article schema, with one field doing the interesting work

These notes summarize other people’s talks and threads. So the author of the page is this site, and isBasedOn points at the source — the interview, the thread, the talk. Tempting as it is to list the interviewed founder as the author, that would claim they wrote the page. The dates are the dates the notes were logged, matching the sitemap and the visible timestamps.

The root layout now declares who the site is

An Organization and a WebSite node, in one @graph with stable @ids that per-page markup can attach to. The WebSite name is what Google’s site-name system reads for the label above results on mobile — one of the few SERP touches a site fully controls.

And one deliberate omission

SearchAction — the markup that powered the old sitelinks search box — is not there, for two reasons. The header’s search button is decorative; pointing Google at a search URL that cannot answer would be markup describing a page that does not exist. And the feature it fed was removed from results in November 2024 anyway.

Describe the page, never the wishlist

Every decision above is the same decision: markup describes what the page already shows. Not what the page could show, not what a SERP feature used to show, not what would look nice under the title. That is why the boring types won — a breadcrumb, a date, a name are things a page genuinely has. A five-star average it does not have is the one thing it cannot honestly say.

The full menu is documented in Google’s structured data docs, linked below. Read them before copying a recipe from an SEO post — the recipes age faster than the docs.

Questions people actually ask

Does structured data improve rankings?
Not by itself. Google has said repeatedly that structured data is not a ranking factor — what it changes is how your result renders, and how unambiguously the page can be understood. The honest pitch is presentation, not position.
Can I add review stars to my site?
Only if the page carries ratings that real users submitted and that visitors can actually see, and only for item types like Product, Course, or SoftwareApplication. A business rating its own Organization page has been ineligible since 2019, and fake or undisclosed incentivized reviews were banned from markup outright in July 2026.
Why did my FAQ rich results disappear?
In August 2023 Google restricted FAQ accordions to well-known, authoritative government and health sites. Everyone else’s FAQPage markup still validates and still helps machine readers — it just does not render in results anymore.
How do I get sitelinks for my site?
You cannot markup your way in. Google generates sitelinks from your site’s structure and from what users actually click. A clear hierarchy and consistent internal linking are the extent of your control. The sitelinks search box, which markup did power, was removed from results in November 2024.
What is application/ld+json?
A <script> tag whose type tells crawlers the content is schema.org data — a machine-readable description of the page. Google reads it from anywhere in the HTML, and the JSON describes typed nodes (BreadcrumbList, Article, Organization) that should map onto what the page visibly shows.

Elsewhere on SaikoDev

  • This audit assumed the technical floor — how search works, keywords, content, backlinks. That floor is the SEO starter kit.
  • Authority still mostly comes from other sites linking to yours. The backlinks cold-start list is where a new site starts.
  • None of this is knowledge you have to buy. The three free courses in SEO learning resources cover the same ground in order, from the roadmap up.