Deploy / build (push) Successful in 16s
- Extract CSS into src/styles/global.css with design tokens (hoelee.com brand palette) - Self-hosted Inter + JetBrains Mono via @fontsource - Sticky nav + manual light/dark toggle + copy-button code blocks - Author card + Person JSON-LD (E-E-A-T), article meta, related posts, reading time - Full SEO: canonical, OG (with dims), twitter:card, favicon (all sizes), RSS + sitemap - New /categories/ and /categories/[category]/ pages - Add docs/ knowledge guides (content, design, seo, ops) + README index - Brand name: hoelee.dev -> Mr Hoelee
2.4 KiB
2.4 KiB
SEO & Metadata Reference — blog.hoelee.com
Operational reference for the SEO/GEO decisions baked into this project. Read when adding posts, changing <head> markup, or debugging search visibility.
Two-lane strategy (2026)
Optimize for both:
- Classic SEO — Google blue links (still the majority of name searches).
- GEO (Generative Engine Optimization) — getting cited by Google AI Overviews, ChatGPT Search, Perplexity. They pull from well-structured, question-answering content.
Identity & E-E-A-T (do this first, once)
The entire blog strategy is a name-search play, so identity must be airtight:
- One name everywhere: "Lee Teong Hoe" / "Mr Hoelee" — pick one and keep it identical on blog, LinkedIn, GitHub, git.hoelee.com.
- One photo across all profiles.
sameAshandles in thePerson/ProfilePageschema → LinkedIn, GitHub, git.hoelee.com.ProfilePageschema wrapping every post's author bio — how Google connects my writing to my professional identity.
Per-post checklist
- Unique title ≤ 60 chars (target keyword near front)
- Meta description ≤ 155 chars
- Canonical URL set
- Custom
og:image(1200×630) — never the reused logo og:image:width/heightdeclared (else WhatsApp/Telegram/LinkedIn reject the preview)twitter:card: summary_large_image- Category + tags set
- Author card present
- Internal links to ≥1 pillar post
Structural checklist (site-wide)
sitemap.xml+robots.txt+ RSS — auto-generated by Astro- Core Web Vitals 90+ (verify Lighthouse on 390px and 1280px)
- Question-shaped H2/H3 (the phrasing a learner actually searches)
- Related-posts module (3 cards) on every post
- No orphaned/thin pages (avoid the hoelee.com ~400-attachment mistake)
Syndication policy
- Primary home = this domain (own the SEO).
- Cross-post to Dev.to / Medium with a
rel=canonicalpointing back to blog.hoelee.com — reach without platform lock-in. - Never make a third-party platform the primary host.
The "hard job → post" GEO framing
When writing, phrase the opening as the exact question someone types into an AI engine or Google:
"How do I set up site-to-site OpenVPN behind CGNAT?"
Then answer it directly with clear H2/H3 headings. This is what both Google and the AI engines cite.