108 lines
2.6 KiB
Markdown
108 lines
2.6 KiB
Markdown
# 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](https://bun.sh/) 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):**
|
||
```bash
|
||
brew install mecab mecab-ipadic
|
||
```
|
||
|
||
**Ubuntu/Debian:**
|
||
```bash
|
||
sudo apt-get update
|
||
sudo apt-get install mecab mecab-ipadic-utf8 libmecab-dev
|
||
```
|
||
|
||
**CentOS/RHEL/Fedora:**
|
||
```bash
|
||
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:
|
||
|
||
```bash
|
||
bun install
|
||
```
|
||
|
||
3. Build the front end:
|
||
|
||
```bash
|
||
bun run build:frontend
|
||
```
|
||
|
||
4. Create a `.env` file and set the following variables:
|
||
|
||
```env
|
||
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:
|
||
|
||
```bash
|
||
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:
|
||
|
||
```bash
|
||
./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](LICENSE).
|