Personal Homepage SEO Improvement (Astro × Search Console)
Self-operated / Owner / SEO / Content
SEO project on my GitHub Pages portfolio. Title/description tuning and internal linking lifted CTR to 15.45% (~3x industry avg) at position 8.55 over 25 days.
Overview
An ongoing project to maximize search traffic to the GitHub Pages portfolio site you’re reading. I review Google Search Console data weekly and continuously refine titles, descriptions, internal links, and content structure.
Setup: Solo — development, operations, and content all by me.
Responsibilities
- Optimizing every title (30-60 chars) and description (120-160 chars)
- Designing layered internal linking across profile / track record / products / blog
- Generating tag pages both dynamically and statically (122 tag pages) for long-tail discovery
- Maintaining site freshness with one post per day
- Implementing schema.org structured data (articles, products, breadcrumbs)
- Weekly Search Console review feeding back into article-level rewrites
Results (April 22 - May 16, 2026: 25 days of operation)
Cumulative summary
| Metric | Value | Notes |
|---|---|---|
| Search clicks | 78 | Per Search Console |
| Search impressions | 505 | Per Search Console |
| Search CTR | 15.45% | ~3x industry average (3-5%) |
| Average position | 8.55 | Stable near the first page |
| Pages with at least one click | 36 | Traffic well distributed across the site |
Trajectory from April to now
The site went live on April 6, 2026, and Search Console measurement effectively started on April 22. The picture is one of going from near-zero traffic at launch to a steadily upward curve in May, driven by daily content publishing and continuous SEO refinements.
| Period (approx.) | Clicks / day | What happened |
|---|---|---|
| Late April (launch period: 4/22-4/30) | 0-2 | Right after launch — backlinks and indexing were thin; almost no search traffic |
| Early May (content build-out: 5/1-5/8) | 1-5 | Daily blog publishing and tightened internal linking kicked in; impressions surged (peak of 70+ on 5/2) |
| Mid May (growth phase: 5/9-5/12) | 5-13 | All-time high of 13 clicks on May 11. Effects of static tag-page generation and title/description optimization became visible |
| Late May (stabilization: 5/13-5/16) | 3-8 | Settled into a daily-clicks rhythm |
— So the core story of this engagement is going from “essentially zero traffic” to “several to a dozen clicks per day” inside a month.
Top landing pages (clicks ≥ 1)
| Page | Clicks | CTR | Avg. position |
|---|---|---|---|
| /product/defrago/ | 36 | 62.07% | 2.69 |
| /blog/20260408-yumehashi-story/ | 17 | 45.95% | 2.03 |
| /ja/ (home) | 11 | 12.94% | 23.29 |
| /product/ | 5 | 8.20% | 3.80 |
| /product/tasukiba-user/ | 2 | 100.00% | 1.50 |
Top queries (clicks ≥ 1)
| Query | Clicks | CTR | Avg. position |
|---|---|---|---|
defrago (my product name) | 35 | 35.35% | 3.35 |
ユメハシ (my product name) | 16 | 23.19% | 4.12 |
teppei | 1 | 33.33% | 9.33 |
Improvement opportunities (impressions but zero clicks)
| Query | Impressions | Avg. position | Status |
|---|---|---|---|
ジャネーの法則 (Janet’s Law) | 5 | 3.00 | Ranking high, but title/description not capturing clicks |
site:github.io | 5 | 62.40 | Site-scoped search; position is too low to expect traffic |
java ポートフォリオ 例 | 3 | 41 | Highly competitive query; position is low |
— Queries that already rank well but get no clicks are the cheapest next lever: rewriting title and description can lift CTR without changing the underlying position.
What worked, and what’s next
- Branded queries secured: my self-built products (defrago / ユメハシ) land in the top 5 for branded queries. Cross-referencing them across product pages and blog articles established brand recognition
- CTR above industry average: rewriting titles and descriptions from the reader’s perspective lifted overall CTR to roughly 3x the industry average
- Individual articles ranking high: personal-development stories and product intro pages settled into ~2nd position
- Next iteration: redesigning the title and description of the home page (still at position 20+) to lift its rank, while simultaneously rewriting CTAs for the “impressions-but-zero-clicks” queries