Skip to content

SEO optimization #199

@fretchen

Description

@fretchen

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

  • Add description field to BlogPost interface
  • Update frontmatter parsing for descriptions
  • Add content description extraction utility
  • Implement dynamic page descriptions

Task 2: Tags System

  • Add tags and category fields to BlogPost interface
  • Update frontmatter parsing for tags
  • Create tag listing functionality
  • Add tags display to blog cards

Task 3: URL Slugs

Task 4: Structured Data

  • Create Schema.org component for blog posts
  • Add structured data to individual pages
  • Implement organization schema for homepage
  • Test with Google Rich Results Test

Task 5: Sitemap & Navigation

  • Generate XML sitemap
  • Update robots.txt
  • Implement related posts functionality
  • Add breadcrumb navigation

Task 6: Optimization & Testing

  • Improve internal linking
  • Test all SEO implementations
  • Validate structured data
  • Performance optimization

Success Metrics

SEO Improvements

  • All blog posts have unique meta descriptions
  • Structured data validates in Google Search Console
  • XML sitemap generated and submitted
  • URL structure uses descriptive slugs

User Experience

  • Related posts increase page views
  • Tags enable content discovery
  • Consistent commenting across all posts
  • Improved social media sharing

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions