- On-air toggle uploads status.json to BunnyCDN + purges cache, website polls it every 15s to show live ON AIR / OFF AIR badge - Publish script downloads Castopod's copy of audio for CDN upload (byte-exact match), removes broken slug fallback, syncs all episode media to CDN after publishing - Fix f-string syntax error in publish_episode.py (Python <3.12) - Enable CORS on BunnyCDN pull zone for json files - CDN URLs for website OG images, stem recorder bug fixes, LLM token budget tweaks, session context in CLAUDE.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
238 lines
15 KiB
HTML
238 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Luke at the Roost — The call-in talk show where Luke gives life advice to biologically questionable organisms</title>
|
|
<meta name="description" content="Luke at the Roost is a late-night call-in radio show broadcast from a desert hermit's RV, featuring a mix of real callers and AI-generated callers talking to Luke about life, love, and everything in between. Call in live: 208-439-LUKE (208-439-5853). Listen on Spotify, Apple Podcasts, and YouTube.">
|
|
<meta name="keywords" content="Luke at the Roost, podcast, call-in radio show, AI radio, life advice, late night radio, comedy podcast, luke macneil">
|
|
<link rel="canonical" href="https://lukeattheroost.com">
|
|
|
|
<!-- OG / Social -->
|
|
<meta property="og:title" content="Luke at the Roost — Life advice for biologically questionable organisms">
|
|
<meta property="og:description" content="The call-in talk show where Luke gives life advice to biologically questionable organisms — from a desert hermit's RV. Call in: 208-439-LUKE.">
|
|
<meta property="og:image" content="https://cdn.lukeattheroost.com/media/podcasts/LukeAtTheRoost/cover_feed.png?v=3">
|
|
<meta property="og:url" content="https://lukeattheroost.com">
|
|
<meta property="og:type" content="website">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Luke at the Roost">
|
|
<meta name="twitter:description" content="The call-in talk show where Luke gives life advice to biologically questionable organisms. Call in: 208-439-LUKE">
|
|
<meta name="twitter:image" content="https://cdn.lukeattheroost.com/media/podcasts/LukeAtTheRoost/cover_feed.png?v=3">
|
|
|
|
<!-- Favicon -->
|
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath d='M32 4c-2 0-4 2-4 5 0 1 .3 2 .8 3C26 13 24 16 24 20c0 2 .5 4 1.5 5.5L22 28c-2 1-4 3-5 6l-3 10c-.5 2 .5 3 2 3h4l1-4 2 4h6l-1-6 3 6h6l-1-6 3 6h4c1.5 0 2.5-1 2-3l-3-10c-1-3-3-5-5-6l-3.5-2.5C35.5 24 36 22 36 20c0-4-2-7-4.8-8 .5-1 .8-2 .8-3 0-3-2-5-4-5z' fill='%23e8791d'/%3E%3Ccircle cx='30' cy='17' r='1.5' fill='%231a1209'/%3E%3Cpath d='M36 15c1-1 3-1 4 0s1 3 0 4' fill='none' stroke='%23cc2222' stroke-width='2' stroke-linecap='round'/%3E%3Cpath d='M28 22c2 1 4 1 6 0' fill='none' stroke='%23e8791d' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E">
|
|
|
|
<link rel="alternate" type="application/rss+xml" title="Luke at the Roost RSS Feed" href="https://podcast.macneilmediagroup.com/@LukeAtTheRoost/feed.xml">
|
|
<link rel="stylesheet" href="css/style.css">
|
|
|
|
<!-- Structured Data -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "PodcastSeries",
|
|
"name": "Luke at the Roost",
|
|
"description": "The call-in talk show where Luke gives life advice to biologically questionable organisms. Broadcast from a desert hermit's RV, featuring a mix of real callers and AI-generated callers.",
|
|
"url": "https://lukeattheroost.com",
|
|
"image": "https://cdn.lukeattheroost.com/media/podcasts/LukeAtTheRoost/cover_feed.png?v=3",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "Luke MacNeil"
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "MacNeil Media Group"
|
|
},
|
|
"genre": "Comedy",
|
|
"inLanguage": "en",
|
|
"webFeed": "https://podcast.macneilmediagroup.com/@LukeAtTheRoost/feed.xml",
|
|
"sameAs": [
|
|
"https://open.spotify.com/show/0ZrpMigG1fo0CCN7F4YmuF",
|
|
"https://podcasts.apple.com/us/podcast/luke-at-the-roost/id1875205848",
|
|
"https://www.youtube.com/watch?v=xryGLifMBTY&list=PLGq4uZyNV1yYH_rcitTTPVysPbC6-7pe-"
|
|
]
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
<!-- Banner -->
|
|
<div class="banner">
|
|
<img src="images/banner.png" alt="Luke at the Roost — ON AIR" class="banner-img">
|
|
</div>
|
|
|
|
<!-- Hero -->
|
|
<section class="hero">
|
|
<div class="hero-inner">
|
|
<img
|
|
class="cover-art"
|
|
src="images/cover.png"
|
|
alt="Luke at the Roost cover art"
|
|
>
|
|
<div class="hero-info">
|
|
<h1>Luke at the Roost</h1>
|
|
<p class="tagline">The call-in talk show where Luke gives life advice to biologically questionable organisms.</p>
|
|
<div class="phone" id="phone-section">
|
|
<div class="on-air-badge" id="on-air-badge">
|
|
<span class="on-air-dot"></span>
|
|
ON AIR
|
|
</div>
|
|
<div class="off-air-badge" id="off-air-badge">
|
|
OFF AIR
|
|
</div>
|
|
<span class="phone-label">Call in live</span>
|
|
<span class="phone-number">208-439-LUKE</span>
|
|
<span class="phone-digits">(208-439-5853)</span>
|
|
</div>
|
|
<div class="subscribe-row">
|
|
<a href="/how-it-works" class="subscribe-btn btn-hiw">
|
|
<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"/></svg>
|
|
How It Works
|
|
</a>
|
|
<a href="https://open.spotify.com/show/0ZrpMigG1fo0CCN7F4YmuF?si=f990713adce84ba4" target="_blank" rel="noopener" class="subscribe-btn btn-spotify">
|
|
<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z"/></svg>
|
|
Spotify
|
|
</a>
|
|
<a href="https://www.youtube.com/watch?v=xryGLifMBTY&list=PLGq4uZyNV1yYH_rcitTTPVysPbC6-7pe-" target="_blank" rel="noopener" class="subscribe-btn btn-youtube">
|
|
<svg viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
|
|
YouTube
|
|
</a>
|
|
<a href="https://podcasts.apple.com/us/podcast/luke-at-the-roost/id1875205848" target="_blank" rel="noopener" class="subscribe-btn btn-apple">
|
|
<svg viewBox="0 0 24 24" fill="currentColor"><path d="M5.34 0A5.328 5.328 0 0 0 0 5.34v13.32A5.328 5.328 0 0 0 5.34 24h13.32A5.328 5.328 0 0 0 24 18.66V5.34A5.328 5.328 0 0 0 18.66 0zm6.525 2.568c2.336 0 4.448.902 4.448 3.545 0 1.497-.89 2.67-1.916 3.545-.663.566-.795 .84-.795 1.347 0 .6.397 1.173.894 1.722 1.417 1.564 1.96 2.853 1.96 4.448 0 3.063-2.673 4.257-5.165 4.257-.315 0-.658-.02-.994-.063-1.523-.195-2.86-.9-3.632-.9-.82 0-1.98.623-3.377.87A5.715 5.715 0 0 1 3.15 21.4c-1.27 0-2.1-.96-2.1-2.663 0-1.2.6-2.7 1.845-4.29.63-.81 1.62-1.83 2.91-2.31-.06-.6-.09-1.14-.09-1.62 0-4.28 2.76-7.95 6.15-7.95z"/></svg>
|
|
Apple
|
|
</a>
|
|
<a href="https://podcast.macneilmediagroup.com/@LukeAtTheRoost/feed.xml" target="_blank" rel="noopener" class="subscribe-btn btn-rss">
|
|
<svg viewBox="0 0 24 24" fill="currentColor"><path d="M6.503 20.752c0 1.794-1.456 3.248-3.251 3.248S0 22.546 0 20.752s1.456-3.248 3.252-3.248 3.251 1.454 3.251 3.248zM.002 9.473v4.594c5.508.163 9.929 4.584 10.092 10.091h4.594C14.524 16.21 7.849 9.636.002 9.473zM.006 0v4.604C10.81 4.77 19.23 13.19 19.396 24h4.604C23.834 10.952 13.054.166.006 0z"/></svg>
|
|
RSS
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Testimonials -->
|
|
<section class="testimonials-section">
|
|
<h2>What Callers Are Saying</h2>
|
|
<div class="testimonials-slider" id="testimonials-slider">
|
|
<div class="testimonials-track" id="testimonials-track">
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★★</div>
|
|
<p class="testimonial-text">"I called in at 2 AM about my neighbor's rooster situation and Luke talked me off the ledge. Literally saved my relationship with the entire block. My wife thinks I'm crazy for calling a radio show but hey, it worked."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Tony M.</span>
|
|
<span class="testimonial-location">Lordsburg, NM</span>
|
|
</div>
|
|
</div></div>
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★★</div>
|
|
<p class="testimonial-text">"Called to talk about the Severance finale and ended up getting life advice I didn't know I needed. Luke somehow connected Lumon Industries to my actual job and I quit the next week. Best decision I ever made."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Carmen R.</span>
|
|
<span class="testimonial-location">Deming, NM</span>
|
|
</div>
|
|
</div></div>
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★★</div>
|
|
<p class="testimonial-text">"I've been listening since episode one. Called in about my truck breaking down outside Animas and Luke spent twenty minutes just talking me through it. Turns out it was the alternator AND my attitude. He was right about both."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Dale W.</span>
|
|
<span class="testimonial-location">Animas, NM</span>
|
|
</div>
|
|
</div></div>
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★☆</div>
|
|
<p class="testimonial-text">"I called in to ask about astrophotography tips and somehow ended up telling Luke about my divorce. He's got this way of getting you to open up. Still shooting the Milky Way every clear night though. Thanks Luke."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Jessie K.</span>
|
|
<span class="testimonial-location">Silver City, NM</span>
|
|
</div>
|
|
</div></div>
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★★</div>
|
|
<p class="testimonial-text">"My buddy dared me to call in and I ended up having the most real conversation I've had in years. We talked about The Wire for like ten minutes and then he hit me with some truth about why I keep ghosting people. This show is something else."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Marcus T.</span>
|
|
<span class="testimonial-location">Las Cruces, NM</span>
|
|
</div>
|
|
</div></div>
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★★</div>
|
|
<p class="testimonial-text">"I work night shifts at the mine and this show keeps me sane. Finally called in about a thing with my sister and Luke gave me advice that actually made sense. We're talking again for the first time in three years."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Ray D.</span>
|
|
<span class="testimonial-location">Tyrone, NM</span>
|
|
</div>
|
|
</div></div>
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★★</div>
|
|
<p class="testimonial-text">"Called about my poker game falling apart because my best friend cheated. Luke compared it to a Breaking Bad episode and somehow made me see the whole situation differently. We play again every Thursday now."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Elena S.</span>
|
|
<span class="testimonial-location">Hachita, NM</span>
|
|
</div>
|
|
</div></div>
|
|
<div class="testimonial-card"><div class="testimonial-inner">
|
|
<div class="testimonial-stars">★★★★☆</div>
|
|
<p class="testimonial-text">"I was just gonna ask about quantum entanglement because I read this article, but Luke turned it into a metaphor for my long distance relationship and honestly? He wasn't wrong. We're moving in together next month."</p>
|
|
<div class="testimonial-author">
|
|
<span class="testimonial-name">Priya N.</span>
|
|
<span class="testimonial-location">Tucson, AZ</span>
|
|
</div>
|
|
</div></div>
|
|
</div>
|
|
</div>
|
|
<div class="testimonials-dots" id="testimonials-dots"></div>
|
|
</section>
|
|
|
|
<!-- Episodes -->
|
|
<section class="episodes-section">
|
|
<h2>Episodes</h2>
|
|
<div class="episodes-list" id="episodes-list">
|
|
<div class="episodes-loading">Loading episodes...</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Footer -->
|
|
<footer class="footer">
|
|
<div class="footer-links">
|
|
<a href="/how-it-works">How It Works</a>
|
|
<a href="https://open.spotify.com/show/0ZrpMigG1fo0CCN7F4YmuF?si=f990713adce84ba4" target="_blank" rel="noopener">Spotify</a>
|
|
<a href="https://www.youtube.com/watch?v=xryGLifMBTY&list=PLGq4uZyNV1yYH_rcitTTPVysPbC6-7pe-" target="_blank" rel="noopener">YouTube</a>
|
|
<a href="https://podcast.macneilmediagroup.com/@LukeAtTheRoost/feed.xml" target="_blank" rel="noopener">RSS</a>
|
|
</div>
|
|
<div class="footer-projects">
|
|
<span class="footer-projects-label">More from Luke</span>
|
|
<div class="footer-projects-links">
|
|
<a href="https://macneilmediagroup.com" target="_blank" rel="noopener">MacNeil Media Group</a>
|
|
<a href="https://prints.macneilmediagroup.com" target="_blank" rel="noopener">Photography Prints</a>
|
|
<a href="https://youtube.com/lukemacneil" target="_blank" rel="noopener">YouTube</a>
|
|
</div>
|
|
</div>
|
|
<p class="footer-contact">Sales & Collaboration: <a href="mailto:luke@macneilmediagroup.com">luke@macneilmediagroup.com</a></p>
|
|
<p>© 2026 Luke at the Roost</p>
|
|
</footer>
|
|
|
|
<!-- Sticky Audio Player -->
|
|
<div class="sticky-player" id="sticky-player">
|
|
<div class="player-inner">
|
|
<button class="player-play-btn" id="player-play-btn" aria-label="Play/Pause">
|
|
<svg class="icon-play" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>
|
|
<svg class="icon-pause" viewBox="0 0 24 24" style="display:none"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/></svg>
|
|
</button>
|
|
<div class="player-info">
|
|
<div class="player-title" id="player-title">—</div>
|
|
<div class="player-progress-row">
|
|
<div class="player-progress" id="player-progress">
|
|
<div class="player-progress-fill" id="player-progress-fill"></div>
|
|
</div>
|
|
<span class="player-time" id="player-time">0:00 / 0:00</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<audio id="audio-element" preload="none"></audio>
|
|
|
|
<script src="js/app.js"></script>
|
|
</body>
|
|
</html>
|