]> git.otsuka.systems Git - cotsuka.github.io/commitdiff
add show to podcast schema
authorCameron Otsuka <cameron@otsuka.haus>
Fri, 21 Nov 2025 02:26:06 +0000 (18:26 -0800)
committerCameron Otsuka <cameron@otsuka.haus>
Fri, 21 Nov 2025 02:26:06 +0000 (18:26 -0800)
39 files changed:
content/podcasts/2025-04.md
content/podcasts/2025-05.md
content/podcasts/2025-06.mdx
content/podcasts/2025-07.mdx
content/podcasts/2025-08.mdx
content/podcasts/2025-11.mdx
content/podcasts/2025-12.mdx
content/podcasts/2025-14.mdx
content/podcasts/2025-15.mdx
content/podcasts/2025-17.mdx
content/podcasts/2025-18.mdx
content/podcasts/2025-19.mdx
content/podcasts/2025-20.mdx
content/podcasts/2025-21.mdx
content/podcasts/2025-23.mdx
content/podcasts/2025-24.mdx
content/podcasts/2025-25.mdx
content/podcasts/2025-26.mdx
content/podcasts/2025-29.mdx
content/podcasts/2025-30.mdx
content/podcasts/2025-33.mdx
content/podcasts/2025-36.mdx
content/podcasts/2025-37.mdx
content/podcasts/2025-38.mdx
content/podcasts/2025-39.mdx
content/podcasts/2025-40.mdx
content/podcasts/2025-41.mdx
content/podcasts/2025-42.mdx
content/podcasts/2025-43.mdx
content/podcasts/2025-44.mdx
content/podcasts/2025-45.mdx
content/podcasts/2025-46.mdx
src/components/metadata.astro
src/content.config.ts
src/pages/feed.xml.ts
src/pages/podcasts/[show]/[id]/index.astro [moved from src/pages/podcasts/[id]/index.astro with 81% similarity]
src/pages/podcasts/[show]/[id]/opengraph.png.ts [moved from src/pages/podcasts/[id]/opengraph.png.ts with 93% similarity]
src/pages/podcasts/index.astro
src/utils/createSlug.ts [new file with mode: 0644]

index 04503d7..d6d4954 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "we're ripping off-the-cuff about dollar rallying, rates, stargate, and deepseek. listen in 👇"
+title: we're ripping off-the-cuff about dollar rallying, rates, stargate, and deepseek. listen in 👇
 date: 2025-01-23
 modified: 2025-06-19
-description: "Build Weekly Roundup - 2025 Week #4"
+show: Build Weekly Roundup
+description: "2025 Week #4"
 tags:
 - ai
 - macro
index efbe985..516dc0c 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Yield curve updates, looking forward to Yen meeting, more DeepSeek analysis
 date: 2025-01-30
 modified: 2025-06-19
-description: "Build Weekly Roundup - 2025 Week #5"
+show: Build Weekly Roundup
+description: "2025 Week #5"
 tags:
 - ai
 - macro
index b0059aa..1e22044 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Listen in as we break down Treasury yields, bond liquidity, potential regulatory changes, Bitcoin's mempools, and alternative investments 👇"
+title: Listen in as we break down Treasury yields, bond liquidity, potential regulatory changes, Bitcoin's mempools, and alternative investments 👇
 date: 2025-02-06
 modified: 2025-10-24
-description: "Build Weekly Roundup - 2025 Week #6"
+show: Build Weekly Roundup
+description: "2025 Week #6"
 tags:
 - bitcoin
 - macro
index f3be987..cc05fc0 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "🚨 the penny peg has broken, new 6-week t-bills, ukraine peace talks, and more"
+title: 🚨 the penny peg has broken, new 6-week t-bills, ukraine peace talks, and more
 date: 2025-02-13
 modified: 2025-10-24
-description: "Build Weekly Roundup - 2025 Week #7"
+show: Build Weekly Roundup
+description: "2025 Week #7"
 tags:
 - macro
 posse:
index 88653f9..0897dff 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Talking DOGE cuts 🐶"
+title: Talking DOGE cuts 🐶
 date: 2025-02-20
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #8"
+show: Build Weekly Roundup
+description: "2025 Week #8"
 tags:
 - macro
 - bitcoin
index 0fda10e..0734a4c 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Fork in the road for Treasury yields"
+title: Fork in the road for Treasury yields
 date: 2025-03-13
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #11"
+show: Build Weekly Roundup
+description: "2025 Week #11"
 tags:
 - macro
 - bitcoin
