]> 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 04503d729a4b67974a71253401b46c6e425a55f8..d6d4954571e4625da3176a555ee7053420ce798a 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 efbe9850e3750a3d9770878269705d94deca24b0..516dc0c39540debe0f9c05c117ba7552820ca9bb 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 b0059aaec4c8794796b12a9c8c500bca20daae0b..1e22044a430c508a6b07dc9543d3f7b63316c6e8 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 f3be987c69c7226ec71ab012fad1cadff1517d25..cc05fc0b8549cedb0edc7c340f97d59cbec24e25 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 88653f93bcc090b2d9531dc294afc008ec6196d3..0897dffeb175f623a7589e06a4a028546239dfb2 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 0fda10e5285aaa7fb204fb365ee4826e78f47e62..0734a4c1e590c648c4bb49f8aeb2cdd7e3a3e76b 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 7628dabfa5847e13080566235e47feec13bb803f..3752b01fbf164b5b9ab223338ed1112144dc6bc1 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 2595b8d1f461c8bcf7707b75740762a370c4b5c7..ef93ee7e38e0e68e3c3ff5705154093554affe3d 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 f9039a04850955002ac8e5b9c01e46790db8e219..2ce1a5db98acdc6495762e9941bcff4b8cdda987 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 7b18ad315e5abfdffeeca5c889aaa46a2a59b44c..3a606df77de041756445c9dedc32603aad03db25 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 5977a5662d960727f00d5e1ff288180e1e5e5304..0cfde394b11816ff6f2ef6519df64c6bbca0287f 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 6526924cafe425bcc0ef52fe10a674f19aaaa7ba..18fd324d9047ebebaf8185eca62cc2ff6d2121e5 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 03c39e2d6b7882f6a7a5203522ea4a1fe63b7753..bcf407707facc47f842d60548c30d0e83c3994af 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 322d454e3f63bc7333e2528587026e4771d43e56..e1a9e1dbeb03dc416c6415c69154e478cac36aef 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 9ab3018f71d7256f3406c10645a510ead7b2297c..0fcb7f3be59b367cee874a9af3ea5b6b35977c90 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 6e3fbba61b99350b9f5f68d1449299bc6c1604ab..42d7849e2e0eb43f64b5d5aa941f89ec0f93424f 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 4e4c89d420944d0e148282a56e21e387da7a7c3d..c1b26bc23fd2f4a4800313bb5c92ff3340074489 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 92d8e0c2e7864472db3a9eff9020d1fe495d9e13..49d7877deb94f59e0dc39b443d2da79000a8ab67 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 bfc832fd18cace17172d83fc6352e90a4f1f82b9..3a3447630decc5ab4d07b03ce7b85d69538ab8a0 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 7cdd5c2260d6b67c11e72eba2551585c3a124204..ce310271b9886066e54be69636a57280efd132a9 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 26a1abf39976e4c3996ad539fe423e625a7eef59..d1b8ba17c0d794faa4a331452fc8525cd88d390a 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 3247c60a3753683c317a0fe771c7586657108dcb..d60c1dad22e578de788be9d254e61cf113e6fce8 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 6d226847362d1a534d23ff06af062eed77195496..b5868edc090f03fda209c2613a68d37bcb54c830 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 a0681bda0cba0b4408a61f9115a4ee17e7e73945..1d2ae06cb6198e51fb06df422dac8e05dceec290 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 5b44fb5329f9f74cf53874711ba0af35a05d72a8..8ae50806d964c76bfd69bf6ee0a666feb831e899 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 f37eca2eb19f3e463b3853df0d34a1bd631f3e47..b17136f1c43b8f756d3412c6c42fe77267b0f2a1 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 27370ac29185d8a2e8886ee1eac0accc74967ce1..2c6a7419a8f6f978758c72bebe0c1d6fa87ffd5b 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 b759f0fbf909800a0d935e6f27cb89c6d565f2f5..a0225e1bcd247860dddabdce730ae4a875a8d480 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 d66942bf1e3c59591b8bc5d5d0acad4f4e01b80d..fee4e1f97707e87d22b70b748d3919d32f9b3961 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 3cf7e4055665fc8e5841b76dd6c08b75e5ebd521..f966ac30f548c39c80cd4c14b72fd9703ba95a9e 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 ca33ca395e36d1f2df0e852ad439fed6769fe29d..87fd12c73d0cacfefcdfc60726b6ec92949c8f8b 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 dd4b69220db709336f6241f079b782f88e9e526f..3789464296fc261b4b9b79b80231176c2c72e69e 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 4114d687aa2357f50b069fddf13d563299b62c6e..f155a35244bb6a00bd804153de038ee81db6b55a 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 306078ee954621135cababdf1557f6c5844d908c..df666146fe4e3c747d70e4ef4a94b0a92835a08f 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 50936457d009e9988c6380342025ff6bafd2792e..b63b9f18099ccc7d84393fa3dd22517ecc533ea9 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 abebe132aa8a2780567a2456ead94c7d022eefd0..cb50c3b1529f454241921bad37c7653e2f3206bd 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 2d042cde6d622a5f4dfa751b66d37bdfa61e70fe..f0e4308c8934af7724b47434d29863b7dff5800b 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 26c89e97d6eb7ef062208c2d908bb9ca9d70fb99..8d494f15e5014cc0c0b27a890f2859b44e51ba5b 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