feat(posts): add EP73 Axiom logging episode with cover art and transcript support - #83
Merged
Merged
Conversation
Cover art and subtitles are resolved by path convention instead of
frontmatter, so an episode picks them up as soon as the files land and
renders correctly while they are missing:
- src/assets/<episode>/cover.{jpg,jpeg,png,webp} renders beside the
title and feeds JSON-LD `image` plus the RSS <itunes:image>. The
generated 1200x630 Satori image stays as og:image, since 1:1 is the
wrong ratio for social cards.
- public/subtitles/<episode>.srt is parsed at build time into a
collapsible 文字稿 section, a download link, and JSON-LD `transcript`.
The SRT parser strips inline tags, collapses repeated cues, and breaks
paragraphs on sentence endings or a pause longer than 2.5s so the
paragraph timestamps stay meaningful.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019uwgRsSVFa7p57WRC4gqHv
New episode on using Axiom as a log platform and, via its MCP Server, letting a Coding Agent read production logs, locate errors and fix bugs. 小宇宙 and Bilibili links land in a follow-up once they are published. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019uwgRsSVFa7p57WRC4gqHv
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
The header meta rendered as one undifferentiated teal pile of `label: value` rows below the hero, while the space beside the 240px cover sat empty. Move the date, channels and tags into the title column and give each its own weight. - swap the page container's `text-primary` for `text-gray-100` rather than dropping it: Transcript's <summary> and SlidesEmbed's link set no color of their own, and `html` sets no `color`, so removal renders them black-on-black - add EpisodeChannels for the 小宇宙/YouTube/Bilibili pill row, reusing the youtubeUrl/bilibiliUrl helpers already computed for sameAs - make tag chips static — they carried cursor-pointer, active:scale-95 and a dead hover rule with no tag route to link to - drop the forced square crop in EpisodeCover so 3:4 poster art shows whole, and replace EP73's 16:9 cover, which was center-cropping its own headline - delete kv-info, whose only consumer was this page Also lands the in-progress switch of episode media from path convention to frontmatter (`cover` + `srt`), with EP73's cover art and subtitles. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxJKtsdMtdLsmLxR8XSvSd
AnnatarHe
temporarily deployed
to
claude/axiom-logs-ai-agent-ycv5a8 - asynctalk-website PR #83
August 31, 2026 14:20 — with
Render
Destroyed
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds EP73《Axiom 日志:哪 26 个人拿走了我的电影票?》, releasing today at 17:30 (Beijing), and the reusable per-episode cover-art and subtitle support the episode needs — neither existed in the codebase before.
Affected pages
/posts/ep73/— YouTubeUuwMMLmO7MQ,status: published,publicationDate: 2026-08-31 17:30:00. Go-live is controlled by when this merges. 小宇宙 and Bilibili links land in a follow-up commit, matching the EP72 pattern./rss.xmlgain optional cover-art and transcript rendering (no visible change for episodes without those files).Episode media, by convention
Both assets are resolved by slug rather than frontmatter, so an episode picks them up the moment the file lands and renders correctly while it is missing — no schema change, no broken build in between:
src/assets/<episode>/cover.{jpg,jpeg,png,webp}public/subtitles/<episode>.srtCover art renders beside the episode title (
EpisodeCover.astro, Astro-optimized with asrcset) and is added to JSON-LDimageand the RSS<itunes:image>. The generated 1200×630 Satori image stays asog:image/twitter:image— 1:1 is the wrong ratio for social cards.Subtitles are parsed at build time (
src/lib/srt.ts) into a collapsible 文字稿 section with[mm:ss]paragraph timestamps, a.srtdownload link, and JSON-LDtranscript. The parser strips inline tags (<i>,{\an8}), collapses repeated cues common in auto-generated SRT, and breaks paragraphs on sentence endings or a pause longer than 2.5s, so a paragraph's timestamp always matches its content.The EP73 cover and
.srtfiles are not in this PR — they get dropped at the paths above.Verification
pnpm astro check— 0 errors.pnpm build(runsastro check && astro build && pnpm seo:check) — passes in both states: with test cover +.srtpresent, and without them (the state committed here).SEO validation passed: 78 HTML pages, 78 sitemap URLs, 76 RSS items.pnpm preview+ browser inspection of/posts/ep73/at 1280px and 390px, with and without the media files:<h1>and oneog:image(both asserted byscripts/check-seo.mjs);imagebecomes an array when a cover exists,transcriptpresent only when an.srtexists;<details>expands, timestamps read[00:00] [00:14] [00:29] [01:20]— correctly broken at the silence gap — and the download link resolves to/subtitles/ep73.srt;/posts/ep73-og.pngrenders with the correct title (theEP73prefix is required by the title regex in[...slug]-og.png.ts);/rss.xmlis well-formed, the new item is first, and<itunes:image>is emitted only when a cover exists.htmlFiles === publishedEpisodes + 2assertion still holds — the transcript renders inline and the.srtis served frompublic/.Screenshots were taken locally against
pnpm previewusing throwaway placeholder media (a solid-gradient square cover and a 9-cue sample.srt); those files are not committed, so they are not attached here. The layout is: cover left, title and excerpt right on desktop, stacked on mobile; the 文字稿 section sits between the video embed and the shownotes.Note
Unrelated pre-existing issue spotted while verifying: the
Async Talk (asynctalk.com) - Episode Nfooter line in the generated OG images is not rendering — EP72's OG image is missing it too. Not touched here.