index 7628dab..3752b01 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Post-FOMC Landscape and the EU Savings & Investments Union"
+title: Post-FOMC Landscape and the EU Savings & Investments Union
 date: 2025-03-20
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #12"
+show: Build Weekly Roundup
+description: "2025 Week #12"
 tags:
 - macro
 posse:
index 2595b8d..ef93ee7 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Liberation Day in America"
+title: Liberation Day in America
 date: 2025-04-03
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #14"
+show: Build Weekly Roundup
+description: "2025 Week #14"
 tags:
 - macro
 posse:
index f9039a0..2ce1a5d 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Tariffs pack a wallop"
+title: Tariffs pack a wallop
 date: 2025-04-10
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #15"
+show: Build Weekly Roundup
+description: "2025 Week #15"
 tags:
 - macro
 posse:
index 7b18ad3..3a606df 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Retail rushes for gold"
+title: Retail rushes for gold
 date: 2025-04-25
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #17"
+show: Build Weekly Roundup
+description: "2025 Week #17"
 tags:
 - macro
 - bitcoin
index 5977a56..0cfde39 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "The Art of the (Ukraine) Deal"
+title: The Art of the (Ukraine) Deal
 date: 2025-05-01
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #18"
+show: Build Weekly Roundup
+description: "2025 Week #18"
 tags:
 - macro
 - bitcoin
index 6526924..18fd324 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Hong Kong Dollar Squeeze"
+title: Hong Kong Dollar Squeeze
 date: 2025-05-08
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #19"
+show: Build Weekly Roundup
+description: "2025 Week #19"
 tags:
 - macro
 - bitcoin
index 03c39e2..bcf4077 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "Not Your Father's Recession"
+title: Not Your Father's Recession
 date: 2025-05-15
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #20"
+show: Build Weekly Roundup
+description: "2025 Week #20"
 tags:
 - macro
 posse:
index 322d454..e1a9e1d 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "A Pivotal Week"
+title: A Pivotal Week
 date: 2025-05-22
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #21"
+show: Build Weekly Roundup
+description: "2025 Week #21"
 tags:
 - macro
 posse:
index 9ab3018..0fcb7f3 100644 (file)
@@ -1,9 +1,10 @@
 ---
 type: video
-title: "JPM Bends the Knee to Bitcoin"
+title: JPM Bends the Knee to Bitcoin
 date: 2025-06-06
 modified: 2025-06-06
-description: "Build Weekly Roundup - 2025 Week #23"
+show: Build Weekly Roundup
+description: "2025 Week #23"
 tags:
 - macro
 - bitcoin
index 6e3fbba..42d7849 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Last Chance to Hit the Exit?
 date: 2025-06-12
 modified: 2025-06-18
-description: "Build Weekly Roundup - 2025 Week #24"
+show: Build Weekly Roundup
+description: "2025 Week #24"
 tags:
 - macro
 posse:
index 4e4c89d..c1b26bc 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Battle of Fordow
 date: 2025-06-18
 modified: 2025-06-18
-description: "Build Weekly Roundup - 2025 Week #25"
+show: Build Weekly Roundup
+description: "2025 Week #25"
 tags:
 - macro
 - bitcoin
index 92d8e0c..49d7877 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Rebalance of Power
 date: 2025-06-26
 modified: 2025-07-01
-description: "Build Weekly Roundup - 2025 Week #26"
+show: Build Weekly Roundup
+description: "2025 Week #26"
 tags:
 - macro
 - bitcoin
index bfc832f..3a34476 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Monetary Policy Disarray
 date: 2025-07-17
 modified: 2025-07-17
-description: "Build Weekly Roundup - 2025 Week #29"
+show: Build Weekly Roundup
+description: "2025 Week #29"
 tags:
 - macro
 - bitcoin
index 7cdd5c2..ce31027 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Rate Shortcut Contractors, Inc.
 date: 2025-07-25
 modified: 2025-07-25
-description: "Build Weekly Roundup - 2025 Week #30"
+show: Build Weekly Roundup
+description: "2025 Week #30"
 tags:
 - macro
 posse:
index 26a1abf..d1b8ba1 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: PPI Blowout
 date: 2025-08-15
 modified: 2025-08-17
-description: "Build Weekly Roundup - 2025 Week #33"
+show: Build Weekly Roundup
+description: "2025 Week #33"
 tags:
 - macro
 posse:
index 3247c60..d60c1da 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Money, Credit and Asset Prices
 date: 2025-09-08
 modified: 2025-09-09
