From a8bc40037163d9f996de5ec6a57d0454a972d1ea Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Wed, 19 Aug 2026 00:02:32 +0200 Subject: [PATCH] video seo --- deploy/Caddyfile.example | 21 +++++-- shared/interfaces/Catcrafts.Shared-Views.cppm | 56 +++++++++++++++++- tests/ShouldEmitStructuredData/main.cpp | 58 +++++++++++++++++++ 3 files changed, 128 insertions(+), 7 deletions(-) diff --git a/deploy/Caddyfile.example b/deploy/Caddyfile.example index 7e63b71..273d05e 100644 --- a/deploy/Caddyfile.example +++ b/deploy/Caddyfile.example @@ -208,14 +208,25 @@ catcrafts.net { # ── access log ──────────────────────────────────────────────────────── # - # Feeds the GoAccess analytics (see deploy/catcrafts-analytics). Retention - # sized for that: ~15 MB/day means a roll roughly weekly; 52 compressed - # rolls ~ a year of raw logs (~6 MB each gzipped). roll_keep_for must be - # explicit — lumberjack's default silently deletes after 90 days. + # Feeds the GoAccess analytics (see deploy/catcrafts-analytics), and is the + # only record of everything those aggregates discard: Sec-Fetch headers, + # Range behaviour, query strings, per-IP request sequences. Every bot fleet + # identified so far was caught in the raw log, not the report. + # + # roll_keep is a COUNT, so retention is really min(roll_keep × roll_size, + # roll_keep_for) — a byte budget, not the time window it reads as. 52 rolls + # is 5.2 GB, which is under a year for anything busier than 14 MB/day, and + # nothing here has ever been that quiet: 19-24 MB/day on a slow week, and + # 617 MB/day at the Hacker News peak, where 52 rolls is EIGHT DAYS. 365 + # rolls (~2.6 GB gzipped, at the ~14:1 these compress to) makes + # roll_keep_for the constraint that actually decides, up to ~100 MB/day. + # + # roll_keep_for must be explicit — lumberjack's default silently deletes + # after 90 days. log { output file /var/log/caddy/catcrafts.net.log { roll_size 100MiB - roll_keep 52 + roll_keep 365 roll_keep_for 8760h } } diff --git a/shared/interfaces/Catcrafts.Shared-Views.cppm b/shared/interfaces/Catcrafts.Shared-Views.cppm index 2af75dd..c27278a 100644 --- a/shared/interfaces/Catcrafts.Shared-Views.cppm +++ b/shared/interfaces/Catcrafts.Shared-Views.cppm @@ -446,6 +446,57 @@ export RenderedPage RenderPosts(std::span posts) { return page; } +// The post's video, as a schema.org VideoObject hung off the BlogPosting. +// +// Google already indexed and carouselled these videos on the strength of the +// bare