Skip to content

feat(posts): add EP73 Axiom logging episode with cover art and transcript support - #83

Merged
AnnatarHe merged 3 commits into
masterfrom
claude/axiom-logs-ai-agent-ycv5a8
Aug 31, 2026
Merged

AnnatarHe merged 3 commits into
masterfrom
claude/axiom-logs-ai-agent-ycv5a8

Conversation

@AnnatarHe

@AnnatarHe AnnatarHe commented Aug 31, 2026 •

Copy link
Copy Markdown
Member

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

  • New /posts/ep73/ — YouTube UuwMMLmO7MQ, 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.
  • All episode pages and /rss.xml gain 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:

Asset Path
Square cover art src/assets/<episode>/cover.{jpg,jpeg,png,webp}
Subtitles public/subtitles/<episode>.srt

Cover art renders beside the episode title (EpisodeCover.astro, Astro-optimized with a srcset) and is added to JSON-LD image and the RSS <itunes:image>. The generated 1200×630 Satori image stays as og: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 .srt download link, and JSON-LD transcript. 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 .srt files are not in this PR — they get dropped at the paths above.

Verification

  • pnpm astro check — 0 errors.
  • pnpm build (runs astro check && astro build && pnpm seo:check) — passes in both states: with test cover + .srt present, 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:
    • exactly one <h1> and one og:image (both asserted by scripts/check-seo.mjs);
    • JSON-LD parses, image becomes an array when a cover exists, transcript present only when an .srt exists;
    • the 文字稿 <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.png renders with the correct title (the EP73 prefix is required by the title regex in [...slug]-og.png.ts);
    • /rss.xml is well-formed, the new item is first, and <itunes:image> is emitted only when a cover exists.
  • No new routes, so the htmlFiles === publishedEpisodes + 2 assertion still holds — the transcript renders inline and the .srt is served from public/.

Screenshots were taken locally against pnpm preview using 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 N footer line in the generated OG images is not rendering — EP72's OG image is missing it too. Not touched here.

claude added 2 commits August 31, 2026 02:16
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
@chatgpt-codex-connector

Copy link
Copy Markdown

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
AnnatarHe temporarily deployed to claude/axiom-logs-ai-agent-ycv5a8 - asynctalk-website PR #83 August 31, 2026 14:20 — with Render Destroyed
@AnnatarHe
AnnatarHe merged commit 36ebb8e into master Aug 31, 2026
1 check passed
@AnnatarHe
AnnatarHe deleted the claude/axiom-logs-ai-agent-ycv5a8 branch August 31, 2026 14:20

This branch was successfully deployed

No deployments
claude/axiom-logs-ai-agent-ycv5a8 - asynctalk-website PR #83 — 5828282b Deployed Aug 31, 2026 by AnnatarHe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants