Internet Is Already Dead
AI-genereret satirisk blog
Besøg bloggen →Hvad er det?
En fuldautomatisk blog der satiriserer over AI-genereret indhold på internettet. Ironien er at bloggen selv er 100% AI-genereret - meta-satire på det mest absurde niveau.
Konceptet er simpelt: Hvis internettet alligevel drukner i AI-slop, kan vi lige så godt lave det sjovt. Hver morgen kl. 09:00 genererer systemet et nyt indlæg der leger med "dead internet theory" - idéen om at det meste online indhold allerede er bot-genereret.
Arkitektur
Systemet består af flere komponenter der arbejder sammen:
┌─────────────────────────────────────────┐
│ Ghost CMS (Docker) │
│ blog.wibholmsolutions.com │
└─────────────────────────────────────────┘
↑
│ Admin API (JWT)
│
┌─────────────────────────────────────────┐
│ Python Automation (Cron 09:00) │
├─────────────────────────────────────────┤
│ ├─ Gemini API (content generation) │
│ ├─ VaultReader (PersonalVault notes) │
│ ├─ SEO Optimizer (keywords, meta) │
│ └─ ImageFetcher (Unsplash API) │
└─────────────────────────────────────────┘ Content Generation Flow
Systemet har to modes til at generere indhold:
Vault Mode (primær)
Trækker inspiration fra mine personlige noter i PersonalVault. En tilfældig
ubrugt note vælges, og Gemini genererer en artikel baseret på emnet.
Systemet tracker hvilke noter der er brugt i used_notes.json
og resetter automatisk når alle er brugt.
Topic Mode
Vælger fra 20+ prædefinerede satiriske emner som "Why Your Smart Fridge Is Probably Writing Better Content Than You" eller "The Art of Making AI Sound Human (Written By AI)".
Anti-AI Skrivestil
For at undgå den typiske "ChatGPT-lyd" har jeg implementeret flere mekanismer:
- Banned words - 30+ ord der screenes: "delve", "leverage", "robust", "synergy", "game-changer", "it's worth noting"
- Asymmetrisk struktur - Instruktion om at variere (2 punkter → 5 punkter → 1 punkt) i stedet for perfekte lister
- Interruption patterns - Brug af "—" og "..." til at bryde sætninger mid-thought
- Kontroversielle holdninger - Minimum én uventet holdning per artikel for autenticitet
Systemet advarer hvis banned words alligevel sniger sig ind - meta-ironisk at en AI advarer om AI-lyd.
SEO Automation
Hver artikel optimeres automatisk:
- Keyword clusters - Prædefinerede semantic grupper (ai_content, seo_spam, content_farms, internet_culture)
- Meta descriptions - Auto-genereret, max 155 chars, keyword near start
- Tags - 3-5 relevante tags baseret på keyword matching
- Image alt-text - SEO-optimeret med primary keyword
Ghost CMS Integration
Bloggen kører på Ghost CMS i Docker med custom JWT authentication til Admin API. Tokens har 5 minutters levetid for sikkerhed.
Vigtigt: Bruger Debian-based image i stedet for Alpine pga. libvips kompatibilitetsproblemer med billedprocessering.
Interessante Detaljer
- Image tracking - Unsplash billeder trackes i JSON for at undgå duplicates
- Vault folder filtering - Kun specifikke mapper tilladt (Notes, Ideas, Reflections), andre skippes (Inbox, Audit-trail)
- Markdown parsing - Gemini output kan være wrapped i code fences, auto-stripped før publicering
- Safety filter handling - Graceful error hvis Gemini afviser content pga. safety policies
Projekt Struktur
ghost-blog/ ├── src/ │ ├── main.py # CLI entry point │ ├── content/ │ │ ├── generator.py # Gemini API wrapper │ │ ├── prompts.py # System prompts + banned words │ │ └── topics.py # 20+ satiriske emner │ ├── ghost/ │ │ └── client.py # Ghost Admin API (JWT auth) │ ├── vault/ │ │ └── reader.py # PersonalVault integration │ └── seo/ │ ├── keywords.py # Keyword clusters │ └── optimizer.py # Meta, tags, analysis ├── config/ │ ├── used_notes.json # Vault tracking │ └── used_images.json # Image tracking └── docker-compose.yml # Ghost container