Skip to content

Name the app's author in structured data, for search - #42

Merged
JamesmarkeyUK merged 1 commit into
mainfrom
claude/app-author-structured-data
Sep 5, 2026
Merged

JamesmarkeyUK merged 1 commit into
mainfrom
claude/app-author-structured-data

Conversation

@JamesmarkeyUK

Copy link
Copy Markdown
Contributor

Part of the 2026-09-05 credit James asked for: "App designed by James Markey MBE and the UNISIM team... it's more for search results than user." One of 15 identical PRs across the Universal Apps.

Why this file and not the About dialog

The in-app half is a colophon in the SDK's <AboutAppDialog>. This is the half a search engine can actually read — because that one cannot be: the dialog is a React portal and only enters the DOM once somebody clicks "About this app", so a crawler never renders it. This app's index.html is static, already carries a full set of meta/og/twitter tags, and had no structured data at all.

What it adds

One SoftwareApplication block naming:

  • Person — James Markey, honorificSuffix MBE, url → /about-james. The same url the app's marketing page uses, so the two resolve to one person rather than two unlinked mentions of a name.
  • Organization — UNI·SIM, with subjectOf the team post.
  • provider — UNI·SIM. A different claim from author, and both belong: provider operates and supports it, author made it.

Every value is read from this file's own <title>, description and canonical rather than typed again, so the block can't drift from what the page already says about itself.

Verified

Chromium, on all 15 apps: exactly one JSON-LD block, it parses, the author reads back with the right name, suffix and url, and its url matches the page's canonical. 15/15, zero page errors.

🤖 Generated with Claude Code

https://claude.ai/code/session_01M49D85H2FcSGrfbTMQsv3o


Generated by Claude Code

Part of the 2026-09-05 credit James asked for: "App designed by James
Markey MBE and the UNISIM team... it's more for search results than user."

The in-app half is a colophon in the SDK's <AboutAppDialog>. This is the
half a search engine can actually read, because that one cannot be: the
dialog is a React portal and only enters the DOM once somebody clicks
"About this app", so a crawler never renders it. This app's index.html is
static and had no structured data at all.

Adds one SoftwareApplication block naming:

  * Person - James Markey, honorificSuffix MBE, url -> /about-james. The
    same url the app's marketing page uses, so the two resolve to ONE
    person rather than two unlinked mentions of a name.
  * Organization - UNI-SIM, with subjectOf the team post.
  * provider - UNI-SIM. A different claim from author and both belong:
    provider operates and supports it, author made it.

Every value is read from THIS FILE's own title, description and canonical
rather than typed again, so the block cannot drift from what the page
already says about itself.

Verified in Chromium: exactly one JSON-LD block, it parses, the author
reads back with the right name, suffix and url, and its url matches the
page's canonical. Same check passed on all 15 apps.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M49D85H2FcSGrfbTMQsv3o
@JamesmarkeyUK
JamesmarkeyUK merged commit e661a86 into main Sep 5, 2026
1 of 2 checks passed
@JamesmarkeyUK
JamesmarkeyUK deleted the claude/app-author-structured-data branch September 5, 2026 11:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants