Skip to content

feat(website): link Brian's X and LinkedIn profiles from the Person node - #829

Merged
blove merged 1 commit into
mainfrom
blove/person-sameas
Aug 25, 2026
Merged

feat(website): link Brian's X and LinkedIn profiles from the Person node#829
blove merged 1 commit into
mainfrom
blove/person-sameas

Conversation

@blove

@blove blove commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #828. sameAs is how a Person node resolves to a real-world identity, and answer engines rely on it for entity disambiguation — which is most of why /about carries 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.dev domain that appears nowhere in the real markup, so the URLs were re-checked directly.

"sameAs": [
  "https://github.com/blove",
  "https://x.com/blovedev",
  "https://www.linkedin.com/in/blove"
]

LinkedIn answers 999 to 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 sameAs is 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:

it('omits a profile the author record does not name', () => {
  const person = /* author: { name: 'Anon', github: 'anon' } */;
  expect(person['sameAs']).toEqual(['https://github.com/anon']);
});

personProfiles() emits a stable order so the JSON-LD doesn't churn between builds.

twitter was already declared on the Author interface and read by nothing; populating it now feeds only sameAs.

Verification

  • npx vitest run --config vite.config.mts from apps/website: 314 passed, 5 failed — the same pre-existing failures in thanks/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 /about emits all three URLs in order

🤖 Generated with Claude Code

`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>
@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
threadplane Ready Ready Preview Aug 25, 2026 12:42am

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval: this PR received an intelligent (AI) code review. See the review comments on this PR.

@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@blove
blove merged commit fb67c47 into main Aug 25, 2026
28 checks passed
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.

1 participant