Content Management
Content Management
Section titled “Content Management”This guide covers day-to-day content management in Sanity Studio, including creating episodes, managing guests, and organizing content.
Accessing Sanity Studio
Section titled “Accessing Sanity Studio”Local Development
Section titled “Local Development”npm run dev:sanityVisit http://localhost:3333
Production
Section titled “Production”Deploy Studio for team access:
cd sanitynpx sanity deployVisit https://your-podcast.sanity.studio
Managing Episodes
Section titled “Managing Episodes”Creating an Episode
Section titled “Creating an Episode”- Open Sanity Studio
- Click “Episode” in sidebar
- Click “Create new Episode” (+ button)
- Fill in required fields:
Required Fields:
- Title: Episode title (e.g., “The Future of Ethereum”)
- Slug: Auto-generates from title (or customize)
- Episode Number: Sequential number (1, 2, 3, …)
- Publish Date: When episode was/will be published
- Description: Episode description (used in SEO, episode lists)
Optional but Recommended:
- Duration: Episode length (e.g., “1:23:45” or “45:30”)
- Cover Image: Upload episode cover art
- Hosts: Select host(s) from list
- Guests: Select guest(s) from list
- Spotify Link: Full Spotify episode URL
- Apple Podcast Link: Apple Podcasts episode URL
- YouTube Link: YouTube video URL
Advanced:
- Show Notes: Rich text content (formatted notes, links, timestamps)
- Transcript: Full episode transcript
- Featured: Toggle ON to feature in carousel
- Audio URL: Direct MP3 URL (for transcription services)
- Click “Publish”
Editing an Episode
Section titled “Editing an Episode”- Click “Episode” in sidebar
- Find episode in list
- Click to open
- Make changes
- Click “Publish” to save
Draft vs Published:
- Draft: Changes not visible on website
- Published: Live on website after next build
Deleting an Episode
Section titled “Deleting an Episode”- Open episode
- Click ”…” menu (top right)
- Click “Delete”
- Confirm deletion
Featuring Episodes
Section titled “Featuring Episodes”Mark important episodes to appear in homepage carousel:
- Open episode
- Scroll to “Featured Episode” toggle
- Toggle ON
- Click “Publish”
Featured episodes appear in FeaturedEpisodesCarousel component.
Episode Ordering
Section titled “Episode Ordering”Episodes are ordered by:
- Episode Number (descending by default)
- Newest episodes appear first
- Archive page respects this order
Custom sorting in Sanity Studio:
- Click sort dropdown
- Choose “Episode Number, Old” for ascending order
Managing Guests
Section titled “Managing Guests”Creating a Guest
Section titled “Creating a Guest”- Click “Guest” in sidebar
- Click “Create new Guest”
- Fill in fields:
Required:
- Name: Guest full name
- Slug: Auto-generated from name
Recommended:
- Bio: Guest biography (2-3 sentences)
- Photo: Guest photo (square recommended, 400x400px+)
Optional:
- Twitter: Twitter/X handle (without @ symbol)
- Website: Personal or company website
- LinkedIn: LinkedIn profile URL
- Click “Publish”
Linking Guests to Episodes
Section titled “Linking Guests to Episodes”Method 1: From Episode
- Open episode
- Scroll to “Guests” field
- Click “Add item”
- Select guest from list
- Click “Publish”
Method 2: Bulk Linking
- Create all guests first
- Create episode
- Add multiple guests at once
Guest Photo Best Practices
Section titled “Guest Photo Best Practices”Recommended dimensions:
- Minimum: 400x400px
- Recommended: 800x800px
- Format: JPG or PNG
- Aspect ratio: Square (1:1)
Upload process:
- Click “Photo” field
- Drag and drop image or click to upload
- Adjust hotspot (focal point)
- Click “Upload”
Guest Profiles
Section titled “Guest Profiles”Each guest automatically gets a profile page at /guest/[slug] showing:
- Guest photo and bio
- Social links
- All episodes featuring the guest
Managing Hosts
Section titled “Managing Hosts”Same process as guests, but for regular hosts:
- Create Host document
- Add host to episodes via “Hosts” field
- Hosts typically appear on all episodes
Typical setup:
Host: Rex Kirshner↓Added to all 69 episodesManaging Podcast Metadata
Section titled “Managing Podcast Metadata”The Podcast document contains show-level information.
Initial Setup
Section titled “Initial Setup”- Click “Podcast” in sidebar
- Click “Create new Podcast” (if not exists)
- Fill in fields:
Required:
- Name: Podcast name
- Is Active: ON if releasing episodes, OFF if concluded
Recommended:
- Tagline: Short tagline (shown in header, meta tags)
- Description: Full podcast description
- Logo: Podcast logo (square, 1400x1400px recommended)
Platform Links:
- Spotify Show ID: From Spotify URL
- Spotify URL: Show page URL
- Apple Podcasts URL: Show page URL
- YouTube URL: Channel URL
- RSS URL: Podcast RSS feed URL
Social:
- Twitter URL: Podcast Twitter profile
- Discord URL: Community Discord server
Newsletter:
- Enable Newsletter Signup: Toggle ON to show newsletter forms
- ConvertKit API Key: API secret from ConvertKit
- ConvertKit Form ID: Form ID from ConvertKit
- Click “Publish”
Updating Podcast Info
Section titled “Updating Podcast Info”Edit the Podcast document anytime:
- Click “Podcast” in sidebar
- Click existing document
- Make changes
- Click “Publish”
Changes appear after next build/refresh.
Content Workflow
Section titled “Content Workflow”Recommended Workflow
Section titled “Recommended Workflow”For Active Podcasts:
- Record episode → Get audio file
- Upload to Spotify/Apple → Get platform links
- Create Guest in Sanity (if new guest)
- Create Episode in Sanity:
- Add title, number, date
- Add description
- Upload cover image
- Add platform links
- Link host and guests
- Write Show Notes → Add to Episode
- Mark as Featured (optional)
- Publish Episode
- Build & Deploy Website → Episode appears
For Concluded Podcasts:
Same workflow, but set isActive: false in Podcast document.
Bulk Operations
Section titled “Bulk Operations”Import from RSS Feed
Section titled “Import from RSS Feed”Import existing episodes from your podcast host:
# Set RSS feed URL in .envecho 'RSS_FEED_URL="https://feeds.transistor.fm/your-show"' >> .env
# Import all episodes (first time)npm run import:episodes
# Or use the command directly with optionspodcast-framework import-rss --feed https://feeds.transistor.fm/your-show --verbose
# Preview import without making changespodcast-framework import-rss --dry-run
# Update existing episodespodcast-framework import-rss --update
# Skip image downloadspodcast-framework import-rss --skip-imagesWhat it does:
- ✅ Fetches RSS feed from your podcast host
- ✅ Parses episode metadata (title, number, date, duration, description)
- ✅ Downloads and uploads cover images to Sanity
- ✅ Creates Episode documents with audio URLs
- ✅ Detects and skips existing episodes (using RSS GUID)
- ✅ Works with incremental imports (safe to run multiple times)
Supported Podcast Hosts:
- Transistor - Full support for https://feeds.transistor.fm/ feeds
- More hosts coming soon (easily extensible)
After Import:
- Episodes are created with basic metadata
- Manually add guests and hosts in Sanity Studio
- Manually add platform links (Spotify, Apple Podcasts, YouTube)
- Review and update descriptions as needed
Upload Guest Photos
Section titled “Upload Guest Photos”Batch upload photos:
# 1. Add photos to public/guests/# public/guests/danny-ryan.jpg
# 2. Run upload scriptnpm run upload:photosWhat it does:
- Finds all guests in Sanity
- Matches photos by slug
- Uploads and links photos
- Updates guest documents
Export Data
Section titled “Export Data”Export all content for backup:
cd sanitynpx sanity dataset export production backup.tar.gzImport Data
Section titled “Import Data”Restore from backup:
cd sanitynpx sanity dataset import backup.tar.gz productionContent Best Practices
Section titled “Content Best Practices”1. Consistent Episode Numbering
Section titled “1. Consistent Episode Numbering”Episode 1, 2, 3, ... (sequential)✅ Makes chronology clear✅ Easy to reference❌ Don't skip numbers2. SEO-Friendly Descriptions
Section titled “2. SEO-Friendly Descriptions”✅ "In this episode, we explore Ethereum scaling solutions with Vitalik Buterin..."❌ "Great episode! Listen now!"- Be specific and descriptive
- Include guest names
- Include key topics
- 150-300 characters ideal
3. High-Quality Images
Section titled “3. High-Quality Images”Cover Images:
- 3000x3000px recommended
- Square aspect ratio
- JPG or PNG format
- Under 2MB file size
Guest Photos:
- 800x800px minimum
- Square aspect ratio
- Professional headshots
- Consistent style across guests
4. Complete Platform Links
Section titled “4. Complete Platform Links”Add all platform links:
✅ Spotify URL✅ Apple Podcasts URL✅ YouTube URL (if video)✅ RSS Feed URLMore links = better distribution!
5. Rich Show Notes
Section titled “5. Rich Show Notes”Use block content for formatted show notes:
✅ Use headings for structure✅ Add timestamps (00:15:30 - Topic discussion)✅ Include links to resources✅ Format with bold/italic for emphasis❌ Don't paste plain textContent Organization
Section titled “Content Organization”Filtering
Section titled “Filtering”Filter episodes in Studio:
- Click “Episode” in sidebar
- Use search bar to find episodes
- Use filter dropdown to filter by:
- Featured
- Has transcript
- Date range
Sorting
Section titled “Sorting”Sort by:
- Episode Number (default)
- Publish Date
- Last Modified
Searching
Section titled “Searching”Global search:
- Press Cmd+K (Mac) or Ctrl+K (Windows/Linux)
- Type search query
- Results show across all document types
Document Status
Section titled “Document Status”Changes not yet published:
📝 Draft badge visible↓Make changes, click "Publish" when readyPublished
Section titled “Published”Live content:
✅ Published badge↓Changes require new "Publish" clickChanged
Section titled “Changed”Published document with unpublished changes:
⚠️ Changes badge↓Click "Publish" to make changes liveKeyboard Shortcuts
Section titled “Keyboard Shortcuts”Global
Section titled “Global”- Cmd/Ctrl + K - Global search
- Cmd/Ctrl + S - Save changes
- Cmd/Ctrl + Shift + P - Publish
- Esc - Close dialog/panel
In Editor
Section titled “In Editor”- Cmd/Ctrl + B - Bold text
- Cmd/Ctrl + I - Italic text
- Cmd/Ctrl + K - Add link
Troubleshooting
Section titled “Troubleshooting”Can’t find “Publish” button
Section titled “Can’t find “Publish” button”Check top-right corner:
[Cancel] [Publish] ← Top right of editorChanges not appearing on website
Section titled “Changes not appearing on website”- Check document is Published (not just saved)
- Rebuild website:
Terminal window npm run build - Clear browser cache
- Check build logs for errors
Image not uploading
Section titled “Image not uploading”Check file size:
- Maximum: ~50MB per file
- Recommended: Under 5MB
Compress large images before upload.
Reference not showing
Section titled “Reference not showing”Check referenced document exists and is published:
- Click reference field
- If empty list, create referenced document first
- Example: Create Guest before adding to Episode
Related
Section titled “Related”- Schemas - Understand schema structure
- Setup - Initial configuration
- Sanity Helpers - Fetch content in code
Next Steps
Section titled “Next Steps”- Theme Configuration - Customize visual theme
- Homepage Configuration - Configure homepage
- About Page Configuration - Configure about page