Skip to content

blog-post: let a post say who wrote it, in a form a machine can read - #6

Merged
ralyodio merged 1 commit into
masterfrom
add-rel-me-to-post-template
Aug 19, 2026
Merged

blog-post: let a post say who wrote it, in a form a machine can read#6
ralyodio merged 1 commit into
masterfrom
add-rel-me-to-post-template

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Why

A post already carries its byline in prose — "by Anthony “chovy” Ettinger" — which is exactly the form nothing can act on. Directories, feed readers and the fediverse all look for rel="me", and the template published none.

Concretely: rssamplifier indexed this blog, got the author's name from the feed's managingEditor tag, and produced an author page with an email and a GitHub link and nothing else — because the pages genuinely declared nothing else. The only outbound links on the entire blog were two to kagi.com.

What

One <p> in the post footer, inside <article>:

<p>Find me: <a rel="me" href="https://defcon.social/@chovy">Mastodon</a> ·
<a rel="me" href="https://github.com/ralyodio">GitHub</a> ·
<a rel="me" href="mailto:anthony@profullstack.com">email</a></p>

rel="me" outranks h-card, JSON-LD sameAs and ordinary footer links in every identity extractor I know of, because it is the one a publisher has to state deliberately.

Verification

Run against rssamplifier's production identityFromHtml, on the live page with the same block already applied:

"profiles": [
 { "network": "fediverse", "url": "https://defcon.social/@chovy", "source": "rel-me" },
 { "network": "github",    "url": "https://github.com/ralyodio",  "source": "rel-me" },
 { "network": "email",     "url": "mailto:anthony@profullstack.com", "source": "rel-me" }
]

All three land as rel-me. Both handles were confirmed to be the person rather than the company: defcon.social/@chovy titles as "Anthony Ettinger (@chovy@defcon.social)", github.com/ralyodio as "ralyodio (Anthony Ettinger)".

Personal accounts only. The company X and YouTube accounts are deliberately absent — filing an org account under a person is worse than finding nothing, and good extractors reject them anyway.

Kept smolweb-valid: one paragraph, closed, no new elements.

pnpm test 132 passing · pnpm typecheck clean.

Note

This changes the template for new posts. The live blog's index.html — which is what a crawler actually fetches for the feed's site — was updated separately and directly, since that directory is not this repo.

🤖 Generated with Claude Code

A post already carries the byline in prose -- "by Anthony 'chovy' Ettinger" --
which is exactly the form nothing can act on. Directories, feed readers and
the fediverse all look for `rel="me"`, and the template published none, so a
crawler could tell you the post existed and nothing about who to reach about
it.

Concretely: rssamplifier indexed this blog, found the author's name from the
feed's managingEditor tag, and shipped an author page carrying an email and a
GitHub link and nothing else -- because the pages genuinely declared nothing
else. The only outbound links on the whole blog were two to kagi.com.

`rel="me"` is the strongest evidence an identity extractor has, ranking above
h-card, JSON-LD `sameAs` and ordinary footer links, because it is the one a
publisher has to state deliberately. Verified against rssamplifier's own
`identityFromHtml`: all three links come back as `source: "rel-me"`.

Personal accounts only. The company's X and YouTube accounts are deliberately
absent -- a directory that files an org account under a person is wrong in a
way that is worse than finding nothing, and the good extractors reject them
anyway.

Kept inside `<article>` and smolweb-valid: one `<p>`, closed, no new elements.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

2 finding(s)

LOW: 2

Severity Rule Location
LOW insecure-temp-file test/blog.test.ts:56
LOW insecure-temp-file test/blog.test.ts:57

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 0020f84 into master Aug 19, 2026
4 checks passed
@ralyodio
ralyodio deleted the add-rel-me-to-post-template branch August 19, 2026 12:44
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