```html

Building an Auto-Generated Technical Blog Pipeline: Infrastructure Setup for Four Domain Properties

Overview

This session implemented a comprehensive technical blogging system across four domain properties (queenofsandiego.com, sailjada.com, dangerouscentaur.com, and burialsatseasandiego.com) with automatic post generation from Claude Code session transcripts. The system captures granular technical details from development work and publishes them immediately upon session completion, making all work visible and auditable.

What Was Done

  • Created auto-generation pipeline scripts to parse Claude Code session transcripts and generate blog posts
  • Provisioned S3 buckets and CloudFront distributions for four tech blog subdomains
  • Configured DNS routing across three DNS providers (Route53 for AWS-hosted zones, Namecheap for dangerouscentaur, GoDaddy for burialsatseasandiego)
  • Integrated tech blog links into existing site navigation (Ship's Papers menu)
  • Set up automated post generation hooks triggered at session end
  • Established certificate infrastructure for HTTPS on all four properties

Technical Details: Infrastructure Architecture

Blog Generation Pipeline

The system works by hooking into Claude Code's session lifecycle. When a development session ends, the tech_blog_stop.sh hook executes and:

  1. Reads the session transcript (JSONL format from ~/.claude/projects/)
  2. Extracts all tool use entries (file operations, commands executed) using tech_blog_generator.py
  3. Runs Python analysis to strip credentials and extract technical context
  4. Generates an HTML blog post with specific file paths, resource names, and decisions
  5. Uploads to the appropriate S3 bucket based on which domain was the focus
  6. Invalidates CloudFront cache to make the post immediately live

This approach ensures every technical decision is documented in real-time, with granular details about what changed and why.

S3 and CloudFront Configuration

Four S3 buckets were created following the pattern tech-{domain}-blog:

  • tech-queenofsandiego-blog — CloudFront distribution with wildcard cert for *.queenofsandiego.com
  • tech-sailjada-blog — CloudFront distribution with wildcard cert for *.sailjada.com
  • tech-dangerouscentaur-blog — Uses existing wildcard CF distribution (ID: E2Q4UU71SRNTMB) on dc-sites bucket
  • tech-burialsatseasandiego-blog — CloudFront distribution, requires separate ACM cert due to external domain

Each CloudFront distribution is configured with:

  • S3 origin with origin access identity (OAI) for secure access
  • Default root object: index.html
  • HTTPS only (viewer policy enforced)
  • Cache behavior with 300-second TTL for HTML, longer for static assets
  • Compression enabled for text-based content

DNS Configuration Across Three Providers

DNS was configured differently based on each domain's registrar:

Route53 (sailjada.com, queenofsandiego.com):

tech.queenofsandiego.com CNAME → CloudFront distribution domain
tech.sailjada.com CNAME → CloudFront distribution domain

Namecheap (dangerouscentaur.com):

tech CNAME → CloudFront distribution domain
(Uses existing wildcard cert infrastructure)

GoDaddy (burialsatseasandiego.com):

tech CNAME → CloudFront distribution domain
ACM certificate DNS validation CNAME record added to GoDaddy nameservers

The burialsatseasandiego.com setup required special handling because it's registered at GoDaddy but was being accessed via the sailjada.com wildcard certificate. A new ACM certificate was issued for the full domain, and the DNS validation record was added via GoDaddy's API integration.

Infrastructure Configuration Storage

All infrastructure details (bucket names, distribution IDs, DNS records, certificate ARNs) were saved to a structured JSON config file at:

/Users/cb/.claude/projects/-Users-cb-Documents-repos/memory/tech_blogs_infra.json

This config is referenced by the blog generator to determine which S3 bucket and CloudFront distribution to use for each domain, eliminating hardcoding and enabling easy updates.

Integration with Existing Navigation

Links to the tech blogs were added to the Ship's Papers menu on each primary site, making technical documentation immediately discoverable by stakeholders like Sergio. The navigation structure follows the existing pattern in index.html files across all properties.

Certificate Management

  • *.queenofsandiego.com — existing wildcard cert in ACM
  • *.sailjada.com — existing wildcard cert in ACM
  • dangerouscentaur.com — covered by existing wildcard distribution
  • burialsatseasandiego.com — new ACM certificate provisioned, DNS validation via GoDaddy

Key Architectural Decisions

Why separate S3 buckets per domain? Isolation and independent scaling. Each property can have its own traffic patterns and retention policies. Separate buckets also simplify permissions and enable domain-specific blog customization in the future.

Why CloudFront? Global CDN distribution ensures low-latency blog access regardless of where readers are located. Cache invalidation is fast (propagates within seconds), allowing real-time post updates. HTTPS termination at edge improves performance.

Why hook into Claude Code sessions? This captures the actual development context—file paths, commands, tool usage—directly from the transcript rather than relying on manual documentation. It's granular, immediate, and unhackable in terms of accuracy.

Why store infrastructure config as JSON? Enables the blog generator and future tooling to be completely provider-agnostic. If CloudFront distributions change or new subdomains are added, only the config file needs updating.

Security Considerations

The blog generation pipeline includes a credential-stripping phase that:

  • Removes any API keys, tokens, or passwords from command outputs
  • Redacts email addresses and phone numbers from file contents
  • Filters environment variables that might contain secrets
  • Logs only file paths and operation types, not file contents when sensitive

This ensures technical documentation is detailed enough to audit and learn from, but secure enough for external stakeholder review.

What's Next

  • Image asset management on burialsatseasandiego.com (incorrect images for "imagine" and "small catamaran" fields noted for