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 && ( + <> + +
+ + ) + } +