<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>ailog</title><description>Practical notes on AI costs, automation and self-hosted infrastructure — built from systems we actually run, with official sources and our own numbers.</description><link>https://ailog.page/</link><item><title>Structured Outputs Across Claude, GPT, and Gemini APIs</title><link>https://ailog.page/posts/structured-outputs-across-claude-gpt-and-gemini-apis/</link><guid isPermaLink="true">https://ailog.page/posts/structured-outputs-across-claude-gpt-and-gemini-apis/</guid><description>Compare JSON schema enforcement across Anthropic, OpenAI, and Google: API parameter shapes, SDK tooling, strict constraints, and pricing tiers.</description><pubDate>Thu, 01 Oct 2026 09:00:37 GMT</pubDate></item><item><title>Claude Sonnet 4.5 Deprecation: Migrating to Sonnet 5.5</title><link>https://ailog.page/posts/claude-sonnet-4-5-deprecation-migrating-to-sonnet-5-5/</link><guid isPermaLink="true">https://ailog.page/posts/claude-sonnet-4-5-deprecation-migrating-to-sonnet-5-5/</guid><description>Anthropic announced the deprecation of Claude Sonnet 4.5 with retirement set for November 30, 2026. Learn how to update API calls and migrate to Sonnet 5.5.</description><pubDate>Thu, 01 Oct 2026 07:41:22 GMT</pubDate></item><item><title>Automated Blog Pipeline with Gemini: Architecture of What We Built</title><link>https://ailog.page/posts/automated-blog-pipeline-gemini-architecture/</link><guid isPermaLink="true">https://ailog.page/posts/automated-blog-pipeline-gemini-architecture/</guid><description>How our Node.js pipeline turns a brief into an SEO-checked Korean blog draft: autocomplete keywords, competitor research, schema-bound writing, lint, images.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Batch API 50% Discount: When to Use It at Anthropic, OpenAI and Google</title><link>https://ailog.page/posts/batch-api-50-percent-discount-when-to-use/</link><guid isPermaLink="true">https://ailog.page/posts/batch-api-50-percent-discount-when-to-use/</guid><description>How the Claude, OpenAI and Gemini batch APIs work: the 50% discount, 24-hour windows, size limits, request formats, good-fit jobs and a monthly example.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Choosing an LLM API Model by Cost Tier: Small, Mid, Flagship, Frontier</title><link>https://ailog.page/posts/choosing-an-llm-api-model-by-cost-tier/</link><guid isPermaLink="true">https://ailog.page/posts/choosing-an-llm-api-model-by-cost-tier/</guid><description>A practical framework for picking an LLM API tier by cost: worked examples for a classifier, RAG chatbot and long-form writer, plus routing and escalation.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Cloudflare Email Routing via API: A Working hello@ Address in Minutes</title><link>https://ailog.page/posts/cloudflare-email-routing-contact-address/</link><guid isPermaLink="true">https://ailog.page/posts/cloudflare-email-routing-contact-address/</guid><description>Set up a forwarding hello@ address with the Cloudflare Email Routing API: destinations, enabling the zone, a literal rule, DNS checks, and error 2007.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Debian 13 unattended install: a preseeded netinst ISO for a Dell R730</title><link>https://ailog.page/posts/debian-13-unattended-install-preseed-iso/</link><guid isPermaLink="true">https://ailog.page/posts/debian-13-unattended-install-preseed-iso/</guid><description>Remaster the Debian 13 netinst ISO with xorriso so it installs unattended (partitions, user, SSH keys, packages), then test it in QEMU and write it to USB on macOS.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Gemini 3.8 Flash Price Doubles Jan 1, 2027: What It Means for Bills</title><link>https://ailog.page/posts/gemini-3-8-flash-price-increase-2027/</link><guid isPermaLink="true">https://ailog.page/posts/gemini-3-8-flash-price-increase-2027/</guid><description>Gemini 3.8 Flash goes from $0.75/$3.75 to $1.50/$7.50 per 1M tokens on Jan 1, 2027. Worked bill examples, alternatives, and what to do before January.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Gemini responseSchema in Production: What Structured Output Fixed</title><link>https://ailog.page/posts/gemini-structured-output-response-schema-lessons/</link><guid isPermaLink="true">https://ailog.page/posts/gemini-structured-output-response-schema-lessons/</guid><description>Lessons from using Gemini JSON mode with responseSchema: minItems for length, required fields, schema descriptions, source_ids validation, Korean keyword counting.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Ghost Duplicate Content Cleanup: 44 Posts Fixed via the Admin API</title><link>https://ailog.page/posts/ghost-blog-duplicate-content-cleanup/</link><guid isPermaLink="true">https://ailog.page/posts/ghost-blog-duplicate-content-cleanup/</guid><description>How we found every article on our Ghost blog stored twice (one post nested 196 copies), fixed it via the Admin API, and unpublished 19 posts.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Swapping Ghost for a Static Astro Site Behind a Cloudflare Tunnel</title><link>https://ailog.page/posts/ghost-to-astro-static-site-cloudflare-tunnel/</link><guid isPermaLink="true">https://ailog.page/posts/ghost-to-astro-static-site-cloudflare-tunnel/</guid><description>How we replaced a Ghost blog with a static Astro site on the same tunnel without touching its config: a Docker network alias, 410s for old URLs, and two nginx traps.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Google Drive as a NAS Backup Target: The 750 GB/day Wall and rclone</title><link>https://ailog.page/posts/google-drive-nas-backup-limits/</link><guid isPermaLink="true">https://ailog.page/posts/google-drive-nas-backup-limits/</guid><description>Why we dropped Google Drive as offsite target for a 5.8 TB NAS backup: shared-client throttling, the 750 GB daily cap, and an rclone flag that quit early.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Why LLM Token Counts Differ Between Models (and How to Measure Them)</title><link>https://ailog.page/posts/llm-token-counts-differ-between-models/</link><guid isPermaLink="true">https://ailog.page/posts/llm-token-counts-differ-between-models/</guid><description>Same text, different token counts: tokenizer changes like Claude 4.7+&apos;s ~30% more tokens, non-English text, code, and official token counting endpoints.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Replacing an Omada ER7206 with a MikroTik RB5009: our migration script</title><link>https://ailog.page/posts/mikrotik-rb5009-replacing-omada-er7206/</link><guid isPermaLink="true">https://ailog.page/posts/mikrotik-rb5009-replacing-omada-er7206/</guid><description>How we moved a home network from a controller-managed TP-Link ER7206 to a MikroTik RB5009 on RouterOS 7, including the import script and what went wrong.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>A Per-Run Cost Cap for LLM API Calls: A $0.20 Hard Limit in Code</title><link>https://ailog.page/posts/per-run-cost-cap-for-llm-api-calls/</link><guid isPermaLink="true">https://ailog.page/posts/per-run-cost-cap-for-llm-api-calls/</guid><description>How our blog pipeline prices every Gemini response from usage metadata, stops at $0.20 per run, and what five real runs cost (about $0.09–$0.11 each).</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>RAID6 on a PERC H730P: 6×4TB backup server layout and tuning</title><link>https://ailog.page/posts/perc-h730p-raid6-backup-server-setup/</link><guid isPermaLink="true">https://ailog.page/posts/perc-h730p-raid6-backup-server-setup/</guid><description>Why we chose RAID6 for a 6-disk backup server on a Dell PERC H730P, how we built the virtual disk in F2 HII, LVM + XFS for /data, and the tuning and SMART checks.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Prompt Caching Explained: How Claude, GPT and Gemini Bill Cache Hits</title><link>https://ailog.page/posts/prompt-caching-explained-claude-gpt-gemini/</link><guid isPermaLink="true">https://ailog.page/posts/prompt-caching-explained-claude-gpt-gemini/</guid><description>How prompt and context caching works at Anthropic, OpenAI and Google: minimum sizes, TTLs, write premiums, storage fees, and worked cost examples.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>RouterOS 7 DMZ: isolate one server, allow exactly one LAN host</title><link>https://ailog.page/posts/routeros-dmz-isolate-server-one-exception/</link><guid isPermaLink="true">https://ailog.page/posts/routeros-dmz-isolate-server-one-exception/</guid><description>Put a single server on its own RouterOS port and subnet, let it reach the internet and one NAS, block the rest of the LAN, and verify it, with the rules we ran.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>rsync a Synology NAS to a Linux Server: Pulling 5.8 TB over SSH</title><link>https://ailog.page/posts/rsync-synology-nas-to-linux-server-migration/</link><guid isPermaLink="true">https://ailog.page/posts/rsync-synology-nas-to-linux-server-migration/</guid><description>Pulling every share off a Synology NAS onto a Debian server with rsync over SSH: the script, tmux, logs, exit codes 23/24 and the DSM switch that blocks it.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Korean Title Cards with Playwright Instead of AI Image Models</title><link>https://ailog.page/posts/title-cards-playwright-instead-of-ai-images/</link><guid isPermaLink="true">https://ailog.page/posts/title-cards-playwright-instead-of-ai-images/</guid><description>How we render Korean title, table and checklist cards from HTML with Playwright: keep-all wrapping, shrink-to-fit titles, font loading and element shots.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item></channel></rss>