-description: "Build Weekly Roundup - 2025 Week #36"
+show: Build Weekly Roundup
+description: "2025 Week #36"
 tags:
 - macro
 posse:
index 6d22684..b5868ed 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Climbing the Escalatory Ladder
 date: 2025-09-11
 modified: 2025-09-12
-description: "Build Weekly Roundup - 2025 Week #37"
+show: Build Weekly Roundup
+description: "2025 Week #37"
 tags:
 - macro
 posse:
index a0681bd..1d2ae06 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Dot Slop
 date: 2025-09-18
 modified: 2025-09-23
-description: "Build Weekly Roundup - 2025 Week #38"
+show: Build Weekly Roundup
+description: "2025 Week #38"
 tags:
 - macro
 - bitcoin
index 5b44fb5..8ae5080 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Government Shutdown
 date: 2025-09-26
 modified: 2025-10-02
-description: "Build Weekly Roundup - 2025 Week #39"
+show: Build Weekly Roundup
+description: "2025 Week #39"
 tags:
 - macro
 posse:
index f37eca2..b17136f 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Window of Heightened Risk
 date: 2025-10-02
 modified: 2025-10-02
-description: "Build Weekly Roundup - 2025 Week #40"
+show: Build Weekly Roundup
+description: "2025 Week #40"
 tags:
 - macro
 - bitcoin
index 27370ac..2c6a741 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Equity Financing Bubble?
 date: 2025-10-09
 modified: 2025-10-09
-description: "Build Weekly Roundup - 2025 Week #41"
+show: Build Weekly Roundup
+description: "2025 Week #41"
 tags:
 - macro
 posse:
index b759f0f..a0225e1 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Debasement Awakening
 date: 2025-10-16
 modified: 2025-10-16
-description: "Build Weekly Roundup - 2025 Week #42"
+show: Build Weekly Roundup
+description: "2025 Week #42"
 tags:
 - macro
 posse:
index d66942b..fee4e1f 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Control the World
 date: 2025-10-24
 modified: 2025-10-24
-description: "Build Weekly Roundup - 2025 Week #43"
+show: Build Weekly Roundup
+description: "2025 Week #43"
 tags:
 - macro
 - bitcoin
index 3cf7e40..f966ac3 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Caribbean Chaos
 date: 2025-10-30
 modified: 2025-10-30
-description: "Build Weekly Roundup - 2025 Week #44"
+show: Build Weekly Roundup
+description: "2025 Week #44"
 tags:
 - macro
 posse:
index ca33ca3..87fd12c 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: NYC Says Cuo"no"
 date: 2025-11-06
 modified: 2025-11-06
-description: "Build Weekly Roundup - 2025 Week #45"
+show: Build Weekly Roundup
+description: "2025 Week #45"
 tags:
 - macro
 - bitcoin
index dd4b692..3789464 100644 (file)
@@ -3,7 +3,8 @@ type: video
 title: Likely Suffer a Complete Loss
 date: 2025-11-13
 modified: 2025-11-13
-description: "Build Weekly Roundup - 2025 Week #46"
+show: Build Weekly Roundup
+description: "2025 Week #46"
 tags:
 - macro
 - bitcoin
index 4114d68..f155a35 100644 (file)
@@ -13,6 +13,7 @@ const date = formatDate(entryData.date);
 <details>
     <summary>Metadata</summary>
     <ul>
+        {entryData.show && <li>Show: {entryData.show}</li>}
         {entryData.description && <li>Description: {entryData.description}</li>}
         {entryData.rating && <li>Rating: <Rating rating={entryData.rating} /></li>}
         <li>Published: <time datetime="">{date}</time></li>
