Skip to main content
Lab Grimoire
TW EN
Coffee
Site
2026-05-27

Meta description sweep — static pages expanded to 150–160 chars

  • Expanded meta descriptions on 26 static pages flagged by Bing Webmaster Tools as too short (most under 100 chars). Now target 150–160 chars to improve SERP CTR and AI-search citability
  • Added optional `metaDescription` prop to ToolLayout and ClassroomLayout so the SEO description can be lengthened without changing the visible page subtitle (page-sub stays compact)
  • Covered pages: home (en/zh), about (en/zh), subscribe, blog index (en/zh), protocols index (en/zh), tools index (en/zh), classroom index (en/zh), zh changelog index, spellbook index, tools/ttest (en/zh), zh tools (correlation/regression/pca/descriptive/flow-cytometry), and classroom child pages (enzyme-kinetics, protein-quantitation en/zh, qpcr-delta-delta-ct zh)
  • Wave 2 (blog post + spellbook D1 descriptions) tracked separately
Site
2026-05-27

Multi-channel publishing — X + Ko-fi draft dispatch on schedule (free mode)

  • Added publish_channels D1 table (migration 024) tracking per-target, per-channel dispatch state: pending / sent / failed / cancelled
  • Extended cron handler so that when a post or spell flips published=0→1, any pending publish_channels rows for that target are processed. Default (free) mode: both X and Ko-fi generate a platform-appropriate draft and keep status=pending for the operator to copy/paste manually
  • Typefully API client wired but gated by TYPEFULLY_API_KEY env var. If set (paid Typefully Starter $8/mo), X channel auto-dispatches; if unset, falls back to free draft mode. No code change to flip modes
  • New admin page /admin/channels/ with status tabs (pending / sent / failed / cancelled), per-row actions (retry / send-now / mark-sent / cancel), one-click draft copy button
  • ScheduleModal extended with 𝕏 + ☕ Ko-fi checkboxes; selecting them creates publish_channels rows alongside the post or spell's scheduled_at
  • Ko-fi has no public posting API by design — manual confirmation via Mark sent is the only available path
Site
2026-05-27

Ko-fi swap complete — remaining Substack CTAs removed

  • Subscribe pages (/subscribe/, /zh/subscribe/) temporarily removed via 301 redirect to /about/ where the Ko-fi support CTA now lives. Newsletter strategy is under review and Substack is no longer the destination
  • NewsletterCTA component repurposed as a Ko-fi support CTA at the end of every blog post. Lead-magnet props removed from BlogPost.astro since the cheatsheet is already a public page
  • claude-code-cheatsheet (EN+ZH) lead-magnet box rewritten from 'Subscribe & Download' (Substack) to '☕ Buy me a coffee' (Ko-fi). The cheatsheet itself remains freely accessible
  • About-page start-card 'Subscribe' CTA now links directly to ko-fi.com/labgrimoire (external) instead of the removed /subscribe/ page
  • i18n keys for newsletter.* and aboutPage.start.subscribe rewritten to reflect support-on-Ko-fi semantics (EN + ZH-TW). subscribe.* keys retained for backward compatibility but no longer rendered