feat(website): link Brian's X and LinkedIn profiles from the Person node - #829
Merged
Conversation
`sameAs` is how a Person node resolves to a real-world identity, and answer engines lean on it for entity disambiguation — the reason /about carries a Person node at all. It listed only GitHub, so the strongest disambiguating signals were missing. Add the two profiles Brian already links publicly from brianflove.com, verified against that page's raw HTML rather than a summary. (LinkedIn answers 999 to automated requests; that is its anti-bot response, not a dead link.) Keep the existing invariant intact: `sameAs` states only profiles the author record actually names. Each handle is its own opt-in field, so one is never synthesized from another — an author with a GitHub handle does not acquire an invented X URL — and `personProfiles()` emits them in a stable order so the JSON-LD does not churn between builds. A test covers exactly that case. `twitter` was already declared on the Author interface and read by nothing; populating it now feeds only `sameAs`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #828.
sameAsis how aPersonnode resolves to a real-world identity, and answer engines rely on it for entity disambiguation — which is most of why/aboutcarries a Person node. It listed only GitHub, so the two strongest disambiguating signals were absent.What changed
Adds the profiles Brian already links publicly from brianflove.com, verified against that page's raw HTML rather than a fetched summary — an earlier summarization pass in this work invented a
brianlove.devdomain that appears nowhere in the real markup, so the URLs were re-checked directly.LinkedIn answers
999to automated requests; that's its anti-bot response, not a dead link. X and GitHub both return 200.The invariant is preserved
The existing code comment is explicit that
sameAsis an identity claim and a guessed profile is a false one. That still holds: each handle is its own opt-in field on the author record, so one is never derived from another. An author naming only a GitHub handle does not acquire an invented X URL — there's a test for precisely that:personProfiles()emits a stable order so the JSON-LD doesn't churn between builds.twitterwas already declared on theAuthorinterface and read by nothing; populating it now feeds onlysameAs.Verification
npx vitest run --config vite.config.mtsfromapps/website: 314 passed, 5 failed — the same pre-existing failures inthanks/page.spec.tsx,PostCard.spec.tsx,Differentiator.spec.tsx, untouched here (313 before; 1 added test accounts for the delta)nx lint website: 0 errors, 29 warnings (unchanged)nx build website --configuration=production: succeeds, and the built/aboutemits all three URLs in order🤖 Generated with Claude Code