```html

Building Auto-Generated Technical Blog Infrastructure Across Four Sites

This session established a comprehensive technical documentation system that automatically generates detailed blog posts for four separate maritime and lifestyle brands. The system captures granular development activity from Claude Code sessions and publishes it to dedicated tech blogs, providing transparent project visibility for stakeholders like Sergio.

What Was Done

  • Created automated blog generation infrastructure for tech.queenofsandiego.com, tech.sailjada.com, tech.dangerouscentaur.com, and tech.burialsatseasandiego.com
  • Implemented Claude Code session hooks to capture development activity in real-time
  • Built AWS infrastructure (S3, CloudFront, Route53/Namecheap DNS) for four new tech blog sites
  • Integrated Ship's Papers navigation menu with links to tech blog
  • Established credential-safe post generation that filters sensitive data

Technical Architecture

Session Capture & Processing

The system uses Claude Code hooks to intercept development sessions at completion. The tech_blog_stop.sh hook runs when a session ends, reading the session transcript from Claude's local session storage at ~/.claude/sessions/. The transcript contains JSONL-formatted entries with file modifications, commands executed, and tool usage patterns.

The hook invokes tech_blog_generator.py, which:

  • Parses the session transcript to extract modifications, commands, and infrastructure changes
  • Filters out sensitive patterns: passwords, API keys, tokens, AWS credentials, private keys
  • Generates HTML blog post with granular technical details
  • Timestamps the post and assigns it to the correct tech blog based on which repo was modified
  • Publishes directly to the appropriate S3 bucket and invalidates CloudFront cache

The blog generator uses regex patterns to identify and redact sensitive content while preserving technical context: file paths, function names, resource identifiers (bucket names, distribution IDs, hosted zone IDs), and architectural decisions.

Multi-Site Infrastructure

Each tech blog has identical infrastructure patterns deployed via tech_blog_init.py:

  • S3 Buckets: Named qos-tech-blog, jada-tech-blog, dc-tech-blog, bats-tech-blog with versioning and encryption enabled
  • CloudFront Distributions: Public CDN for each S3 bucket with HTTPS, gzip compression, cache behaviors for HTML (0 TTL) and assets (1 year TTL)
  • DNS: Route53 for sailjada.com and queenofsandiego.com subdomains; Namecheap CNAME for dangerouscentaur.com; GoDaddy CNAME for burialsatseasandiego.com
  • ACM Certificates: Wildcard certs for *.queenofsandiego.com and *.sailjada.com already existed; new certs requested for tech blog subdomains

The initialization script automatically:

  • Creates S3 bucket with proper bucket policy for CloudFront origin access
  • Creates CloudFront distribution with origin access identity (OAI)
  • Requests ACM certificate with DNS validation
  • Outputs DNS validation records for manual addition to domain registrar
  • Stores infrastructure metadata in ~/.claude/projects/memory/infrastructure_config.json for runtime reference

DNS Configuration

Since certificates needed validation:

  • sailjada.com & queenofsandiego.com: Route53 hosted zones provided automatic DNS validation; certs validated immediately
  • dangerouscentaur.com: Existing wildcard CF distribution with manual DNS pointed to Namecheap; added CNAME record via Namecheap dashboard
  • burialsatseasandiego.com: GoDaddy DNS registrar; added ACM DNS validation CNAME via GoDaddy API using credentials from project memory

CloudFront distributions deployed with aliases for tech.[domain] subdomains once certificates validated.

Integration with Ship's Papers Navigation

Updated /Users/cb/Documents/repos/sites/queenofsandiego.com/index.html to add tech blog link in the Ship's Papers dropdown menu. The structure follows existing dropdown patterns with a link to the CloudFront distribution URL. This change invalidated the CloudFront cache for queenofsandiego.com to serve the updated navigation immediately.

Similar navigation updates planned for other sites' index.html files.

Key Decisions & Rationale

Why Auto-Generation?

Manual blog posts lag behind development and create friction. By hooking into Claude Code's session lifecycle, every piece of work—file edits, infrastructure changes, commands run—is automatically captured and converted to documentation. This eliminates the "write about what you did" overhead and ensures documentation stays current.

Why Granular Details?

High-level summaries hide critical decisions and implementation details. Sergio and other engineers need to understand what changed, where, and why. The blog posts include exact file paths, S3 bucket names, CloudFront distribution IDs, and command examples. This level of detail enables stakeholders to audit work, replicate processes, and verify decisions.

Why Credential Filtering?

The blog posts are public. Infrastructure details are assets; credentials are liabilities. The system uses strict regex filters to redact API keys, passwords, tokens, and private keys while preserving the technical context that makes the posts useful.

Why Four Separate Tech Blogs?

Each brand (Queen of San Diego, Sail Jada, Dangerous Centaur, Burials at Sea San Diego) has distinct audiences and repositories. Separate tech blogs allow organization by brand while using identical infrastructure patterns for consistency and maintainability.

Deployment Status

All four tech blogs are live and publicly accessible:

  • CloudFront distributions deployed with valid HTTPS certificates
  • DNS records propagated and validated
  • Initial blog posts published from this session
  • HTTP health checks passing (200 responses from CloudFront origins)

What's Next

  • Integrate tech blog navigation links into remaining site index.html files (dangerouscentaur, sailjada, burialsatseasandiego)
  • Deploy blog archive/listing page showing all posts with dates and categories
  • Add filtering by tag (infrastructure, feature, bugfix, etc.) for easier navigation
  • Monitor S3 upload metrics and CloudFront cache performance
  • Iterate on session capture to improve relevance filtering and post quality

The system is operational and will begin auto-generating posts for all future development sessions across these four brands.

```