Create a new blog post for dabase.com using Hugo with SEO-friendly title and description
You are helping the user create a new blog post for their Hugo-based blog at dabase.com.
Determine the current year:
date +%Y to get the current year dynamicallyAsk the user for:
Generate an SEO-friendly title and description:
Generate the filename from the title:
Create the blog post using Hugo:
hugo new content/blog/YEAR/[filename].md (where YEAR is from step 1)Update the frontmatter:
title field with the confirmed titledescription field with the SEO-friendly descriptiondate fieldConfirm completion:
content/blog/YEAR/filename.mdhugo server to preview if neededHugo silently drops content instead of erroring, so "it built fine but the page isn't there" is nearly always one of these two:
date in the future. Compare against date -u, not local time — BST/SGT
local time is ahead of UTC, so a post stamped T12:00:00Z at 11:20 UTC is
invisible until noon. Never hardcode a time of day; use the real publish
instant. This bit the podcast generator (content/podcast/default.md.do),
which now reads YouTube's .timestamp from the metadata cache.draft: key. We don't use Hugo drafts at all — they slow things down.
Omit the key entirely; don't write draft: false. To keep something out of
the feed, don't generate a file for it (see NON_EPISODES in
content/podcast/pages.do).redo all discovers
episodes solely by enumerating the "AI Infrastructure" playlist
(PLiKgVPlhUNuyTXzN03gCB1lqvaHXxPLak) in metadata/episodes.json.do, and
episode numbers come from position in it — reversed, so the newest video
becomes the highest number. A published-but-unlisted video generates no
markdown at all and the build looks like a no-op. Add it to the playlist
rather than working around the script.The episode markdown and metadata/episodes.json are committed and are redo
targets, because GitHub Actions can't run yt-dlp (YouTube rate-limits it) so
the site build needs them in the repo. redo won't rebuild a target it has no
record of building, .redo/ is gitignored, and redo -f respects that too:
warn 040-benchmarking-ai-infrastructure.md: already existing: not redoing
So editing default.md.do appears to work while silently changing only
brand-new episodes. Run redo regen (see regen.do) to delete the derived
files and rebuild the whole back catalogue, then review git diff. With no
pipeline change a regen is a no-op in git, which is the signal it worked.
After publishing, verify rather than assume — hugo --quiet then confirm the
page and, for podcasts, that grep -c '<item>' public/podcast/index.xml matches
the number of episode files. CI (.github/workflows/test.yml) enforces that.
date +%Y to dynamically determine the current yearhugo new command to bootstrap the post