SEO Optimization: Essential Features for Better Search Visibility
Overview
This issue outlines critical SEO improvements needed to enhance the website's search engine visibility and user engagement. The current implementation lacks essential SEO infrastructure that prevents optimal indexing and discovery.
Current SEO Status
✅ What We're Doing Well
- Clean URLs (no .html extensions)
- Fast loading (Vite optimization)
- Mobile responsive design
- Semantic HTML structure
- Analytics (Umami) already integrated
- Regular publishing with dates
- Rich content (interactive posts, NFTs)
❌ Critical Missing Features
- Meta descriptions for individual pages
- Tags/categories system
- SEO-friendly URL slugs
- Schema.org structured data
- XML sitemap generation
- Related posts functionality
Priority 1: Essential SEO Infrastructure
1. Meta Tags & Open Graph Support
Problem: Poor search result snippets, no social media previews
Impact: Low click-through rates from search results
Implementation:
// Update BlogPost interface
export interface BlogPost {
title: string;
content: string;
description?: string; // Meta description (150-160 chars)
keywords?: string[]; // SEO keywords
tags?: string[]; // Content tags
category?: string; // Primary category
slug?: string; // URL-friendly slug
featured_image?: string; // Social media image
}
Files to modify:
types/BlogPost.ts
utils/getBlogs.ts (frontmatter parsing)
- Individual blog pages (meta tag generation)
2. Dynamic Page Titles & Descriptions
Problem: Generic titles, missing descriptions
Current: All pages use default title/description
Implementation:
// Better individual blog page SEO
export function title(pageContext: PageContext) {
const blog = blogs[id];
return `${blog.title} | Fred's Blog`;
}
export function description(pageContext: PageContext) {
const blog = blogs[id];
return blog.description || extractDescription(blog.content);
}
Files to modify:
pages/blog/@id/+title.ts
- Create
pages/blog/@id/+description.ts
- Add utility function for content description extraction
Priority 2: Content Organization
3. Tags & Categories System
Problem: No topical clustering, poor internal linking
Impact: Missed long-tail keywords, poor content discoverability
Markdown frontmatter example:
---
title: "Can we decentralize access to quantum computing?"
description: "Exploring how smart contracts could democratize quantum computing access through decentralized technologies"
tags: ["quantum-computing", "blockchain", "decentralization", "smart-contracts"]
category: "technology"
publishing_date: 2025-10-02
tokenID: 123
---
Implementation needs:
- Update frontmatter parsing in
utils/getBlogs.ts
- Create tag/category listing pages
- Add tag filtering functionality
- Tag-based related posts
4. SEO-Friendly URL Slugs
Problem: Numeric IDs in URLs
Current: /blog/0, /blog/1, /blog/2
Target: /blog/quantum-computing-smart-contracts
Implementation:
function generateSlug(title: string): string {
return title
.toLowerCase()
.replace(/[^a-z0-9\s-]/g, '')
.replace(/\s+/g, '-')
.substring(0, 60);
}
Files to modify:
- Update routing in
pages/blog/@slug/+Page.tsx
- Update blog listing to use slugs
- Add slug generation to blog processing
- Handle URL redirects for existing numeric URLs
Priority 3: Rich Content Features
5. Schema.org Structured Data
Problem: No structured data for search engines
Impact: Missed rich snippets, poor search result appearance
Implementation:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Can we decentralize access to quantum computing?",
"author": {"@type": "Person", "name": "Fred Jendrzejewski"},
"datePublished": "2025-10-02",
"description": "Exploring how smart contracts...",
"keywords": ["quantum computing", "blockchain"],
"url": "https://fretchen.github.io/blog/quantum-computing-smart-contracts"
}
</script>
Files to modify:
- Create structured data component
- Add to individual blog pages
- Include author information
- Add organization schema for homepage
6. XML Sitemap Generation
Problem: No sitemap for search engine crawling
Implementation: Generate dynamic sitemap including all blog posts and pages
Files to create:
public/sitemap.xml (generated)
- Build script for sitemap generation
- Include in
robots.txt
Priority 4: User Engagement
7. Related Posts Functionality
Problem: Poor internal linking
Implementation:
function getRelatedPosts(currentPost: BlogPost): BlogPost[] {
return blogs.filter(blog =>
blog.tags?.some(tag => currentPost.tags?.includes(tag))
).slice(0, 3);
}
8. Consistent Commenting System
Current: Giscus comments only on some posts
Target: Consistent commenting across all posts with engagement metrics
Implementation Tasks
Task 1: Basic Meta Infrastructure
Task 2: Tags System
Task 3: URL Slugs
Task 4: Structured Data
Task 5: Sitemap & Navigation
Task 6: Optimization & Testing
Success Metrics
SEO Improvements
User Experience
Files That Need Changes
Core Infrastructure
types/BlogPost.ts - Add SEO fields
utils/getBlogs.ts - Parse new frontmatter fields
pages/+config.ts - Default SEO configuration
Blog System
pages/blog/@id/+Page.tsx - Dynamic SEO tags
pages/blog/@id/+title.ts - Improved titles
pages/blog/@id/+description.ts - New file for descriptions
components/EntryList.tsx - Display tags and categories
New Components
components/SEOHead.tsx - Meta tags component
components/StructuredData.tsx - Schema.org markup
components/RelatedPosts.tsx - Related content
components/TagList.tsx - Tag display and navigation
Technical Notes
Slug Migration Strategy
- Generate slugs for existing posts based on titles
- Maintain backward compatibility with numeric IDs
- Implement 301 redirects from old URLs to new slugs
Content Description Extraction
function extractDescription(content: string, maxLength = 160): string {
// Remove markdown formatting
const plainText = content.replace(/[#*`]/g, '').trim();
// Take first paragraph or first N characters
const firstParagraph = plainText.split('\n\n')[0];
return firstParagraph.length > maxLength
? firstParagraph.substring(0, maxLength - 3) + '...'
: firstParagraph;
}
Tag System Implementation
- Support hierarchical categories (e.g., "technology > quantum-computing")
- Generate tag clouds for popular topics
- Create tag-based RSS feeds
- Implement tag-based search functionality
Expected Impact
Search Engine Optimization
- Meta descriptions: +15-25% CTR improvement
- URL slugs: Better keyword targeting and user trust
- Structured data: Rich snippets and improved SERP appearance
- Tags/categories: Better topical authority and long-tail ranking
User Experience
- Related posts: +20-30% page views per session
- Tag navigation: Improved content discovery
- Better URLs: Increased social sharing and bookmarking
Performance Metrics
- Improved Google PageSpeed Insights SEO score
- Better Core Web Vitals (through optimized meta loading)
- Increased organic search traffic
- Higher engagement metrics (time on site, pages per session)
SEO Optimization: Essential Features for Better Search Visibility
Overview
This issue outlines critical SEO improvements needed to enhance the website's search engine visibility and user engagement. The current implementation lacks essential SEO infrastructure that prevents optimal indexing and discovery.
Current SEO Status
✅ What We're Doing Well
❌ Critical Missing Features
Priority 1: Essential SEO Infrastructure
1. Meta Tags & Open Graph Support
Problem: Poor search result snippets, no social media previews
Impact: Low click-through rates from search results
Implementation:
Files to modify:
types/BlogPost.tsutils/getBlogs.ts(frontmatter parsing)2. Dynamic Page Titles & Descriptions
Problem: Generic titles, missing descriptions
Current: All pages use default title/description
Implementation:
Files to modify:
pages/blog/@id/+title.tspages/blog/@id/+description.tsPriority 2: Content Organization
3. Tags & Categories System
Problem: No topical clustering, poor internal linking
Impact: Missed long-tail keywords, poor content discoverability
Markdown frontmatter example:
Implementation needs:
utils/getBlogs.ts4. SEO-Friendly URL Slugs
Problem: Numeric IDs in URLs
Current:
/blog/0,/blog/1,/blog/2Target:
/blog/quantum-computing-smart-contractsImplementation:
Files to modify:
pages/blog/@slug/+Page.tsxPriority 3: Rich Content Features
5. Schema.org Structured Data
Problem: No structured data for search engines
Impact: Missed rich snippets, poor search result appearance
Implementation:
Files to modify:
6. XML Sitemap Generation
Problem: No sitemap for search engine crawling
Implementation: Generate dynamic sitemap including all blog posts and pages
Files to create:
public/sitemap.xml(generated)robots.txtPriority 4: User Engagement
7. Related Posts Functionality
Problem: Poor internal linking
Implementation:
8. Consistent Commenting System
Current: Giscus comments only on some posts
Target: Consistent commenting across all posts with engagement metrics
Implementation Tasks
Task 1: Basic Meta Infrastructure
descriptionfield toBlogPostinterfaceTask 2: Tags System
tagsandcategoryfields toBlogPostinterfaceCreate tag listing functionalityTask 3: URL SlugsTask 4: Structured Data
Task 5: Sitemap & Navigation
Generate XML sitemapAdd breadcrumb navigationTask 6: Optimization & Testing
Success Metrics
SEO Improvements
User Experience
Files That Need Changes
Core Infrastructure
types/BlogPost.ts- Add SEO fieldsutils/getBlogs.ts- Parse new frontmatter fieldspages/+config.ts- Default SEO configurationBlog System
pages/blog/@id/+Page.tsx- Dynamic SEO tagspages/blog/@id/+title.ts- Improved titlespages/blog/@id/+description.ts- New file for descriptionscomponents/EntryList.tsx- Display tags and categoriesNew Components
components/SEOHead.tsx- Meta tags componentcomponents/StructuredData.tsx- Schema.org markupcomponents/RelatedPosts.tsx- Related contentcomponents/TagList.tsx- Tag display and navigationTechnical Notes
Slug Migration Strategy
Content Description Extraction
Tag System Implementation
Expected Impact
Search Engine Optimization
User Experience
Performance Metrics