index 306078e..df66614 100644 (file)
@@ -23,6 +23,7 @@ const podcasts = defineCollection({
     schema: z.object({
         type: PodcastType,
         title: z.string(),
+        show: z.string(),
         description: z.string(),
         date: z.coerce.date(),
         modified: z.coerce.date().optional(),
index 5093645..b63b9f1 100644 (file)
@@ -2,6 +2,7 @@ import rss from '@astrojs/rss';
 import { getCollection } from 'astro:content';
 import { formatDate } from '@utils/format.ts';
 import { siteSubtitle, siteTitle } from '@utils/globals.ts';
+import createSlug from '@utils/createSlug.ts';
 
 export async function GET(context: any) {
   const articles = await getCollection('articles');
@@ -16,10 +17,10 @@ export async function GET(context: any) {
   const podcasts = await getCollection('podcasts');
   const podcastItems = podcasts.map((podcast) => ({
     title: podcast.data.title,
-    link: `/podcasts/${podcast.id}/`,
+    link: `/podcasts/${createSlug(podcast.data.show)}/${podcast.id}/`,
     pubDate: podcast.data.date,
-    description: podcast.data.description,
-    categories: (podcast.data.tags ?? []).concat(podcast.data.type).concat('podcasts')
+    description: `${podcast.data.show} - ${podcast.data.description}`,
+    categories: (podcast.data.tags ?? []).concat(podcast.data.type).concat(podcast.data.show).concat('podcasts')
   }));
 
   const reviews = await getCollection('reviews');
similarity index 81%
rename from src/pages/podcasts/[id]/index.astro
rename to src/pages/podcasts/[show]/[id]/index.astro
index abebe13..cb50c3b 100644 (file)
@@ -2,6 +2,7 @@
 import { type CollectionEntry, getCollection, render } from 'astro:content';
 import Article from '@layouts/article.astro';
 import Metadata from '@components/metadata.astro';
+import createSlug from '@utils/createSlug.ts';
 
 interface Props {
     podcast: CollectionEntry<'podcasts'>
@@ -10,7 +11,7 @@ interface Props {
 export async function getStaticPaths() {
     const podcasts = await getCollection('podcasts');
     return podcasts.map(podcast => ({
-        params: { id: podcast.id },
+        params: { show: createSlug(podcast.data.show), id: podcast.id },
         props: { podcast },
     }));
 }
@@ -20,7 +21,7 @@ const { Content } = await render(podcast);
 ---
 <Article
      title={podcast.data.title}
-     description={podcast.data.description}
+     description={`${podcast.data.show} - ${podcast.data.description}`}
      publishedTime={podcast.data.date.toISOString()}
      modifiedTime={podcast.data.modified ? podcast.data.modified.toISOString() : podcast.data.date.toISOString()}
      tags={podcast.data.tags}
similarity index 93%
rename from src/pages/podcasts/[id]/opengraph.png.ts
rename to src/pages/podcasts/[show]/[id]/opengraph.png.ts
index 2d042cd..f0e4308 100644 (file)
@@ -2,11 +2,12 @@ import type { APIRoute } from 'astro';
 import { getCollection } from 'astro:content';
 import { ImageResponse } from '@vercel/og';
 import { siteAuthor } from '@utils/globals.ts';
+import createSlug from '@utils/createSlug.ts';
 
 export async function getStaticPaths() {
     const podcasts = await getCollection('podcasts');
     return podcasts.map(podcast => ({
-        params: { id: podcast.id },
+        params: { show: createSlug(podcast.data.show), id: podcast.id },
         props: { podcast },
     }));
 };
@@ -55,7 +56,7 @@ export const GET: APIRoute = async ({ props }) => {
                             fontSize: 32,
                             marginBottom: 40,
                         },
-                        children: props.podcast.data.description,
+                        children: `${props.podcast.data.show} - ${props.podcast.data.description}`,
                     },
                 },
                 {
index 26c89e9..8d494f1 100644 (file)
@@ -2,6 +2,7 @@
 import { getCollection } from 'astro:content';
 import { formatDate } from '@utils/format.ts';
 import Base from '@layouts/base.astro';
+import createSlug from '@utils/createSlug.ts';
 
 const podcasts = await getCollection('podcasts');
 const sortedPodcasts = podcasts.sort((a, b) => b.data.date.getTime() - a.data.date.getTime());
@@ -13,9 +14,9 @@ const sortedPodcasts = podcasts.sort((a, b) => b.data.date.getTime() - a.data.da
         {sortedPodcasts.map((podcast) => {
             const date = formatDate(podcast.data.date);
             return (
-                <dt><a href={`/podcasts/${podcast.id}/`}>{podcast.data.title}</a></dt>
+                <dt><a href={`/podcasts/${createSlug(podcast.data.show)}/${podcast.id}/`}>{podcast.data.title}</a></dt>
                 <dd>
-                    {podcast.data.description}
+                    {podcast.data.show} - {podcast.data.description}
                 </dd>
             )
         })}
diff --git a/src/utils/createSlug.ts b/src/utils/createSlug.ts
new file mode 100644 (file)
index 0000000..f4418cc
--- /dev/null
@@ -0,0 +1,10 @@
+export default function (text: string) {
+    return (
+        text
+            .trim()
+            .replace(/[^A-Za-z0-9 ]/g, '')
+            .replace(/\s+/g, '-')
+            .replace(/^-+|-+$/g, '')
+            .toLowerCase()
+    )
+}
\ No newline at end of file