From 03a124aa749da16cd79271d01c75a8a3b4fa06e8 Mon Sep 17 00:00:00 2001 From: Alex Patterson Date: Sat, 10 Oct 2026 13:45:51 -0400 Subject: [PATCH] chore: remove legacy apps/web Next.js directory and revert Gemini/Shorts pipeline additions (keep SEO schema) --- .github/workflows/sync-shorts.yml | 42 - apps/sanity/extract.json | 128 +- .../functions/sync-youtube-analytics/index.ts | 60 +- apps/sanity/schemas/documents/short.ts | 38 - .../sanity/schemas/singletons/engineConfig.ts | 4 +- .../schemas/singletons/pipelineConfig.ts | 4 +- apps/site/src/components/Header.astro | 8 +- apps/site/src/components/ShortsShelf.astro | 214 - apps/site/src/lib/sanity/queries/index.ts | 1 - apps/site/src/lib/sanity/queries/pages.ts | 28 - apps/site/src/lib/sanity/queries/shorts.ts | 86 - apps/site/src/pages/index.astro | 11 +- apps/site/src/pages/shorts/index.astro | 56 - apps/site/src/pages/sitemap.xml.ts | 6 - apps/web/.env.example | 69 - apps/web/.eslintignore | 2 - apps/web/.prettierignore | 3 - apps/web/app/(dashboard)/dashboard/actions.ts | 10 - .../dashboard/auth/callback/route.ts | 20 - .../dashboard/config/config-form.tsx | 597 - .../app/(dashboard)/dashboard/config/page.tsx | 63 - .../(dashboard)/dashboard/content/actions.ts | 16 - .../dashboard/content/content-ideas-table.tsx | 176 - .../(dashboard)/dashboard/content/page.tsx | 68 - .../app/(dashboard)/dashboard/login/page.tsx | 92 - apps/web/app/(dashboard)/dashboard/page.tsx | 44 - .../(dashboard)/dashboard/pipeline/page.tsx | 218 - .../dashboard/review/[id]/page.tsx | 61 - .../review/[id]/review-detail-client.tsx | 305 - .../(dashboard)/dashboard/review/actions.ts | 102 - .../app/(dashboard)/dashboard/review/page.tsx | 125 - .../(dashboard)/dashboard/settings/page.tsx | 115 - .../dashboard/settings/settings-form.tsx | 370 - .../(dashboard)/dashboard/sponsors/actions.ts | 10 - .../(dashboard)/dashboard/sponsors/page.tsx | 123 - .../sponsors/sponsor-leads-table.tsx | 198 - .../dashboard/sponsors/sponsor-pool-table.tsx | 131 - .../(dashboard)/dashboard/videos/actions.ts | 26 - .../app/(dashboard)/dashboard/videos/page.tsx | 75 - .../dashboard/videos/videos-table.tsx | 190 - apps/web/app/(dashboard)/layout.tsx | 103 - .../(main)/(author)/author/[slug]/page.tsx | 161 - apps/web/app/(main)/(author)/authors/page.tsx | 5 - .../(author)/authors/page/[num]/page.tsx | 86 - .../app/(main)/(author)/authors/page/page.tsx | 5 - .../app/(main)/(guest)/guest/[slug]/page.tsx | 159 - apps/web/app/(main)/(guest)/guests/page.tsx | 5 - .../(main)/(guest)/guests/page/[num]/page.tsx | 81 - .../app/(main)/(guest)/guests/page/page.tsx | 5 - .../app/(main)/(podcast)/podcast/Podcast.tsx | 151 - .../(main)/(podcast)/podcast/[slug]/page.tsx | 119 - .../app/(main)/(podcast)/podcast/picks.tsx | 88 - .../podcast/preview/[token]/page.tsx | 49 - .../app/(main)/(podcast)/podcasts/page.tsx | 141 - .../(podcast)/podcasts/page/[num]/page.tsx | 86 - .../(main)/(podcast)/podcasts/page/page.tsx | 5 - .../(podcast)/podcasts/rss.json/route.ts | 14 - .../(podcast)/podcasts/rss.xml/route.ts | 13 - apps/web/app/(main)/(post)/blog/page.tsx | 127 - .../(main)/(post)/blog/page/[num]/page.tsx | 81 - apps/web/app/(main)/(post)/blog/page/page.tsx | 5 - .../app/(main)/(post)/blog/rss.json/route.ts | 14 - .../app/(main)/(post)/blog/rss.xml/route.ts | 14 - .../app/(main)/(post)/post/[slug]/page.tsx | 183 - .../(main)/(sponsor)/sponsor/[slug]/page.tsx | 145 - .../app/(main)/(sponsor)/sponsors/page.tsx | 5 - .../(sponsor)/sponsors/page/[num]/page.tsx | 99 - .../(main)/(sponsor)/sponsors/page/page.tsx | 5 - .../(main)/(top-level-pages)/[slug]/page.tsx | 113 - .../app/(main)/(top-level-pages)/pro/page.tsx | 100 - .../(main)/(top-level-pages)/search/page.tsx | 10 - .../(top-level-pages)/sponsorships/page.tsx | 108 - .../sponsorships/sponsorship-form.tsx | 241 - apps/web/app/(main)/icon.svg | 35 - apps/web/app/(main)/layout.tsx | 236 - apps/web/app/(main)/meta-pixel.tsx | 31 - apps/web/app/(main)/page.tsx | 218 - apps/web/app/(sponsor-portal)/layout.tsx | 19 - apps/web/app/(sponsor-portal)/portal/page.tsx | 17 - apps/web/app/api/algolia/route.tsx | 125 - apps/web/app/api/auth/logout/route.tsx | 9 - apps/web/app/api/auth/session/route.tsx | 5 - .../web/app/api/auth/session/verify/route.tsx | 5 - apps/web/app/api/cron/check-renders/route.ts | 583 - apps/web/app/api/cron/check-research/route.ts | 1083 - apps/web/app/api/cron/ingest/route.ts | 726 - apps/web/app/api/cron/route.tsx | 43 - .../app/api/cron/sponsor-outreach/route.ts | 137 - apps/web/app/api/dashboard/activity/route.ts | 41 - apps/web/app/api/dashboard/config/route.ts | 175 - apps/web/app/api/dashboard/metrics/route.ts | 47 - apps/web/app/api/dashboard/pipeline/route.ts | 46 - apps/web/app/api/dashboard/review/route.ts | 115 - apps/web/app/api/dashboard/settings/route.ts | 150 - apps/web/app/api/devto/route.tsx | 253 - apps/web/app/api/draft-mode/disable/route.tsx | 9 - apps/web/app/api/draft-mode/enable/route.tsx | 7 - .../app/api/generate-preview-token/route.ts | 44 - apps/web/app/api/get-preview-content/route.ts | 64 - apps/web/app/api/hashnode/route.tsx | 361 - apps/web/app/api/sponsor/opt-out/route.ts | 89 - apps/web/app/api/sponsorship/route.ts | 189 - .../api/sponsorship/sponsorship-template.tsx | 48 - apps/web/app/api/verify-turnstile.ts | 39 - .../app/api/webhooks/sanity-content/route.ts | 105 - .../api/webhooks/sanity-distribute/route.ts | 402 - .../api/webhooks/sanity-revalidate/route.ts | 67 - .../app/api/webhooks/sponsor-inbound/route.ts | 98 - .../app/api/webhooks/stripe-sponsor/route.ts | 172 - apps/web/app/api/youtube/rss.xml/route.tsx | 109 - apps/web/app/api/youtube/views/route.tsx | 51 - apps/web/app/globals.css | 224 - apps/web/app/robots.ts | 17 - apps/web/app/sitemap.ts | 46 - apps/web/biome.json | 54 - apps/web/cache-report.json | 3781 --- apps/web/components.json | 21 - apps/web/components/algolia-dialog.tsx | 44 - apps/web/components/algolia-search.tsx | 211 - apps/web/components/analytics.tsx | 21 - apps/web/components/animated-hero.tsx | 81 - apps/web/components/app-sidebar.tsx | 123 - apps/web/components/avatar.tsx | 56 - apps/web/components/badge-pro.tsx | 19 - apps/web/components/become-sponsor-popup.tsx | 48 - apps/web/components/block-code-btn.tsx | 29 - apps/web/components/block-code.tsx | 36 - apps/web/components/block-image.tsx | 36 - apps/web/components/block-table.tsx | 28 - apps/web/components/bookmark.tsx | 5 - apps/web/components/breadrumb-links.tsx | 43 - apps/web/components/cloudflare-turnstile.tsx | 25 - apps/web/components/codepen-embed.tsx | 19 - apps/web/components/codesandbox-embed.tsx | 20 - .../components/cookies-provider-client.tsx | 11 - apps/web/components/cookies-provider.tsx | 0 apps/web/components/cover-image.tsx | 47 - apps/web/components/cover-media.tsx | 36 - apps/web/components/cover-video.tsx | 43 - apps/web/components/date.tsx | 9 - apps/web/components/disable-draft-mode.tsx | 25 - apps/web/components/footer.tsx | 124 - apps/web/components/google-ad-banner.tsx | 64 - apps/web/components/html-embed.tsx | 7 - apps/web/components/icons.tsx | 3 - apps/web/components/icons/aj-alt.tsx | 118 - apps/web/components/icons/aj-dark.tsx | 89 - .../components/icons/aj-headphones-alt.tsx | 258 - apps/web/components/icons/aj-headphones.tsx | 253 - apps/web/components/icons/aj-light.tsx | 89 - apps/web/components/icons/aj-primary-alt.tsx | 154 - apps/web/components/icons/aj-primary.tsx | 152 - apps/web/components/icons/checkout-arrow.tsx | 18 - apps/web/components/icons/dribble.svg | 14 - apps/web/components/json-ld.tsx | 15 - apps/web/components/mode-toggle.tsx | 40 - apps/web/components/more-content.tsx | 141 - apps/web/components/more-header.tsx | 32 - apps/web/components/nav-header.tsx | 54 - apps/web/components/nav-link.tsx | 26 - apps/web/components/nav-main.tsx | 50 - apps/web/components/nav-user.tsx | 113 - apps/web/components/onboarding.tsx | 73 - apps/web/components/page-refresh-button.tsx | 32 - apps/web/components/paginate-list.tsx | 75 - apps/web/components/pipeline-status.tsx | 139 - apps/web/components/player-context.tsx | 192 - apps/web/components/player-floating.tsx | 189 - apps/web/components/player-play-button.tsx | 54 - apps/web/components/podcast-open-apple.tsx | 20 - apps/web/components/podcast-open-spotify.tsx | 28 - apps/web/components/podcast-open-youtube.tsx | 28 - apps/web/components/podmatch-badge.tsx | 81 - apps/web/components/portable-text.tsx | 97 - apps/web/components/pro-benefits.tsx | 161 - apps/web/components/quote-embed.tsx | 34 - apps/web/components/recent-activity.tsx | 105 - apps/web/components/section-cards-live.tsx | 131 - apps/web/components/section-cards.tsx | 94 - apps/web/components/site-header.tsx | 53 - apps/web/components/sponsor-card.tsx | 52 - apps/web/components/theme-provider.tsx | 9 - apps/web/components/twitter-embed.tsx | 10 - apps/web/components/ui/accordion.tsx | 57 - apps/web/components/ui/alert-dialog.tsx | 141 - apps/web/components/ui/alert.tsx | 59 - apps/web/components/ui/aspect-ratio.tsx | 7 - apps/web/components/ui/avatar.tsx | 50 - apps/web/components/ui/badge.tsx | 36 - apps/web/components/ui/breadcrumb.tsx | 115 - apps/web/components/ui/button.tsx | 57 - apps/web/components/ui/calendar.tsx | 213 - apps/web/components/ui/card.tsx | 83 - apps/web/components/ui/carousel.tsx | 262 - apps/web/components/ui/chart.tsx | 375 - apps/web/components/ui/checkbox.tsx | 30 - apps/web/components/ui/collapsible.tsx | 11 - apps/web/components/ui/command.tsx | 153 - apps/web/components/ui/context-menu.tsx | 200 - apps/web/components/ui/dialog.tsx | 122 - apps/web/components/ui/drawer.tsx | 118 - apps/web/components/ui/dropdown-menu.tsx | 201 - apps/web/components/ui/form.tsx | 179 - apps/web/components/ui/hover-card.tsx | 29 - apps/web/components/ui/input-otp.tsx | 71 - apps/web/components/ui/input.tsx | 22 - apps/web/components/ui/label.tsx | 26 - apps/web/components/ui/menubar.tsx | 256 - apps/web/components/ui/navigation-menu.tsx | 128 - apps/web/components/ui/pagination.tsx | 117 - apps/web/components/ui/popover.tsx | 33 - apps/web/components/ui/progress.tsx | 28 - apps/web/components/ui/radio-group.tsx | 44 - apps/web/components/ui/resizable.tsx | 69 - apps/web/components/ui/scroll-area.tsx | 48 - apps/web/components/ui/select.tsx | 159 - apps/web/components/ui/separator.tsx | 31 - apps/web/components/ui/sheet.tsx | 140 - apps/web/components/ui/sidebar.tsx | 781 - apps/web/components/ui/skeleton.tsx | 15 - apps/web/components/ui/slider.tsx | 28 - apps/web/components/ui/sonner.tsx | 31 - apps/web/components/ui/switch.tsx | 29 - apps/web/components/ui/table.tsx | 120 - apps/web/components/ui/tabs.tsx | 55 - apps/web/components/ui/textarea.tsx | 22 - apps/web/components/ui/toggle-group.tsx | 61 - apps/web/components/ui/toggle.tsx | 45 - apps/web/components/ui/tooltip.tsx | 32 - apps/web/components/user-buy.tsx | 5 - apps/web/components/user-go-pro-button.tsx | 16 - apps/web/components/user-go-pro.tsx | 10 - apps/web/components/user-related.tsx | 96 - apps/web/components/user-socials.tsx | 183 - apps/web/components/youtube-embed.tsx | 70 - apps/web/components/youtube-short-embed.tsx | 97 - apps/web/components/youtube-short.tsx | 41 - apps/web/components/youtube-shorts.tsx | 70 - apps/web/components/youtube.tsx | 43 - apps/web/e2e/dashboard.spec.ts | 71 - apps/web/e2e/smoke.spec.ts | 27 - apps/web/hooks/use-mobile.ts | 21 - apps/web/lib/block-content-to-markdown.d.ts | 1 - apps/web/lib/config.ts | 76 - apps/web/lib/gemini-metadata.ts | 15 - apps/web/lib/gemini.ts | 41 - apps/web/lib/hooks.ts | 27 - apps/web/lib/prism.ts | 279 - apps/web/lib/resend-notify.ts | 39 - apps/web/lib/rss.ts | 292 - apps/web/lib/sanity-write-client.ts | 16 - apps/web/lib/sanity/dashboard.ts | 55 - apps/web/lib/services/elevenlabs.ts | 538 - apps/web/lib/services/gcs.ts | 351 - apps/web/lib/services/gemini-infographics.ts | 448 - apps/web/lib/services/gemini-research.ts | 535 - apps/web/lib/services/notebooklm/auth.ts | 280 - apps/web/lib/services/notebooklm/client.ts | 986 - apps/web/lib/services/notebooklm/index.ts | 33 - apps/web/lib/services/notebooklm/rpc.ts | 263 - apps/web/lib/services/notebooklm/types.ts | 135 - apps/web/lib/services/pexels.ts | 421 - apps/web/lib/services/remotion-deploy.ts | 173 - apps/web/lib/services/remotion.ts | 431 - apps/web/lib/services/research.ts | 536 - apps/web/lib/services/sanity-upload.ts | 71 - apps/web/lib/services/trend-discovery.ts | 1128 - apps/web/lib/services/video-pipeline.ts | 380 - apps/web/lib/site.ts | 12 - apps/web/lib/sponsor/email-service.ts | 49 - apps/web/lib/sponsor/gemini-intent.ts | 96 - apps/web/lib/sponsor/gemini-outreach.ts | 113 - apps/web/lib/sponsor/sponsor-bridge.ts | 66 - apps/web/lib/sponsor/stripe-service.ts | 120 - apps/web/lib/sponsorship-schema.ts | 21 - apps/web/lib/stripe.types.ts | 364 - apps/web/lib/structured-data.ts | 149 - apps/web/lib/supabase/client.ts | 18 - apps/web/lib/supabase/server.ts | 63 - apps/web/lib/types.ts | 39 - apps/web/lib/types/config.ts | 94 - apps/web/lib/types/dashboard.ts | 17 - apps/web/lib/types/engine-config.ts | 79 - apps/web/lib/types/video-analytics.ts | 18 - apps/web/lib/utils.ts | 31 - apps/web/lib/utils/audio-timestamps.ts | 153 - apps/web/lib/x-social.ts | 157 - apps/web/lib/youtube-stats.ts | 367 - apps/web/lib/youtube-upload.ts | 150 - apps/web/next-env.d.ts | 6 - apps/web/next.config.ts | 23 - apps/web/package.json | 123 - apps/web/playwright.config.ts | 43 - apps/web/postcss.config.js | 5 - apps/web/proxy.ts | 73 - apps/web/public/ads.txt | 1 - apps/web/public/sanity-icons/apple-icon.png | Bin 3682 -> 0 bytes apps/web/public/sanity-icons/icon.ico | Bin 4286 -> 0 bytes apps/web/public/sanity-icons/icon.png | Bin 10466 -> 0 bytes apps/web/remotion/Root.tsx | 98 - apps/web/remotion/components/CTAScene.tsx | 177 - .../remotion/components/CodeMorphScene.tsx | 388 - .../components/ComparisonGridScene.tsx | 351 - .../remotion/components/DynamicListScene.tsx | 214 - apps/web/remotion/components/HookScene.tsx | 227 - .../remotion/components/InfographicScene.tsx | 247 - .../components/IsometricMockupScene.tsx | 666 - .../remotion/components/KineticCaptions.tsx | 157 - apps/web/remotion/components/Scene.tsx | 95 - apps/web/remotion/components/SceneRouter.tsx | 108 - apps/web/remotion/components/SponsorSlot.tsx | 148 - apps/web/remotion/compositions/MainVideo.tsx | 114 - apps/web/remotion/compositions/ShortVideo.tsx | 107 - apps/web/remotion/constants.ts | 169 - apps/web/remotion/entry.ts | 4 - apps/web/remotion/index.ts | 33 - apps/web/remotion/types.ts | 191 - apps/web/sanity.cli.ts | 16 - apps/web/sanity/extract.json | 12564 ---------- apps/web/sanity/lib/api.ts | 33 - apps/web/sanity/lib/client.ts | 23 - apps/web/sanity/lib/demo.ts | 59 - apps/web/sanity/lib/image.ts | 9 - apps/web/sanity/lib/live.ts | 91 - apps/web/sanity/lib/queries.ts | 300 - apps/web/sanity/lib/resolveHref.ts | 17 - apps/web/sanity/lib/token.ts | 9 - apps/web/sanity/lib/utils.ts | 31 - apps/web/sanity/types.ts | 8345 ------- apps/web/schema.json | 12140 ---------- apps/web/scripts/check-cache.ts | 270 - apps/web/scripts/migration/README.md | 203 - .../web/scripts/migration/cleanup-orphans.mjs | 165 - apps/web/scripts/migration/env-example.txt | 14 - apps/web/scripts/migration/migrate.mjs | 1019 - .../scripts/migration/migration-output.log | 53 - apps/web/scripts/migration/package.json | 23 - apps/web/scripts/migration/phase4-output.log | 941 - apps/web/scripts/sanity-post.js | 356 - apps/web/scripts/sanity-update-posts.ts | 28 - apps/web/supabase/.gitkeep | 0 apps/web/supabase/.temp/cli-latest | 1 - apps/web/supabase/.temp/gotrue-version | 1 - apps/web/supabase/.temp/pooler-url | 1 - apps/web/supabase/.temp/postgres-version | 1 - apps/web/supabase/.temp/project-ref | 1 - apps/web/supabase/.temp/rest-version | 1 - apps/web/supabase/.temp/storage-migration | 1 - apps/web/supabase/.temp/storage-version | 1 - apps/web/supabase/config.toml | 54 - .../supabase/migrations/001_youtube_stats.sql | 50 - .../migrations/002_cron_schedules.sql | 141 - .../20250101000000_create_dashboard_users.sql | 41 - apps/web/tsconfig.json | 41 - apps/web/vercel.json | 3 - package.json | 7 +- pnpm-lock.yaml | 19806 +++++----------- scripts/generate-aeo-distribution-pack.mjs | 181 - scripts/generate-video-storyboard.mjs | 140 - scripts/sync-shorts-from-automated-videos.mjs | 130 - 360 files changed, 5630 insertions(+), 91817 deletions(-) delete mode 100644 .github/workflows/sync-shorts.yml delete mode 100644 apps/site/src/components/ShortsShelf.astro delete mode 100644 apps/site/src/lib/sanity/queries/shorts.ts delete mode 100644 apps/site/src/pages/shorts/index.astro delete mode 100644 apps/web/.env.example delete mode 100644 apps/web/.eslintignore delete mode 100644 apps/web/.prettierignore delete mode 100644 apps/web/app/(dashboard)/dashboard/actions.ts delete mode 100644 apps/web/app/(dashboard)/dashboard/auth/callback/route.ts delete mode 100644 apps/web/app/(dashboard)/dashboard/config/config-form.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/config/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/content/actions.ts delete mode 100644 apps/web/app/(dashboard)/dashboard/content/content-ideas-table.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/content/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/login/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/pipeline/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/review/[id]/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/review/[id]/review-detail-client.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/review/actions.ts delete mode 100644 apps/web/app/(dashboard)/dashboard/review/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/settings/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/settings/settings-form.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/sponsors/actions.ts delete mode 100644 apps/web/app/(dashboard)/dashboard/sponsors/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/sponsors/sponsor-leads-table.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/sponsors/sponsor-pool-table.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/videos/actions.ts delete mode 100644 apps/web/app/(dashboard)/dashboard/videos/page.tsx delete mode 100644 apps/web/app/(dashboard)/dashboard/videos/videos-table.tsx delete mode 100644 apps/web/app/(dashboard)/layout.tsx delete mode 100644 apps/web/app/(main)/(author)/author/[slug]/page.tsx delete mode 100644 apps/web/app/(main)/(author)/authors/page.tsx delete mode 100644 apps/web/app/(main)/(author)/authors/page/[num]/page.tsx delete mode 100644 apps/web/app/(main)/(author)/authors/page/page.tsx delete mode 100644 apps/web/app/(main)/(guest)/guest/[slug]/page.tsx delete mode 100644 apps/web/app/(main)/(guest)/guests/page.tsx delete mode 100644 apps/web/app/(main)/(guest)/guests/page/[num]/page.tsx delete mode 100644 apps/web/app/(main)/(guest)/guests/page/page.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcast/Podcast.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcast/[slug]/page.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcast/picks.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcast/preview/[token]/page.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcasts/page.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcasts/page/[num]/page.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcasts/page/page.tsx delete mode 100644 apps/web/app/(main)/(podcast)/podcasts/rss.json/route.ts delete mode 100644 apps/web/app/(main)/(podcast)/podcasts/rss.xml/route.ts delete mode 100644 apps/web/app/(main)/(post)/blog/page.tsx delete mode 100644 apps/web/app/(main)/(post)/blog/page/[num]/page.tsx delete mode 100644 apps/web/app/(main)/(post)/blog/page/page.tsx delete mode 100644 apps/web/app/(main)/(post)/blog/rss.json/route.ts delete mode 100644 apps/web/app/(main)/(post)/blog/rss.xml/route.ts delete mode 100644 apps/web/app/(main)/(post)/post/[slug]/page.tsx delete mode 100644 apps/web/app/(main)/(sponsor)/sponsor/[slug]/page.tsx delete mode 100644 apps/web/app/(main)/(sponsor)/sponsors/page.tsx delete mode 100644 apps/web/app/(main)/(sponsor)/sponsors/page/[num]/page.tsx delete mode 100644 apps/web/app/(main)/(sponsor)/sponsors/page/page.tsx delete mode 100644 apps/web/app/(main)/(top-level-pages)/[slug]/page.tsx delete mode 100644 apps/web/app/(main)/(top-level-pages)/pro/page.tsx delete mode 100644 apps/web/app/(main)/(top-level-pages)/search/page.tsx delete mode 100644 apps/web/app/(main)/(top-level-pages)/sponsorships/page.tsx delete mode 100644 apps/web/app/(main)/(top-level-pages)/sponsorships/sponsorship-form.tsx delete mode 100644 apps/web/app/(main)/icon.svg delete mode 100644 apps/web/app/(main)/layout.tsx delete mode 100644 apps/web/app/(main)/meta-pixel.tsx delete mode 100644 apps/web/app/(main)/page.tsx delete mode 100644 apps/web/app/(sponsor-portal)/layout.tsx delete mode 100644 apps/web/app/(sponsor-portal)/portal/page.tsx delete mode 100644 apps/web/app/api/algolia/route.tsx delete mode 100644 apps/web/app/api/auth/logout/route.tsx delete mode 100644 apps/web/app/api/auth/session/route.tsx delete mode 100644 apps/web/app/api/auth/session/verify/route.tsx delete mode 100644 apps/web/app/api/cron/check-renders/route.ts delete mode 100644 apps/web/app/api/cron/check-research/route.ts delete mode 100644 apps/web/app/api/cron/ingest/route.ts delete mode 100644 apps/web/app/api/cron/route.tsx delete mode 100644 apps/web/app/api/cron/sponsor-outreach/route.ts delete mode 100644 apps/web/app/api/dashboard/activity/route.ts delete mode 100644 apps/web/app/api/dashboard/config/route.ts delete mode 100644 apps/web/app/api/dashboard/metrics/route.ts delete mode 100644 apps/web/app/api/dashboard/pipeline/route.ts delete mode 100644 apps/web/app/api/dashboard/review/route.ts delete mode 100644 apps/web/app/api/dashboard/settings/route.ts delete mode 100644 apps/web/app/api/devto/route.tsx delete mode 100644 apps/web/app/api/draft-mode/disable/route.tsx delete mode 100644 apps/web/app/api/draft-mode/enable/route.tsx delete mode 100644 apps/web/app/api/generate-preview-token/route.ts delete mode 100644 apps/web/app/api/get-preview-content/route.ts delete mode 100644 apps/web/app/api/hashnode/route.tsx delete mode 100644 apps/web/app/api/sponsor/opt-out/route.ts delete mode 100644 apps/web/app/api/sponsorship/route.ts delete mode 100644 apps/web/app/api/sponsorship/sponsorship-template.tsx delete mode 100644 apps/web/app/api/verify-turnstile.ts delete mode 100644 apps/web/app/api/webhooks/sanity-content/route.ts delete mode 100644 apps/web/app/api/webhooks/sanity-distribute/route.ts delete mode 100644 apps/web/app/api/webhooks/sanity-revalidate/route.ts delete mode 100644 apps/web/app/api/webhooks/sponsor-inbound/route.ts delete mode 100644 apps/web/app/api/webhooks/stripe-sponsor/route.ts delete mode 100644 apps/web/app/api/youtube/rss.xml/route.tsx delete mode 100644 apps/web/app/api/youtube/views/route.tsx delete mode 100644 apps/web/app/globals.css delete mode 100644 apps/web/app/robots.ts delete mode 100644 apps/web/app/sitemap.ts delete mode 100644 apps/web/biome.json delete mode 100644 apps/web/cache-report.json delete mode 100644 apps/web/components.json delete mode 100644 apps/web/components/algolia-dialog.tsx delete mode 100644 apps/web/components/algolia-search.tsx delete mode 100644 apps/web/components/analytics.tsx delete mode 100644 apps/web/components/animated-hero.tsx delete mode 100644 apps/web/components/app-sidebar.tsx delete mode 100644 apps/web/components/avatar.tsx delete mode 100644 apps/web/components/badge-pro.tsx delete mode 100644 apps/web/components/become-sponsor-popup.tsx delete mode 100644 apps/web/components/block-code-btn.tsx delete mode 100644 apps/web/components/block-code.tsx delete mode 100644 apps/web/components/block-image.tsx delete mode 100644 apps/web/components/block-table.tsx delete mode 100644 apps/web/components/bookmark.tsx delete mode 100644 apps/web/components/breadrumb-links.tsx delete mode 100644 apps/web/components/cloudflare-turnstile.tsx delete mode 100644 apps/web/components/codepen-embed.tsx delete mode 100644 apps/web/components/codesandbox-embed.tsx delete mode 100644 apps/web/components/cookies-provider-client.tsx delete mode 100644 apps/web/components/cookies-provider.tsx delete mode 100644 apps/web/components/cover-image.tsx delete mode 100644 apps/web/components/cover-media.tsx delete mode 100644 apps/web/components/cover-video.tsx delete mode 100644 apps/web/components/date.tsx delete mode 100644 apps/web/components/disable-draft-mode.tsx delete mode 100644 apps/web/components/footer.tsx delete mode 100644 apps/web/components/google-ad-banner.tsx delete mode 100644 apps/web/components/html-embed.tsx delete mode 100644 apps/web/components/icons.tsx delete mode 100644 apps/web/components/icons/aj-alt.tsx delete mode 100644 apps/web/components/icons/aj-dark.tsx delete mode 100644 apps/web/components/icons/aj-headphones-alt.tsx delete mode 100644 apps/web/components/icons/aj-headphones.tsx delete mode 100644 apps/web/components/icons/aj-light.tsx delete mode 100644 apps/web/components/icons/aj-primary-alt.tsx delete mode 100644 apps/web/components/icons/aj-primary.tsx delete mode 100644 apps/web/components/icons/checkout-arrow.tsx delete mode 100644 apps/web/components/icons/dribble.svg delete mode 100644 apps/web/components/json-ld.tsx delete mode 100644 apps/web/components/mode-toggle.tsx delete mode 100644 apps/web/components/more-content.tsx delete mode 100644 apps/web/components/more-header.tsx delete mode 100644 apps/web/components/nav-header.tsx delete mode 100644 apps/web/components/nav-link.tsx delete mode 100644 apps/web/components/nav-main.tsx delete mode 100644 apps/web/components/nav-user.tsx delete mode 100644 apps/web/components/onboarding.tsx delete mode 100644 apps/web/components/page-refresh-button.tsx delete mode 100644 apps/web/components/paginate-list.tsx delete mode 100644 apps/web/components/pipeline-status.tsx delete mode 100644 apps/web/components/player-context.tsx delete mode 100644 apps/web/components/player-floating.tsx delete mode 100644 apps/web/components/player-play-button.tsx delete mode 100644 apps/web/components/podcast-open-apple.tsx delete mode 100644 apps/web/components/podcast-open-spotify.tsx delete mode 100644 apps/web/components/podcast-open-youtube.tsx delete mode 100644 apps/web/components/podmatch-badge.tsx delete mode 100644 apps/web/components/portable-text.tsx delete mode 100644 apps/web/components/pro-benefits.tsx delete mode 100644 apps/web/components/quote-embed.tsx delete mode 100644 apps/web/components/recent-activity.tsx delete mode 100644 apps/web/components/section-cards-live.tsx delete mode 100644 apps/web/components/section-cards.tsx delete mode 100644 apps/web/components/site-header.tsx delete mode 100644 apps/web/components/sponsor-card.tsx delete mode 100644 apps/web/components/theme-provider.tsx delete mode 100644 apps/web/components/twitter-embed.tsx delete mode 100644 apps/web/components/ui/accordion.tsx delete mode 100644 apps/web/components/ui/alert-dialog.tsx delete mode 100644 apps/web/components/ui/alert.tsx delete mode 100644 apps/web/components/ui/aspect-ratio.tsx delete mode 100644 apps/web/components/ui/avatar.tsx delete mode 100644 apps/web/components/ui/badge.tsx delete mode 100644 apps/web/components/ui/breadcrumb.tsx delete mode 100644 apps/web/components/ui/button.tsx delete mode 100644 apps/web/components/ui/calendar.tsx delete mode 100644 apps/web/components/ui/card.tsx delete mode 100644 apps/web/components/ui/carousel.tsx delete mode 100644 apps/web/components/ui/chart.tsx delete mode 100644 apps/web/components/ui/checkbox.tsx delete mode 100644 apps/web/components/ui/collapsible.tsx delete mode 100644 apps/web/components/ui/command.tsx delete mode 100644 apps/web/components/ui/context-menu.tsx delete mode 100644 apps/web/components/ui/dialog.tsx delete mode 100644 apps/web/components/ui/drawer.tsx delete mode 100644 apps/web/components/ui/dropdown-menu.tsx delete mode 100644 apps/web/components/ui/form.tsx delete mode 100644 apps/web/components/ui/hover-card.tsx delete mode 100644 apps/web/components/ui/input-otp.tsx delete mode 100644 apps/web/components/ui/input.tsx delete mode 100644 apps/web/components/ui/label.tsx delete mode 100644 apps/web/components/ui/menubar.tsx delete mode 100644 apps/web/components/ui/navigation-menu.tsx delete mode 100644 apps/web/components/ui/pagination.tsx delete mode 100644 apps/web/components/ui/popover.tsx delete mode 100644 apps/web/components/ui/progress.tsx delete mode 100644 apps/web/components/ui/radio-group.tsx delete mode 100644 apps/web/components/ui/resizable.tsx delete mode 100644 apps/web/components/ui/scroll-area.tsx delete mode 100644 apps/web/components/ui/select.tsx delete mode 100644 apps/web/components/ui/separator.tsx delete mode 100644 apps/web/components/ui/sheet.tsx delete mode 100644 apps/web/components/ui/sidebar.tsx delete mode 100644 apps/web/components/ui/skeleton.tsx delete mode 100644 apps/web/components/ui/slider.tsx delete mode 100644 apps/web/components/ui/sonner.tsx delete mode 100644 apps/web/components/ui/switch.tsx delete mode 100644 apps/web/components/ui/table.tsx delete mode 100644 apps/web/components/ui/tabs.tsx delete mode 100644 apps/web/components/ui/textarea.tsx delete mode 100644 apps/web/components/ui/toggle-group.tsx delete mode 100644 apps/web/components/ui/toggle.tsx delete mode 100644 apps/web/components/ui/tooltip.tsx delete mode 100644 apps/web/components/user-buy.tsx delete mode 100644 apps/web/components/user-go-pro-button.tsx delete mode 100644 apps/web/components/user-go-pro.tsx delete mode 100644 apps/web/components/user-related.tsx delete mode 100644 apps/web/components/user-socials.tsx delete mode 100644 apps/web/components/youtube-embed.tsx delete mode 100644 apps/web/components/youtube-short-embed.tsx delete mode 100644 apps/web/components/youtube-short.tsx delete mode 100644 apps/web/components/youtube-shorts.tsx delete mode 100644 apps/web/components/youtube.tsx delete mode 100644 apps/web/e2e/dashboard.spec.ts delete mode 100644 apps/web/e2e/smoke.spec.ts delete mode 100644 apps/web/hooks/use-mobile.ts delete mode 100644 apps/web/lib/block-content-to-markdown.d.ts delete mode 100644 apps/web/lib/config.ts delete mode 100644 apps/web/lib/gemini-metadata.ts delete mode 100644 apps/web/lib/gemini.ts delete mode 100644 apps/web/lib/hooks.ts delete mode 100644 apps/web/lib/prism.ts delete mode 100644 apps/web/lib/resend-notify.ts delete mode 100644 apps/web/lib/rss.ts delete mode 100644 apps/web/lib/sanity-write-client.ts delete mode 100644 apps/web/lib/sanity/dashboard.ts delete mode 100644 apps/web/lib/services/elevenlabs.ts delete mode 100644 apps/web/lib/services/gcs.ts delete mode 100644 apps/web/lib/services/gemini-infographics.ts delete mode 100644 apps/web/lib/services/gemini-research.ts delete mode 100644 apps/web/lib/services/notebooklm/auth.ts delete mode 100644 apps/web/lib/services/notebooklm/client.ts delete mode 100644 apps/web/lib/services/notebooklm/index.ts delete mode 100644 apps/web/lib/services/notebooklm/rpc.ts delete mode 100644 apps/web/lib/services/notebooklm/types.ts delete mode 100644 apps/web/lib/services/pexels.ts delete mode 100644 apps/web/lib/services/remotion-deploy.ts delete mode 100644 apps/web/lib/services/remotion.ts delete mode 100644 apps/web/lib/services/research.ts delete mode 100644 apps/web/lib/services/sanity-upload.ts delete mode 100644 apps/web/lib/services/trend-discovery.ts delete mode 100644 apps/web/lib/services/video-pipeline.ts delete mode 100644 apps/web/lib/site.ts delete mode 100644 apps/web/lib/sponsor/email-service.ts delete mode 100644 apps/web/lib/sponsor/gemini-intent.ts delete mode 100644 apps/web/lib/sponsor/gemini-outreach.ts delete mode 100644 apps/web/lib/sponsor/sponsor-bridge.ts delete mode 100644 apps/web/lib/sponsor/stripe-service.ts delete mode 100644 apps/web/lib/sponsorship-schema.ts delete mode 100644 apps/web/lib/stripe.types.ts delete mode 100644 apps/web/lib/structured-data.ts delete mode 100644 apps/web/lib/supabase/client.ts delete mode 100644 apps/web/lib/supabase/server.ts delete mode 100644 apps/web/lib/types.ts delete mode 100644 apps/web/lib/types/config.ts delete mode 100644 apps/web/lib/types/dashboard.ts delete mode 100644 apps/web/lib/types/engine-config.ts delete mode 100644 apps/web/lib/types/video-analytics.ts delete mode 100644 apps/web/lib/utils.ts delete mode 100644 apps/web/lib/utils/audio-timestamps.ts delete mode 100644 apps/web/lib/x-social.ts delete mode 100644 apps/web/lib/youtube-stats.ts delete mode 100644 apps/web/lib/youtube-upload.ts delete mode 100644 apps/web/next-env.d.ts delete mode 100644 apps/web/next.config.ts delete mode 100644 apps/web/package.json delete mode 100644 apps/web/playwright.config.ts delete mode 100644 apps/web/postcss.config.js delete mode 100644 apps/web/proxy.ts delete mode 100644 apps/web/public/ads.txt delete mode 100644 apps/web/public/sanity-icons/apple-icon.png delete mode 100644 apps/web/public/sanity-icons/icon.ico delete mode 100644 apps/web/public/sanity-icons/icon.png delete mode 100644 apps/web/remotion/Root.tsx delete mode 100644 apps/web/remotion/components/CTAScene.tsx delete mode 100644 apps/web/remotion/components/CodeMorphScene.tsx delete mode 100644 apps/web/remotion/components/ComparisonGridScene.tsx delete mode 100644 apps/web/remotion/components/DynamicListScene.tsx delete mode 100644 apps/web/remotion/components/HookScene.tsx delete mode 100644 apps/web/remotion/components/InfographicScene.tsx delete mode 100644 apps/web/remotion/components/IsometricMockupScene.tsx delete mode 100644 apps/web/remotion/components/KineticCaptions.tsx delete mode 100644 apps/web/remotion/components/Scene.tsx delete mode 100644 apps/web/remotion/components/SceneRouter.tsx delete mode 100644 apps/web/remotion/components/SponsorSlot.tsx delete mode 100644 apps/web/remotion/compositions/MainVideo.tsx delete mode 100644 apps/web/remotion/compositions/ShortVideo.tsx delete mode 100644 apps/web/remotion/constants.ts delete mode 100644 apps/web/remotion/entry.ts delete mode 100644 apps/web/remotion/index.ts delete mode 100644 apps/web/remotion/types.ts delete mode 100644 apps/web/sanity.cli.ts delete mode 100644 apps/web/sanity/extract.json delete mode 100644 apps/web/sanity/lib/api.ts delete mode 100644 apps/web/sanity/lib/client.ts delete mode 100644 apps/web/sanity/lib/demo.ts delete mode 100644 apps/web/sanity/lib/image.ts delete mode 100644 apps/web/sanity/lib/live.ts delete mode 100644 apps/web/sanity/lib/queries.ts delete mode 100644 apps/web/sanity/lib/resolveHref.ts delete mode 100644 apps/web/sanity/lib/token.ts delete mode 100644 apps/web/sanity/lib/utils.ts delete mode 100644 apps/web/sanity/types.ts delete mode 100644 apps/web/schema.json delete mode 100644 apps/web/scripts/check-cache.ts delete mode 100644 apps/web/scripts/migration/README.md delete mode 100644 apps/web/scripts/migration/cleanup-orphans.mjs delete mode 100644 apps/web/scripts/migration/env-example.txt delete mode 100644 apps/web/scripts/migration/migrate.mjs delete mode 100644 apps/web/scripts/migration/migration-output.log delete mode 100644 apps/web/scripts/migration/package.json delete mode 100644 apps/web/scripts/migration/phase4-output.log delete mode 100644 apps/web/scripts/sanity-post.js delete mode 100644 apps/web/scripts/sanity-update-posts.ts delete mode 100644 apps/web/supabase/.gitkeep delete mode 100644 apps/web/supabase/.temp/cli-latest delete mode 100644 apps/web/supabase/.temp/gotrue-version delete mode 100644 apps/web/supabase/.temp/pooler-url delete mode 100644 apps/web/supabase/.temp/postgres-version delete mode 100644 apps/web/supabase/.temp/project-ref delete mode 100644 apps/web/supabase/.temp/rest-version delete mode 100644 apps/web/supabase/.temp/storage-migration delete mode 100644 apps/web/supabase/.temp/storage-version delete mode 100644 apps/web/supabase/config.toml delete mode 100644 apps/web/supabase/migrations/001_youtube_stats.sql delete mode 100644 apps/web/supabase/migrations/002_cron_schedules.sql delete mode 100644 apps/web/supabase/migrations/20250101000000_create_dashboard_users.sql delete mode 100644 apps/web/tsconfig.json delete mode 100644 apps/web/vercel.json delete mode 100644 scripts/generate-aeo-distribution-pack.mjs delete mode 100755 scripts/generate-video-storyboard.mjs delete mode 100644 scripts/sync-shorts-from-automated-videos.mjs diff --git a/.github/workflows/sync-shorts.yml b/.github/workflows/sync-shorts.yml deleted file mode 100644 index 4b9581763..000000000 --- a/.github/workflows/sync-shorts.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Sync YouTube Shorts to Sanity - -on: - workflow_dispatch: - inputs: - dataset: - description: "Target Sanity Dataset" - required: true - default: "production" - type: choice - options: - - production - - dev - schedule: - - cron: "30 6 * * *" - -jobs: - sync-shorts: - runs-on: ubuntu-latest - environment: production - - steps: - - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v4 - - - uses: actions/setup-node@v4 - with: - node-version-file: ".nvmrc" - cache: "pnpm" - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Sync Shorts from Automated Videos - run: node scripts/sync-shorts-from-automated-videos.mjs - env: - SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }} - SANITY_API_WRITE_TOKEN: ${{ secrets.SANITY_API_WRITE_TOKEN }} - SANITY_STUDIO_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID || 'hfh83o0w' }} - SANITY_STUDIO_DATASET: ${{ inputs.dataset || 'production' }} - YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }} diff --git a/apps/sanity/extract.json b/apps/sanity/extract.json index b18ae4394..d3376aa8b 100644 --- a/apps/sanity/extract.json +++ b/apps/sanity/extract.json @@ -702,36 +702,6 @@ } } }, - { - "type": "type", - "name": "automatedVideo.reference", - "value": { - "type": "object", - "attributes": { - "_ref": { - "type": "objectAttribute", - "value": { - "type": "string" - } - }, - "_type": { - "type": "objectAttribute", - "value": { - "type": "string", - "value": "reference" - } - }, - "_weak": { - "type": "objectAttribute", - "value": { - "type": "boolean" - }, - "optional": true - } - }, - "dereferencesTo": "automatedVideo" - } - }, { "type": "type", "name": "category.reference", @@ -812,13 +782,6 @@ }, "optional": true }, - "description": { - "type": "objectAttribute", - "value": { - "type": "string" - }, - "optional": true - }, "youtube": { "type": "objectAttribute", "value": { @@ -826,13 +789,6 @@ }, "optional": true }, - "shortVideoUrl": { - "type": "objectAttribute", - "value": { - "type": "string" - }, - "optional": true - }, "thumbnail": { "type": "objectAttribute", "value": { @@ -888,14 +844,6 @@ }, "optional": true }, - "sourceAutomatedVideo": { - "type": "objectAttribute", - "value": { - "type": "inline", - "name": "automatedVideo.reference" - }, - "optional": true - }, "publishedAt": { "type": "objectAttribute", "value": { @@ -910,52 +858,6 @@ }, "optional": true }, - "statistics": { - "type": "objectAttribute", - "value": { - "type": "object", - "attributes": { - "youtube": { - "type": "objectAttribute", - "value": { - "type": "object", - "attributes": { - "viewCount": { - "type": "objectAttribute", - "value": { - "type": "number" - }, - "optional": true - }, - "likeCount": { - "type": "objectAttribute", - "value": { - "type": "number" - }, - "optional": true - }, - "commentCount": { - "type": "objectAttribute", - "value": { - "type": "number" - }, - "optional": true - }, - "favoriteCount": { - "type": "objectAttribute", - "value": { - "type": "number" - }, - "optional": true - } - } - }, - "optional": true - } - } - }, - "optional": true - }, "categories": { "type": "objectAttribute", "value": { @@ -1281,6 +1183,36 @@ } } }, + { + "type": "type", + "name": "automatedVideo.reference", + "value": { + "type": "object", + "attributes": { + "_ref": { + "type": "objectAttribute", + "value": { + "type": "string" + } + }, + "_type": { + "type": "objectAttribute", + "value": { + "type": "string", + "value": "reference" + } + }, + "_weak": { + "type": "objectAttribute", + "value": { + "type": "boolean" + }, + "optional": true + } + }, + "dereferencesTo": "automatedVideo" + } + }, { "name": "videoAnalytics", "type": "document", diff --git a/apps/sanity/functions/sync-youtube-analytics/index.ts b/apps/sanity/functions/sync-youtube-analytics/index.ts index 897580c7e..04d73730b 100644 --- a/apps/sanity/functions/sync-youtube-analytics/index.ts +++ b/apps/sanity/functions/sync-youtube-analytics/index.ts @@ -70,69 +70,13 @@ export const handler = scheduledEventHandler(async ({ context }) => { useCdn: false, }); - // Step 0: Sync any published automatedVideo Shorts into standalone `_type == "short"` documents - const autoShortDocs = await client.fetch< - Array<{ - _id: string; - _createdAt: string; - title: string; - slug?: { current?: string }; - youtubeShortId: string; - shortUrl?: string; - hook?: string; - }> - >( - `*[_type == "automatedVideo" && defined(youtubeShortId) && !(_id in path("drafts.**"))]{ - _id, - _createdAt, - title, - slug, - youtubeShortId, - shortUrl, - "hook": script.hook - }`, - ); - - for (const autoShort of autoShortDocs) { - const shortId = `short-${autoShort.youtubeShortId}`; - const slugCurrent = - autoShort.slug?.current || - autoShort.title - .toLowerCase() - .replace(/[^a-z0-9]+/g, "-") - .replace(/(^-|-$)/g, "") - .slice(0, 90); - await client - .createIfNotExists({ - _id: shortId, - _type: "short", - title: autoShort.title, - slug: { _type: "slug", current: slugCurrent }, - description: autoShort.hook || undefined, - youtube: `https://www.youtube.com/shorts/${autoShort.youtubeShortId}`, - shortVideoUrl: autoShort.shortUrl || undefined, - sourceAutomatedVideo: { - _type: "reference", - _ref: autoShort._id, - }, - publishedAt: autoShort._createdAt, - duration: 60, - }) - .catch((err) => { - console.warn( - `[Sync YouTube Analytics] Could not createIfNotExists short ${shortId}:`, - err, - ); - }); - } - - // Query all posts, podcasts, and shorts with YouTube URLs + // Query all posts and podcasts with YouTube URLs console.log( `[Sync YouTube Analytics] Fetching documents with YouTube URLs in project ${projectId}, dataset ${dataset}...`, ); const docs = await client.fetch( - `*[_type in ["post", "podcast", "short"] && (defined(youtube) || defined(listenLinks.youtube)) && !(_id in path("drafts.**"))]{ + `*[_type in ["post", "podcast"] && (defined(youtube) || defined(listenLinks.youtube)) && !(_id in path("drafts.**"))]{ _id, _type, title, diff --git a/apps/sanity/schemas/documents/short.ts b/apps/sanity/schemas/documents/short.ts index ee25af8b2..e7a294842 100644 --- a/apps/sanity/schemas/documents/short.ts +++ b/apps/sanity/schemas/documents/short.ts @@ -27,25 +27,12 @@ export default defineType({ }, validation: (rule) => rule.required(), }), - defineField({ - name: "description", - title: "Description / Hook", - type: "text", - rows: 3, - description: "Short hook or summary for SEO/AEO and card previews", - }), defineField({ name: "youtube", title: "YouTube", type: "string", description: "YouTube Shorts video ID or URL", }), - defineField({ - name: "shortVideoUrl", - title: "Direct MP4 Video URL", - type: "url", - description: "Direct Sanity CDN or R2 MP4 URL for native vertical video playback", - }), defineField({ name: "thumbnail", title: "Thumbnail", @@ -62,13 +49,6 @@ export default defineType({ to: [{ type: "podcast" }], description: "Long-form episode this Short was clipped from", }), - defineField({ - name: "sourceAutomatedVideo", - title: "Source Automated Video", - type: "reference", - to: [{ type: "automatedVideo" }], - description: "Automated video pipeline run that produced this Short", - }), defineField({ name: "publishedAt", title: "Published At", @@ -80,24 +60,6 @@ export default defineType({ type: "number", description: "Duration in seconds", }), - defineField({ - name: "statistics", - title: "Statistics", - type: "object", - fields: [ - defineField({ - name: "youtube", - title: "YouTube Statistics", - type: "object", - fields: [ - defineField({ name: "viewCount", title: "Views", type: "number" }), - defineField({ name: "likeCount", title: "Likes", type: "number" }), - defineField({ name: "commentCount", title: "Comments", type: "number" }), - defineField({ name: "favoriteCount", title: "Favorites", type: "number" }), - ], - }), - ], - }), defineField({ name: "categories", title: "Categories", diff --git a/apps/sanity/schemas/singletons/engineConfig.ts b/apps/sanity/schemas/singletons/engineConfig.ts index ad1f2c9aa..9c570a9f3 100644 --- a/apps/sanity/schemas/singletons/engineConfig.ts +++ b/apps/sanity/schemas/singletons/engineConfig.ts @@ -327,8 +327,8 @@ export default defineType({ type: 'string', fieldset: 'aiGeneration', description: - 'The Google Gemini model used for script generation and content analysis (e.g., gemini-2.5-flash, gemini-2.5-pro)', - initialValue: 'gemini-2.5-flash', + 'The Google Gemini model used for script generation and content analysis', + initialValue: 'gemini-2.0-flash', }), defineField({ name: 'infographicModel', diff --git a/apps/sanity/schemas/singletons/pipelineConfig.ts b/apps/sanity/schemas/singletons/pipelineConfig.ts index cea163aec..2d0ab77f8 100644 --- a/apps/sanity/schemas/singletons/pipelineConfig.ts +++ b/apps/sanity/schemas/singletons/pipelineConfig.ts @@ -10,8 +10,8 @@ export default defineType({ name: "geminiModel", title: "Gemini Model", type: "string", - description: "The Google Gemini model used for script generation and content analysis (e.g., gemini-2.5-flash, gemini-2.5-pro)", - initialValue: "gemini-2.5-flash", + description: "The Google Gemini model used for script generation and content analysis (e.g., gemini-2.0-flash, gemini-2.5-pro)", + initialValue: "gemini-2.0-flash", }), defineField({ name: "elevenLabsVoiceId", diff --git a/apps/site/src/components/Header.astro b/apps/site/src/components/Header.astro index 7adc07387..008031a3c 100644 --- a/apps/site/src/components/Header.astro +++ b/apps/site/src/components/Header.astro @@ -5,13 +5,7 @@ import ThemeToggle from "./ThemeToggle.astro"; import SearchModal from "./SearchModal.astro"; const settings = await Astro.locals.sanity.loadQuery(settingsQuery); -const rawNavLinks = settings?.navLinks ?? []; -const navLinks = rawNavLinks.some((link) => link?.path === "/shorts") - ? rawNavLinks - : [ - ...rawNavLinks, - { _key: "shorts-nav", path: "/shorts", title: "Shorts", sideOnly: false }, - ]; +const navLinks = settings?.navLinks ?? []; // The Next header split these across a desktop