AI-powered RSS reader, deployable to GitHub Pages or with Docker
---
## π± Lightweight, Smart, Made for You
- πͺΆ **No Bloat**: Say goodbye to forced logins and app downloads, a responsive static page for all your feed needs
- π€ **Efficiency First**: AI automatically generates article summaries, helping you grasp key points
- βοΈ **Customizable**: Full control over RSS sources and AI configuration
- π **Deploy Freely**: Zero-cost deployment to GitHub Pages or Docker
## β¨ Features
- **Aggregation & Summaries**: Integrate multi-source RSS feeds with LLM-powered automatic summaries
- **Auto Updates**: Keep content fresh via GitHub Actions / Cron jobs
- **Flexible Deployment**: Zero-cost static hosting on GitHub Pages / Self-hosted with Docker
- **Modern Experience**: Responsive design with light/dark themes
---
**This project is powered by [Alibaba Cloud ESA](https://www.aliyun.com/product/esa?spm=a2c22.12281978.0.0.6fb27f3bHEvaBX) for acceleration, computing, and protection**
---
## π Deployment
### Method 1: GitHub Pages Deployment
This project uses GitHub Actions for automatic deployment to GitHub Pages, with a single workflow handling both data updates and website deployment.
1. **Fork or Clone the Repository** to your GitHub account
2. **Set GitHub Secrets**
Add the following secrets in your project's Settings - Secrets and variables: Actions:
- `LLM_API_KEY`: API key for AI summary generation
- `LLM_API_BASE`: API base URL for the LLM service
- `LLM_NAME`: Name of the model to use
- `SUMMARY_LOCALES`: Comma-separated summary locales, defaults to `zh,en`
3. **Enable GitHub Pages**
In repository settings, choose to deploy from GitHub Actions
4. **Manually Trigger the Workflow** (optional)
Manually trigger the "Update Data and Deploy" workflow from the Actions page of your GitHub repository
#### Workflow Description
**Update Data and Deploy** (`update-deploy.yml`):
- Trigger conditions:
- Scheduled execution (every hour)
- Push code
- Manual trigger
- Execution content:
- **Single build process**: Fetch RSS content, generate summaries, and build static website in one go
- **Multi-platform deployment**:
- Automatically deploy to GitHub Pages
- Push build artifacts to `deploy` branch for platforms like Vercel to monitor
#### Custom Deployment Configuration
- **Customize RSS Sources**:
Edit the `src/config/feedme.config.yaml` file to modify or add RSS sources. Category display order follows the `categories` list. Each source should include:
- `id`: stable unique identifier
- `name`: localized names
- `url`: RSS URL
- `category`: source category
- **Modify Update Frequency**: Edit the cron expression in `.github/workflows/update-deploy.yml`
```yml
# For example, change to update once daily at midnight
cron: '0 0 * * *'
```
- **Adjust Default Source and Retained Items**: Modify `settings.defaultSource` and `settings.maxItemsPerFeed` in `src/config/feedme.config.yaml`
- **Customize Summary Generation**:
Adjust the summary prompt, input truncation length, `temperature`, `maxTokens`, and fallback messages in the `summary` section of `src/config/feedme.config.yaml`. Summary output languages are still controlled by `SUMMARY_LOCALES`, for example `zh`, `en`, or `zh,en`. To add another language, add locale metadata in `src/config/i18n-config.ts` and provide matching localized labels/messages.
### Method 2: Vercel Deployment
1. Go to [Vercel Import page](https://vercel.com/import/git), select "GitHub" and authorize access
2. Select your forked FeedMe repository, click "Deploy". Initial deployment failure is expected as the default branch is main
3. Refer to [Deploying Git Repositories with Vercel](https://vercel.com/docs/git#production-branch) to change the production branch to `deploy`, configure to build production branch only, then redeploy
GitHub Actions will automatically push to the `deploy` branch after each build, and Vercel will automatically detect and deploy.
### Method 3: Alibaba Cloud ESA Pages Deployment
1. Go to [Alibaba Cloud ESA Console](https://esa.console.aliyun.com/) and enter Pages service
2. Click "New Application", select "GitHub" and authorize access
3. Select your forked FeedMe repository and configure as follows:
- **Production Branch**: `deploy`
- **Assets Directory**: `.` (a single dot)
- **Install Command**: Leave empty
- **Build Command**: Leave empty
4. Click "Deploy"
GitHub Actions will automatically push to the `deploy` branch after each build, and Alibaba Cloud ESA Pages will automatically detect and deploy. Thanks to Alibaba Cloud ESA's edge acceleration capabilities, the application achieves ultra-fast access speeds globally.
### Method 4: Docker Local Deployment
This method uses Docker to run FeedMe locally or on a server. It utilizes an in-container Cron job for automatic data updates and rebuilds, independent of GitHub Actions.
1. **Clone the Repository**
```bash
git clone https://github.com/Seanium/feedme.git
cd feedme
```
2. **Configure Environment Variables**
Copy the `.env.example` file to `.env` and fill in the necessary API keys:
```bash
cp .env.example .env
```
Edit the `.env` file:
```dotenv
LLM_API_KEY=your_api_key
LLM_API_BASE=LLM_service_api_base_url
LLM_NAME=model_name_to_use
```
3. **Build and Start the Docker Container**
```bash
docker-compose up --build
```
4. **Access the Application**
The application will be available at [http://localhost:3000](http://localhost:3000).
5. **Automatic Updates**
The container will automatically run `pnpm update-feeds` and `pnpm build`, then restart the server based on the schedule in `src/config/crontab-docker` (defaults to every hour).
To modify the update frequency, edit the cron expression in the `src/config/crontab-docker` file (e.g., `0 */6 * * *` for updates every 6 hours).
## π» Development
This project uses Node.js 24 LTS. Use `.nvmrc` or `.node-version` to switch automatically.
1. **Clone the Repository**
```bash
git clone https://github.com/Seanium/feedme.git
cd feedme
```
2. **Install Dependencies**
```bash
pnpm install
```
3. **Configure Environment Variables**
Copy the example environment file and edit it:
```bash
cp .env.example .env
```
Fill in the following content:
```
LLM_API_KEY=your_api_key
LLM_API_BASE=LLM service API base URL (e.g., https://api.siliconflow.cn/v1)
LLM_NAME=model name (e.g., THUDM/GLM-4-9B-0414)
SUMMARY_LOCALES=summary locales (e.g., zh,en)
```
These environment variables are used to configure the article summary generation feature and need to be obtained from an LLM service provider
4. **Update RSS Data**
```bash
pnpm update-feeds
```
This command fetches RSS sources and generates summaries, saving them to the `public/data` directory
5. **Type Check and Build**
```bash
pnpm typecheck
pnpm build
```
6. **Start the Development Server**
```bash
pnpm dev
```
Visit [http://localhost:3000](http://localhost:3000) to view the application
## Star History