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/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/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
new file mode 100644
index 0000000..11d86bd
--- /dev/null
+++ b/src/content/posts/ep49.mdx
@@ -0,0 +1,36 @@
+---
+type: podcast-episode
+status: published
+slug: /posts/ep49
+guid: 49
+title: EP49 AsyncTalk 开播啦
+subtitle: AsyncTalk 开播啦
+publicationDate: 2026-01-29 11:20:00
+author: AnnatarHe
+season: 3
+episodeNumber: 49
+episodeType: full
+excerpt: EP49 AsyncTalk 开播啦
+url: https://www.xiaoyuzhoufm.com/episode/697ad354903a4fab4e9dc4b2
+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
+---
+
+### 📕 Shownotes
+
+AsyncTalk 的视频播客节目正式开播啦~
+
+接下来有最新的前沿 web 开发技术和 AI 探索分享哦
+
+一起来关注吧开播啦
+
+
+
diff --git a/src/content/posts/ep50.mdx b/src/content/posts/ep50.mdx
new file mode 100644
index 0000000..e0c8df8
--- /dev/null
+++ b/src/content/posts/ep50.mdx
@@ -0,0 +1,37 @@
+---
+type: podcast-episode
+status: published
+slug: /posts/ep50
+guid: 50
+title: EP50 Claude Code 夯爆了
+subtitle: Claude Code 夯爆了
+publicationDate: 2026-01-29 11:45:00
+author: AnnatarHe
+season: 3
+episodeNumber: 50
+episodeType: full
+excerpt: EP50 Claude Code 夯爆了
+url: https://www.xiaoyuzhoufm.com/episode/697adad22860092c78d342aa
+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
+---
+
+### 📕 Shownotes
+
+AsyncTalk 本期节目来聊了 Claude Code 及其带来的巨大影响,以及如何更好地和 AI 协作
+
+- Plan Mode 真重要
+- 把 AI 当人看才能合作
+- terminal 版本最靠谱
+- AI 能连续工作吗
+- AI 可能会作恶
+- 我们要有判断力
+
+BGM by Otologic
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 && (
+ <>
+
+
+ >
+ )
+ }
+