From f4afbd132614d45f483c59b42e8d32a2489050cc Mon Sep 17 00:00:00 2001 From: AnnatarHe Date: Thu, 29 Jan 2026 01:21:59 +0800 Subject: [PATCH 1/5] feat(posts): add EP49 and EP50 podcast episodes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - EP49: AsyncTalk 开播啦 - 视频播客节目正式开播 - EP50: Claude Code 夯爆了 - 讨论 Claude Code 及 AI 协作 Co-Authored-By: Claude Opus 4.5 --- src/content/posts/ep49.mdx | 33 +++++++++++++++++++++++++++++++++ src/content/posts/ep50.mdx | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/content/posts/ep49.mdx create mode 100644 src/content/posts/ep50.mdx diff --git a/src/content/posts/ep49.mdx b/src/content/posts/ep49.mdx new file mode 100644 index 0000000..d139c59 --- /dev/null +++ b/src/content/posts/ep49.mdx @@ -0,0 +1,33 @@ +--- +type: podcast-episode +status: published +slug: /posts/ep49 +guid: 49 +title: EP49 AsyncTalk 开播啦 +subtitle: AsyncTalk 开播啦 +publicationDate: 2026-01-29 00:23:00 +author: AnnatarHe +season: 3 +episodeNumber: 49 +episodeType: full +excerpt: EP49 AsyncTalk 开播啦 +url: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +size: 0 +duration: 0 +explicit: false +draftLink: https://annatarhe.notion.site/EP48-AI-2809f2751b3180438c38d6fbaefaa314?source=copy_link +xyzLink: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +categories: + - ai + - programming +--- +### 📕 Shownotes + +AsyncTalk 的视频播客节目正式开播啦~ + +接下来有最新的前沿 web 开发技术和 AI 探索分享哦 + +一起来关注吧开播啦 + + + diff --git a/src/content/posts/ep50.mdx b/src/content/posts/ep50.mdx new file mode 100644 index 0000000..337c33c --- /dev/null +++ b/src/content/posts/ep50.mdx @@ -0,0 +1,35 @@ +--- +type: podcast-episode +status: published +slug: /posts/ep50 +guid: 50 +title: EP50 Claude Code 夯爆了 +subtitle: Claude Code 夯爆了 +publicationDate: 2026-01-29 00:23:00 +author: AnnatarHe +season: 3 +episodeNumber: 50 +episodeType: full +excerpt: EP50 Claude Code 夯爆了 +url: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +size: 0 +duration: 0 +explicit: false +draftLink: https://annatarhe.notion.site/EP48-AI-2809f2751b3180438c38d6fbaefaa314?source=copy_link +xyzLink: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +categories: + - ai + - programming +--- +### 📕 Shownotes + +AsyncTalk 本期节目来聊了 Claude Code 及其带来的巨大影响,以及如何更好地和 AI 协作 + +- Plan Mode 真重要 +- 把 AI 当人看才能合作 +- terminal 版本最靠谱 +- AI 能连续工作吗 +- AI 可能会作恶 +- 我们要有判断力 + +BGM by Otologic From e924c599570906ffd2180f69f85fabbee84b7f1b Mon Sep 17 00:00:00 2001 From: AnnatarHe Date: Thu, 29 Jan 2026 23:53:33 +0800 Subject: [PATCH 2/5] feat(posts): add video embeds and update links for EP49 and EP50 - Update xiaoyuzhoufm links to published episode URLs - Add YouTube and Bilibili video player embeds - Add video category to EP49 - Remove draft links Co-Authored-By: Claude Opus 4.5 --- src/content/posts/ep49.mdx | 11 ++++++++--- src/content/posts/ep50.mdx | 10 +++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/content/posts/ep49.mdx b/src/content/posts/ep49.mdx index d139c59..23fe251 100644 --- a/src/content/posts/ep49.mdx +++ b/src/content/posts/ep49.mdx @@ -11,16 +11,21 @@ season: 3 episodeNumber: 49 episodeType: full excerpt: EP49 AsyncTalk 开播啦 -url: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +url: https://www.xiaoyuzhoufm.com/episode/697ad354903a4fab4e9dc4b2 size: 0 duration: 0 explicit: false -draftLink: https://annatarhe.notion.site/EP48-AI-2809f2751b3180438c38d6fbaefaa314?source=copy_link -xyzLink: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +xyzLink: https://www.xiaoyuzhoufm.com/episode/697ad354903a4fab4e9dc4b2 categories: - ai - programming + - video --- + + + + + ### 📕 Shownotes AsyncTalk 的视频播客节目正式开播啦~ diff --git a/src/content/posts/ep50.mdx b/src/content/posts/ep50.mdx index 337c33c..2beccdb 100644 --- a/src/content/posts/ep50.mdx +++ b/src/content/posts/ep50.mdx @@ -11,16 +11,20 @@ season: 3 episodeNumber: 50 episodeType: full excerpt: EP50 Claude Code 夯爆了 -url: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +url: https://www.xiaoyuzhoufm.com/episode/697adad22860092c78d342aa size: 0 duration: 0 explicit: false -draftLink: https://annatarhe.notion.site/EP48-AI-2809f2751b3180438c38d6fbaefaa314?source=copy_link -xyzLink: https://www.xiaoyuzhoufm.com/episode/68f66104c4a8670d2edc9824 +xyzLink: https://www.xiaoyuzhoufm.com/episode/697adad22860092c78d342aa categories: - ai - programming --- + + + + + ### 📕 Shownotes AsyncTalk 本期节目来聊了 Claude Code 及其带来的巨大影响,以及如何更好地和 AI 协作 From ff454e9cb3b9d2087883174b6a750fd593ecee90 Mon Sep 17 00:00:00 2001 From: AnnatarHe Date: Fri, 30 Jan 2026 00:08:14 +0800 Subject: [PATCH 3/5] feat(posts): use astro-embed-youtube for responsive video layout Add @astro-community/astro-embed-youtube package and refactor EP49/EP50 to use the YouTube component with a responsive two-column grid layout for video embeds. Also update publication dates. Co-Authored-By: Claude Opus 4.5 --- package.json | 1 + pnpm-lock.yaml | 15 +++++++++++++++ src/content/posts/ep49.mdx | 10 ++++++---- src/content/posts/ep50.mdx | 10 ++++++---- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 61508be..0cd0ffb 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "astro": "astro" }, "dependencies": { + "@astro-community/astro-embed-youtube": "^0.5.10", "@astrojs/check": "^0.9.5", "@astrojs/mdx": "^4.3.7", "@astrojs/react": "^4.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94f231c..a3b3f69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@astro-community/astro-embed-youtube': + specifier: ^0.5.10 + version: 0.5.10 '@astrojs/check': specifier: ^0.9.5 version: 0.9.5(typescript@5.9.3) @@ -69,6 +72,9 @@ packages: '@adobe/css-tools@4.3.3': resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + '@astro-community/astro-embed-youtube@0.5.10': + resolution: {integrity: sha512-hVlx77KQLjKzElVQnrU5znQ5/E60keVSAPrhuWvQQHuqva5auJtt8YBpOThkwDMuEKXjQybEF1/3C07RZ8MAOQ==} + '@astrojs/check@0.9.5': resolution: {integrity: sha512-88vc8n2eJ1Oua74yXSGo/8ABMeypfQPGEzuoAx2awL9Ju8cE6tZ2Rz9jVx5hIExHK5gKVhpxfZj4WXm7e32g1w==} hasBin: true @@ -1627,6 +1633,9 @@ packages: linebreak@1.1.0: resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==} + lite-youtube-embed@0.3.4: + resolution: {integrity: sha512-aXgxpwK7AIW58GEbRzA8EYaY4LWvF3FKak6B9OtSJmuNyLhX2ouD4cMTxz/yR5HFInhknaYd2jLWOTRTvT8oAw==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -2662,6 +2671,10 @@ snapshots: '@adobe/css-tools@4.3.3': {} + '@astro-community/astro-embed-youtube@0.5.10': + dependencies: + lite-youtube-embed: 0.3.4 + '@astrojs/check@0.9.5(typescript@5.9.3)': dependencies: '@astrojs/language-server': 2.15.5(typescript@5.9.3) @@ -4348,6 +4361,8 @@ snapshots: base64-js: 0.0.8 unicode-trie: 2.0.0 + lite-youtube-embed@0.3.4: {} + lodash@4.17.21: {} longest-streak@3.1.0: {} diff --git a/src/content/posts/ep49.mdx b/src/content/posts/ep49.mdx index 23fe251..6515fc9 100644 --- a/src/content/posts/ep49.mdx +++ b/src/content/posts/ep49.mdx @@ -5,7 +5,7 @@ slug: /posts/ep49 guid: 49 title: EP49 AsyncTalk 开播啦 subtitle: AsyncTalk 开播啦 -publicationDate: 2026-01-29 00:23:00 +publicationDate: 2026-01-29 11:20:00 author: AnnatarHe season: 3 episodeNumber: 49 @@ -21,10 +21,12 @@ categories: - programming - video --- +import { YouTube } from '@astro-community/astro-embed-youtube' - - - +
+ + +
### 📕 Shownotes diff --git a/src/content/posts/ep50.mdx b/src/content/posts/ep50.mdx index 2beccdb..829fc36 100644 --- a/src/content/posts/ep50.mdx +++ b/src/content/posts/ep50.mdx @@ -5,7 +5,7 @@ slug: /posts/ep50 guid: 50 title: EP50 Claude Code 夯爆了 subtitle: Claude Code 夯爆了 -publicationDate: 2026-01-29 00:23:00 +publicationDate: 2026-01-29 11:45:00 author: AnnatarHe season: 3 episodeNumber: 50 @@ -20,10 +20,12 @@ categories: - ai - programming --- +import { YouTube } from '@astro-community/astro-embed-youtube' - - - +
+ + +
### 📕 Shownotes From 0c83cab731f77088a1b7a05c621ab3311ff3d314 Mon Sep 17 00:00:00 2001 From: AnnatarHe Date: Fri, 30 Jan 2026 00:13:22 +0800 Subject: [PATCH 4/5] refactor(components): extract VideoEmbed as reusable component Create VideoEmbed.astro component that combines YouTube and Bilibili embeds in a responsive grid layout. Update EP49 and EP50 to use the new component. Co-Authored-By: Claude Opus 4.5 --- src/components/VideoEmbed.astro | 19 +++++++++++++++++++ src/content/posts/ep49.mdx | 10 +++++----- src/content/posts/ep50.mdx | 10 +++++----- 3 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 src/components/VideoEmbed.astro diff --git a/src/components/VideoEmbed.astro b/src/components/VideoEmbed.astro new file mode 100644 index 0000000..54de916 --- /dev/null +++ b/src/components/VideoEmbed.astro @@ -0,0 +1,19 @@ +--- +import { YouTube } from '@astro-community/astro-embed-youtube' + +interface Props { + youtubeId: string + bilibiliUrl: string +} + +const { youtubeId, bilibiliUrl } = Astro.props +--- + +
+ + +
diff --git a/src/content/posts/ep49.mdx b/src/content/posts/ep49.mdx index 6515fc9..6c025d8 100644 --- a/src/content/posts/ep49.mdx +++ b/src/content/posts/ep49.mdx @@ -21,12 +21,12 @@ categories: - programming - video --- -import { YouTube } from '@astro-community/astro-embed-youtube' +import VideoEmbed from '../../components/VideoEmbed.astro' -
- - -
+ ### 📕 Shownotes diff --git a/src/content/posts/ep50.mdx b/src/content/posts/ep50.mdx index 829fc36..4466f6d 100644 --- a/src/content/posts/ep50.mdx +++ b/src/content/posts/ep50.mdx @@ -20,12 +20,12 @@ categories: - ai - programming --- -import { YouTube } from '@astro-community/astro-embed-youtube' +import VideoEmbed from '../../components/VideoEmbed.astro' -
- - -
+ ### 📕 Shownotes From 72618409bd2b7effb6bdeb77ef78c5398ad9c3f3 Mon Sep 17 00:00:00 2001 From: AnnatarHe Date: Fri, 30 Jan 2026 00:22:03 +0800 Subject: [PATCH 5/5] refactor(posts): move video embed config from MDX to frontmatter - Add youtubeId and biliUrl optional fields to posts schema - Render VideoEmbed conditionally in post template when both fields present - Update EP49 and EP50 to use frontmatter instead of inline component imports Co-Authored-By: Claude Opus 4.5 --- src/content/config.ts | 2 ++ src/content/posts/ep49.mdx | 8 ++------ src/content/posts/ep50.mdx | 8 ++------ src/pages/posts/[...slug].astro | 10 ++++++++++ 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/content/config.ts b/src/content/config.ts index 1295507..5abf2cf 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -11,6 +11,8 @@ const posts = defineCollection({ status: z.enum(['draft', 'pending', 'published']), xyzLink: z.string().url().optional(), draftLink: z.string().url().optional(), + youtubeId: z.string().optional(), + biliUrl: z.string().optional(), }) }); // 3. Export a single `collections` object to register your collection(s) diff --git a/src/content/posts/ep49.mdx b/src/content/posts/ep49.mdx index 6c025d8..11d86bd 100644 --- a/src/content/posts/ep49.mdx +++ b/src/content/posts/ep49.mdx @@ -16,17 +16,13 @@ size: 0 duration: 0 explicit: false xyzLink: https://www.xiaoyuzhoufm.com/episode/697ad354903a4fab4e9dc4b2 +youtubeId: CLW-eD7qZ0o +biliUrl: "//player.bilibili.com/player.html?isOutside=true&aid=115973747121570&bvid=BV11szXBWEkT&cid=35672952727&p=1" categories: - ai - programming - video --- -import VideoEmbed from '../../components/VideoEmbed.astro' - - ### 📕 Shownotes diff --git a/src/content/posts/ep50.mdx b/src/content/posts/ep50.mdx index 4466f6d..e0c8df8 100644 --- a/src/content/posts/ep50.mdx +++ b/src/content/posts/ep50.mdx @@ -16,16 +16,12 @@ size: 0 duration: 0 explicit: false xyzLink: https://www.xiaoyuzhoufm.com/episode/697adad22860092c78d342aa +youtubeId: MRjnOjxlI34 +biliUrl: "//player.bilibili.com/player.html?isOutside=true&aid=115973763898690&bvid=BV12pzXBRExJ&cid=35673083091&p=1" categories: - ai - programming --- -import VideoEmbed from '../../components/VideoEmbed.astro' - - ### 📕 Shownotes diff --git a/src/pages/posts/[...slug].astro b/src/pages/posts/[...slug].astro index ee43cad..5b30265 100644 --- a/src/pages/posts/[...slug].astro +++ b/src/pages/posts/[...slug].astro @@ -19,6 +19,7 @@ import P from "../../components/markdown/P.astro"; import type { InferGetStaticPropsType } from "astro"; import Player from "../../components/Player.astro"; import AdSense from "../../components/AdSense.astro"; +import VideoEmbed from "../../components/VideoEmbed.astro"; export async function getStaticPaths() { const posts = await getCollection("posts"); @@ -145,6 +146,15 @@ const imgUrl = `${Astro.site?.origin}${post.slug}-og.png`;
+ { + frontData.youtubeId && frontData.biliUrl && ( + <> + +
+ + ) + } +