Hetzner-hosted static artifact shelf · synthesized from parallel Claude Opus 4.7 and Codex GPT-5.5 research · Generated 2026-05-28
research.chrisjunlee.com as the canonical home on Hetzner. Treat Medium, dev.to, Hashnode, Substack as amplifiers, not hosts — and only when they let you set canonical_url back to your domain. Ship the boring static SEO stack on day one (sitemap, RSS, JSON-LD Article, OpenGraph, canonical, GSC + Bing + IndexNow), then run the Willison-canon flywheel: own-domain → full-content RSS → email mirror → selective HN/lobste.rs submissions. Long-tail organic search dominates over time.
Bake every item into the per-artifact HTML template before publishing the first piece. Retrofitting later loses search-cycle value.
| Item | Why it matters | Leverage | Status |
|---|---|---|---|
sitemap.xml + robots.txt Sitemap: directive in robots.txt | Canonical discovery surface for Google and Bing. robots.txt Sitemap directive is the cheapest cross-engine signal. | Foundational | Not built |
Self-referencing on every page | Fences off scrapers and makes future cross-post canonicalization correct by default. Google treats canonical as dedup hint, not command — set it consistently. | Foundational | Not built |
OpenGraph + Twitter card summary_large_image | Single biggest determinant of click-through on HN, X, LinkedIn, Bluesky. Per-artifact image is the largest delta. | High | Not built |
JSON-LD Article + Person Rendered in initial HTML, not via JS | Person.sameAs (GitHub, Scholar, ORCID, LinkedIn, HN, Bluesky) is the largest signal for Google entity consolidation around your name. | High | Not built |
Full-content RSS/Atom Not summary feeds | Required for HN/lobste.rs auto-mirroring, Feedbin/NetNewsWire, and Substack/Buttondown ingestion. Willison notes email subscribers vastly outnumber RSS readers — but RSS is the input pipe. | Foundational | Not built |
Google Search Console + Bing Webmaster Verify; submit sitemap | Verification + sitemap submission accelerates indexing. Without it, indexing latency can run weeks. | Foundational | Pending |
IndexNow ping on publish Bing / Yandex / ChatGPT search | Google ignores it, but everyone else uses it. Trivial to add; one HTTP POST on publish. | Easy win | Not built |
Use as amplifiers, not hosts. Cross-post only when canonical_url back to your domain is supported and respected.
| Platform | Canonical handling | Out-of-box SEO | Network effect | Verdict |
|---|---|---|---|---|
Medium medium.com | Yes — Import tool auto-sets canonical to source URL. Manual canonical also supported. | Limited metadata control; no plugin or sitemap edits. Strong topic recommendation engine. | Large but deprioritizes outbound clicks. | Mirror only |
dev.to dev.to | Yes — explicit canonical_url field in front matter / RSS import. Respected. | Auto sitemap, OG, structured data. Tag-based feed; "Top of week" newsletters. | Biggest dev community after HN. | Mirror selectively |
Hashnode hashnode.com | Yes — and publishes under your own domain at no cost (doubles as host). | Auto sitemap, RSS, JSON-LD, AMP, headless API. Recently improved. | Smaller but high developer-intent traffic. | Mirror selectively |
Substack substack.com | Awkward — content hosted there, external canonical not load-bearing. | Decent OG/cards; weak schema control. Recommendations + Notes drive discovery. | Strong email + Notes graph. | Email mirror |
Ghost (self-hosted) ghost.org | N/A — could replace your static stack entirely. | Best of any platform here: auto canonical, JSON-LD, sitemap, robots, semantic markup, RSS, AMP, native newsletter. | None inherent — you supply it. | Overkill |
Mirror.xyz mirror.xyz | Limited; weak external canonical control. | Minimal mainstream SEO. Crypto/web3 audience. | Low for non-crypto. | Skip |
The same stack across Willison, Evans, Luu, Gwern, Sanglard — own-domain canonical, RSS, email, occasional HN hit.
| Tactic | What to do | Payoff |
|---|---|---|
| Rank for your own name + niche | Hiring managers Google " | Direct conversion of inbound interest |
| Identity graph via sameAs | Person JSON-LD sameAs[] = GitHub, LinkedIn, Scholar, ORCID, X/Bluesky, HN profile. Single biggest signal for entity consolidation in Google knowledge graph. | Google builds knowledge-panel-like identity |
| GitHub README backlinks | Add research.chrisjunlee.com to profile README, pinned-repo READMEs, repo descriptions. Mirror the academic GitHub-to-paper pattern. | Cross-platform authority transfer |
| Google Scholar + ORCID + arXiv | Public Scholar profile with site as homepage. ORCID profile with site URL. arXiv "Comments" field if you publish there. | Researcher-side discoverability |
| Niche-query title pattern | Title artifacts after exact searched problems: "Benchmarking X on Hetzner ARM VPS" — not "Notes on X". | High-leverage long-tail SEO |
| Permanent slug, no date prefix | Each artifact gets a sluggable URL with no date prefix so it ages well and accumulates inbound links (Gwern/Sanglard model). | Compounding link equity |
| About page named niches | About lists niches in plain prose ("research notes on X, Y, Z") so long-tail queries match. Include name, role, location/timezone, GitHub, LinkedIn, Scholar, resume. | Hiring-manager trust signal |
In leverage order. The first three are the floor — everything else compounds on top.
| # | Action | Detail | Effort |
|---|---|---|---|
| 1 | Build artifact HTML template | sitemap.xml, robots.txt, full-content RSS, self-canonical, OG + Twitter card, JSON-LD Article — all baked into a single per-artifact template before publishing anything. | 1-2 hr |
| 2 | Build /about with Person JSON-LD | sameAs[] = GitHub, Scholar, ORCID, LinkedIn, HN, Bluesky. Plain-prose niche list. Email + resume + selected projects. | 30 min |
| 3 | Verify GSC + Bing; submit sitemap | Wire IndexNow ping into the publish step. Google ignores IndexNow but Bing/Yandex/ChatGPT search use it. | 30 min |
| 4 | Auto-generate per-artifact OG image | Small script (e.g. satori/og-image, or imagemagick). Largest social CTR lever; commonly skipped. | 1 hr |
| 5 | GitHub identity backlinks | Profile README + pinned-repo READMEs link research.chrisjunlee.com. Add URL to Scholar/ORCID profiles. | 15 min |
| 6 | Email mirror via Substack or Buttondown | Willison copy-paste pattern. Single-field subscribe form on site. Distribution > authoring. | 30 min |
| 7 | Title artifacts for niche queries | Pattern: " | Ongoing |
| 8 | Selective cross-post + community submit | Top ~25% of artifacts → dev.to + Hashnode with canonical_url back to home; never without it. Reserve HN/lobste.rs submissions for the same tier. Engage in comments within first hour. | Per artifact |
Ghost as platform: Codex framed it as a CMS alternative; Claude flagged it as the best out-of-box SEO of any platform and a potential static-stack replacement if native newsletter becomes a goal. Verdict: stay static given the "upload HTML artifacts" framing — Ghost is overkill.
Canonical guarantees: Codex more skeptical — cites Google's "canonicalization is dedup, not a command" rule (Search Engine Land 2026). Claude treats canonical as load-bearing. Verdict: ship canonical anyway, but expect imperfect duplicate shielding. Prefer excerpt-with-link to full mirror when possible.
Synthesized from two parallel research passes, both 2026-05-28:
High-confidence items appear in both reports. Single-source items are flagged in the bullets above.