Satsuki Akiba ba3cc41e34
Some checks failed
CI / lint-and-test (push) Failing after 1m41s
CI / docker-test (push) Has been skipped
CI / security-scan (push) Has been skipped
Build and Publish Docker Images / build (push) Failing after 1m55s
Update
2025-06-13 17:12:32 +09:00
2025-06-12 09:35:04 +09:00
2025-06-11 23:03:40 +09:00
Fix
2025-06-12 06:16:38 +09:00
2025-06-11 23:05:27 +09:00
2025-06-13 17:12:32 +09:00
2025-06-11 23:03:40 +09:00
2025-06-08 16:24:09 +09:00
2025-06-08 22:15:02 +09:00
2025-06-11 23:03:40 +09:00
2025-06-08 15:21:58 +09:00
2025-06-12 09:00:16 +09:00
2025-06-12 09:00:16 +09:00
2025-06-08 15:21:58 +09:00
2025-06-12 08:35:37 +09:00
2025-06-12 09:00:16 +09:00
2025-06-12 08:45:27 +09:00
2025-06-11 23:03:40 +09:00

Voice RSS Summary

Voice RSS Summary automatically collects RSS feeds, summarizes new articles using OpenAI, and publishes them as a podcast with speech synthesized by VOICEVOX. The project uses the Bun runtime with a React (Vite) front end and an SQLite database.

Features

  • Fetch multiple RSS feeds listed in feed_urls.txt.
  • Generate podcast scripts with the OpenAI API.
  • Convert scripts to audio using VOICEVOX and FFmpeg.
  • Serve a web interface to browse feeds and play episodes.
  • Provide a podcast RSS feed at /podcast.xml.

Prerequisites

  • Bun 1.x (if running locally)
  • VOICEVOX engine
  • An OpenAI API key
  • MeCab (for English to Katakana conversion)

Installation

  1. Install MeCab (for English to Katakana conversion):

    macOS (using Homebrew):

    brew install mecab mecab-ipadic
    

    Ubuntu/Debian:

    sudo apt-get update
    sudo apt-get install mecab mecab-ipadic-utf8 libmecab-dev
    

    CentOS/RHEL/Fedora:

    sudo yum install mecab mecab-ipadic mecab-devel
    # or for newer versions:
    sudo dnf install mecab mecab-ipadic mecab-devel
    

    Manual installation: See the setup script: scripts/setup-mecab.sh

  2. Install dependencies:

    bun install
    
  3. Build the front end:

    bun run build:frontend
    
  4. Create a .env file and set the following variables:

    OPENAI_API_KEY=your-api-key
    OPENAI_API_ENDPOINT=https://api.openai.com/v1
    OPENAI_MODEL_NAME=gpt-4o-mini
    VOICEVOX_HOST=http://localhost:50021
    VOICEVOX_STYLE_ID=0
    PODCAST_TITLE=Voice RSS Summary
    PODCAST_LINK=https://your-domain.com/podcast
    PODCAST_DESCRIPTION=Generated podcast feed
    PODCAST_LANGUAGE=ja
    PODCAST_AUTHOR=Admin
    PODCAST_CATEGORIES=Technology
    PODCAST_TTL=60
    PODCAST_BASE_URL=https://your-domain.com
    FEED_URLS_FILE=feed_urls.txt
    
  5. Prepare feed_urls.txt with one RSS feed URL per line.

  6. Start the server:

    bun run server.ts
    

The initial batch process runs on start and then every 24 hours.

Docker

A Dockerfile and helper scripts are provided. To run in a container:

./build-docker-image.sh
./run-docker.sh

These scripts mount feed_urls.txt, .env, public/, and data/ for persistence.

Directories

  • data/ SQLite database (podcast.db)
  • public/podcast_audio/ generated MP3 files
  • frontend/ Vite React application (served on build)

Access the web UI and podcast feed on http://localhost:3000/ after the server starts.

License

This project is licensed under the Apache 2.0 License.

Description
No description provided
Readme Apache-2.0 516 KiB
Languages
TypeScript 91.8%
CSS 4.6%
Shell 2.8%
Dockerfile 0.5%
JavaScript 0.2%
Other 0.1%