hacker-podcast
AgentFree一个基于 AI 的 Hacker News 中文播客项目,每天自动抓取 Hacker News 热门文章,通过 AI 生成中文总结并转换为播客内容。
Capabilities12 decomposed
scheduled hacker-news content scraping with cron-triggered workflows
Medium confidenceAutomatically fetches top stories from Hacker News API on a fixed daily schedule (23:30 UTC) using Cloudflare Workflows' cron trigger system. The scraper extracts article metadata (title, URL, score, comments) and stores raw content in Cloudflare KV for downstream processing. Uses exponential backoff retry logic built into the WorkflowEntrypoint pattern to handle transient failures without manual intervention.
Uses Cloudflare Workflows' native cron trigger with built-in exponential backoff and Durable Objects state management, eliminating the need for external schedulers (cron.io, APScheduler) or message queues. Workflow state is automatically persisted and recoverable on worker restart.
Simpler than Lambda + EventBridge or Airflow because scheduling, retry logic, and state persistence are native to the Cloudflare Workers platform, reducing operational overhead.
dual-host podcast script generation with ai-powered summarization and dialogue synthesis
Medium confidenceConverts scraped Hacker News articles into Chinese-language podcast scripts using @ai-sdk/openai-compatible's generateText function with configurable LLM backends (OpenAI, Anthropic, or compatible APIs). The system generates structured dialogue between two hosts discussing each article, including summaries, key insights, and conversational transitions. Uses prompt engineering to enforce consistent speaker roles and Chinese language output, with fallback handling for API failures.
Uses @ai-sdk/openai-compatible abstraction layer to support multiple LLM providers (OpenAI, Anthropic, Ollama) with identical code paths, enabling cost optimization and provider switching without code changes. Generates structured dialogue with explicit speaker roles rather than monolithic summaries.
More flexible than hardcoded OpenAI integration because it abstracts provider differences; more cost-effective than single-provider solutions because it allows switching to cheaper models (e.g., Ollama locally) without refactoring.
image lightbox and media gallery for episode cover art and related visuals
Medium confidenceImplements a lightbox component for displaying and navigating episode cover art and related images using a modal overlay with keyboard navigation (arrow keys, Escape to close). Images are lazy-loaded from Cloudflare R2 CDN and displayed at full resolution with zoom and pan capabilities. The lightbox is triggered by clicking on episode cover art or related images and supports touch gestures on mobile (swipe to navigate).
Implements a custom lightbox component without external libraries, reducing bundle size and enabling tight integration with the Cloudflare R2 CDN. Supports both keyboard and touch navigation for accessibility across devices.
Lighter than Lightbox.js or Photoswipe because it's custom-built for this project; more accessible than generic image links because it includes keyboard navigation and ARIA labels.
environment-based configuration management for multi-environment deployment
Medium confidenceManages application configuration (API keys, provider selection, feature flags) through environment variables loaded from .env files and Cloudflare Workers secrets. Supports separate configurations for development (local), staging, and production environments without code changes. Configuration is validated at startup using TypeScript types, ensuring type safety and preventing runtime errors from missing or invalid settings. Implements fallback defaults for optional settings (e.g., TTS provider defaults to Edge TTS if not specified).
Uses TypeScript type definitions to validate configuration at startup, catching missing or invalid settings before runtime. Supports both .env files (development) and Cloudflare Workers secrets (production) with identical code paths.
More type-safe than string-based environment variables because TypeScript enforces schema validation; simpler than external config services (Consul, etcd) because configuration is native to Cloudflare Workers.
multi-provider text-to-speech conversion with configurable voice synthesis
Medium confidenceConverts podcast scripts into audio using pluggable TTS providers: Edge TTS (free, Microsoft-backed), Minimax HTTP API (Chinese-optimized), and Murf HTTP API (high-quality voices). Each provider is abstracted behind a common interface that accepts speaker-tagged script segments and returns per-speaker audio buffers. The system selects providers based on configuration and handles provider-specific audio format conversions (MP3, WAV, etc.) transparently.
Abstracts three distinct TTS providers (Edge TTS, Minimax, Murf) behind a unified interface, allowing runtime provider selection and fallback without code changes. Handles provider-specific quirks (API formats, audio codecs, language support) transparently in adapter classes.
More flexible than single-provider TTS (e.g., Google Cloud TTS only) because it enables cost optimization (free Edge TTS for testing, premium Minimax for production) and avoids vendor lock-in; better Chinese support than generic English-first TTS services.
ffmpeg-based audio merging and mp3 encoding in browser runtime
Medium confidenceMerges per-speaker audio segments into a single podcast episode using FFmpeg.js, a JavaScript port of FFmpeg compiled to WebAssembly. Runs entirely within the Cloudflare Worker browser runtime (no external FFmpeg binary required), concatenating speaker audio buffers with silence padding between segments and encoding the final output as MP3. Handles audio format normalization (sample rate, channels) and metadata embedding (ID3 tags with episode title, artist, date).
Uses FFmpeg.js (WebAssembly-compiled FFmpeg) running inside Cloudflare Workers to perform audio merging without external services or infrastructure. Eliminates the need for Lambda layers, ECS tasks, or dedicated audio processing servers by leveraging the worker's browser-like runtime.
Simpler than AWS Lambda + FFmpeg layer because no infrastructure provisioning is needed; cheaper than Mux or Cloudinary because no per-minute billing; more deterministic than shell-based FFmpeg because behavior is identical across all worker instances.
cloudflare kv and r2 storage with automatic episode persistence and retrieval
Medium confidenceStores generated podcast episodes in a two-tier storage system: Cloudflare KV holds episode metadata (title, date, summary, speaker names) as JSON documents with TTL-based expiration, while Cloudflare R2 (S3-compatible object storage) persists the final MP3 audio files with public CDN URLs. The system implements a caching layer in KV to avoid repeated metadata lookups and uses R2's built-in versioning for episode rollback. Metadata keys follow a date-based naming scheme (YYYY-MM-DD) for efficient pagination and retrieval.
Combines Cloudflare KV (for fast metadata caching) and R2 (for durable audio storage) in a single unified namespace, eliminating the need for external databases or S3 buckets. Uses date-based key naming (YYYY-MM-DD) to enable efficient pagination and chronological episode discovery without secondary indexes.
Cheaper than DynamoDB + S3 because Cloudflare's pricing is simpler (no per-request charges); faster than PostgreSQL for metadata lookups because KV is globally distributed; simpler than managing separate databases because both metadata and audio are in the same Cloudflare account.
rss feed generation with podcast-compatible metadata and multi-platform distribution
Medium confidenceGenerates a standards-compliant RSS 2.0 feed with podcast-specific extensions (iTunes, Podtrac, Spotify) that enables distribution to Apple Podcasts, Spotify, YouTube, and 小宇宙 (Chinese podcast platform). The feed is dynamically generated from KV metadata on each request, including episode title, description, audio URL, publication date, and cover art. Implements caching headers (ETag, Cache-Control) to reduce regeneration overhead and uses RSS validation to ensure compatibility with podcast aggregators.
Dynamically generates RSS feeds from Cloudflare KV metadata on each request rather than pre-generating static files, enabling real-time episode updates without rebuild cycles. Includes platform-specific metadata extensions (iTunes, Podtrac, Spotify) in a single feed to support simultaneous distribution to multiple podcast platforms.
More flexible than static RSS generation because episodes are published immediately without rebuild; simpler than external RSS services (Transistor, Podbean) because feed generation is native to the worker; supports more platforms than generic RSS because it includes iTunes, Spotify, and Chinese-specific extensions.
paginated episode listing with date-based navigation and metadata display
Medium confidenceRenders a paginated homepage displaying podcast episodes in reverse chronological order (newest first) using Next.js App Router and React 19 components. Fetches episode metadata from Cloudflare KV in batches (e.g., 10 episodes per page) and implements client-side pagination controls with URL-based state (query parameters for page number). Each episode card displays title, publication date, summary, speaker names, and a link to the full episode page. Uses Tailwind CSS 4 and shadcn/ui components for responsive design.
Implements pagination using Next.js App Router's URL-based state management combined with Cloudflare KV's date-based key naming scheme, enabling efficient chronological episode discovery without database queries. Uses shadcn/ui components for consistent design and accessibility.
More efficient than loading all episodes at once because it fetches only the current page; more user-friendly than offset-based pagination because URL-based state allows bookmarking and sharing; simpler than implementing search because pagination covers most discovery needs for growing libraries.
per-episode detail page with full metadata, audio player, and related content
Medium confidenceRenders a dedicated page for each podcast episode (route: /episode/[date]) displaying full episode metadata (title, publication date, summary, speaker names), an embedded audio player powered by @vidstack/react, and related content links (original Hacker News articles, speaker bios). The page is server-side rendered using Next.js dynamic routes with date-based parameters, fetching episode data from Cloudflare KV and audio URL from R2. Implements Open Graph metadata for social sharing and structured data (JSON-LD) for search engine indexing.
Uses Next.js dynamic routes with date-based parameters ([date]) to generate unique, SEO-friendly URLs for each episode without pre-building static pages. Combines server-side rendering with Cloudflare KV lookups to fetch episode metadata on-demand, enabling real-time episode publishing without rebuild cycles.
More flexible than static site generation because episodes are published immediately; more SEO-friendly than client-side rendering because metadata is server-rendered; simpler than managing separate episode pages because routing is automatic based on date parameter.
workflow orchestration with automatic retry, exponential backoff, and state persistence
Medium confidenceImplements a HackerNewsWorkflow class extending Cloudflare Workflows' WorkflowEntrypoint, orchestrating the entire content pipeline (scrape → summarize → TTS → merge → store) as a sequence of steps with built-in error handling. Each step is idempotent and can be retried independently with exponential backoff (1s, 2s, 4s, 8s, etc.). Workflow state is persisted in Cloudflare Durable Objects, enabling recovery from transient failures without restarting the entire pipeline. Implements structured logging at each step for debugging and monitoring.
Uses Cloudflare Workflows' native WorkflowEntrypoint pattern with Durable Objects for state persistence, providing built-in retry logic and failure recovery without external orchestration tools. Each step is independently retryable with exponential backoff, enabling resilient multi-step pipelines within a single worker.
Simpler than AWS Step Functions because no separate service configuration is needed; more reliable than shell scripts with manual retry logic because retries are automatic and state is persisted; cheaper than Temporal or Airflow because orchestration is native to Cloudflare Workers.
responsive web ui with theme switching, internationalization, and command menu
Medium confidenceBuilds a modern podcast web interface using React 19, Tailwind CSS 4, and shadcn/ui components with support for light/dark theme switching (stored in localStorage), multi-language support (English and Chinese via i18n configuration), and a command menu (Cmd+K) for quick navigation. The UI is fully responsive, adapting to mobile, tablet, and desktop viewports. Uses Next.js App Router for server-side rendering and client-side hydration, with Cloudflare Workers as the edge runtime.
Combines React 19, Tailwind CSS 4, and shadcn/ui to build a modern, accessible UI with built-in theme switching and multi-language support. Uses Next.js App Router with Cloudflare Workers edge runtime to enable server-side rendering without traditional infrastructure.
More modern than Bootstrap or Material UI because Tailwind CSS provides fine-grained styling control; more accessible than custom CSS because shadcn/ui components follow WCAG guidelines; simpler than separate language builds because i18n is integrated into the component layer.
Capabilities are decomposed by AI analysis. Each maps to specific user intents and improves with match feedback.
Related Artifactssharing capabilities
Artifacts that share capabilities with hacker-podcast, ranked by overlap. Discovered automatically through the match graph.
podcast.ai
A podcast that is entirely generated by artificial intelligence, powered by Play.ht text-to-voice...
podcast.ai
A podcast that is entirely generated by artificial intelligence, powered by Play.ht text-to-voice AI.
Zenmic.com
An app to generate podcast eposode ( script + Audio ) using AI.
PodPilot
AI-driven podcast creation, effortless production, seamless platform...
CustomPod.io
Generate daily news podcasts only on the topics you care about.
Recast Studio
AI powered podcast marketing assistant.
Best For
- ✓teams building automated content aggregation services
- ✓developers deploying serverless workflows on Cloudflare Workers
- ✓content creators automating podcast production in non-English languages
- ✓teams building multi-provider LLM applications with fallback support
- ✓podcast platforms with visual content (cover art, speaker photos)
- ✓teams building accessible media galleries on Cloudflare Workers
- ✓teams managing multi-environment deployments on Cloudflare Workers
- ✓developers using TypeScript for configuration validation
Known Limitations
- ⚠Cron trigger is fixed to 23:30 UTC — no dynamic scheduling per user timezone
- ⚠Hacker News API rate limits (~30 requests/min) may throttle if scraping multiple times daily
- ⚠Workflow execution state persists in Cloudflare Durable Objects — no cross-region failover
- ⚠LLM generation latency adds 5-15 seconds per article depending on provider and model size
- ⚠Chinese language quality depends on model training data — may produce awkward phrasing for technical terms
- ⚠No built-in fact-checking — LLM may hallucinate or misinterpret article content
Requirements
Input / Output
UnfragileRank
UnfragileRank is computed from adoption signals, documentation quality, ecosystem connectivity, match graph feedback, and freshness. No artifact can pay for a higher rank.
Repository Details
Last commit: Feb 25, 2026
About
一个基于 AI 的 Hacker News 中文播客项目,每天自动抓取 Hacker News 热门文章,通过 AI 生成中文总结并转换为播客内容。
Categories
Alternatives to hacker-podcast
Are you the builder of hacker-podcast?
Claim this artifact to get a verified badge, access match analytics, see which intents users search for, and manage your listing.
Get the weekly brief
New tools, rising stars, and what's actually worth your time. No spam.
Data Sources
Looking for something else?
Search →