selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

FeedCraft logo

Self-host FeedCraft

v3.2.0

RSS middleware with AI translation and full-text extraction

ReleaseOpen SourceGPL-3.0
Updated6 days ago
LanguageGo
Setup difficultyModerate
ThemeDark mode
Stars
313
Port
80 (HTTP web interface and API)
Requires
Redis
Docker
ghcr.io/colin-xkl/feed-craft
Install with Docker Compose
Welcome page of FeedCraft admin dashboardRSS feed comparison tool showing before/after processingCustom AtomCraft prompt creation interfaceCustom recipe configuration binding AtomCraft to RSS source

What is FeedCraft?

FeedCraft is a self-hosted RSS feed processing middleware that sits between your RSS sources and your reader. It extracts full article text (including JavaScript-rendered pages via a headless browser), translates titles and content using OpenAI-compatible LLMs, generates AI summaries and introductions, filters out advertorials, and limits feed length. It also includes a visual RSS generator that converts web pages, JSON APIs, or search queries into RSS feeds. You run it via Docker Compose with Redis for caching and optionally Browserless or CloakBrowser for browser-based extraction. The admin dashboard (default admin/adminadmin) lets you create custom AtomCrafts, FlowCrafts, and Recipes. The project is licensed under GPL-3.0 and actively maintained.

Should you self-host FeedCraft?

FeedCraft scores 49/100 on selfhost.directory (how scoring works) and ranks #32 of 85 in Feed Reader. It has 313 GitHub stars.

It shipped 3 stable releases in the past year. The latest, v3.2.0, came out on 30 August 2026. New versions land roughly every 4 months.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is GPL-3.0-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is RSSHub (85/100, 46 704 stars). It scores higher overall, so compare the two before you pick. See FeedCraft vs RSSHub side by side.

Features

  • Admin DashboardDefault credentials admin/adminadmin
  • AI content filtering
  • AI Summarization
  • AI Translation
  • Custom AtomCrafts and FlowCrafts
  • Dock mode (advanced)
  • Feed comparison tool
  • Full-Text Extractionfulltext-plus requires Browserless or CloakBrowser
  • HTML/JSON/Search to RSS generator
  • Multi-model LLM support
  • Portable mode
  • Recipe system
  • RSS feed middleware
  • RSS viewer and debug tools

FeedCraft README

How to install FeedCraft

Install FeedCraft with Docker Compose

Docker and Docker Compose
Environment variables
FC_BROWSER_PROVIDER, FC_BROWSER_ENDPOINT, FC_REDIS_URI, FC_LLM_API_KEY, FC_LLM_API_MODEL, FC_LLM_API_BASE, FC_LLM_API_TYPE, FC_DEFAULT_TARGET_LANG, LOG_LEVEL, and more

version: "3" services: app.feed-craft: image: ghcr.io/colin-xkl/feed-craft container_name: feed-craft restart: always ports: - "10088:80" volumes: - ./feed-craft-db:/usr/local/feed-craft/db environment: FC_REDIS_URI: redis://service.redis:6379/ FC_LLM_API_KEY: skxxxxxx FC_LLM_API_MODEL: gemini-pro FC_LLM_API_BASE: https://xxxxxx depends_on: - service.redis

service.redis: image: redis:6-alpine container_name: feedcraft_redis restart: always

Minimal deployment; add Browserless or CloakBrowser for fulltext-plus and Enhanced Mode

How to configure FeedCraft

  • FC_BROWSER_ENDPOINTEndpoint of the selected browser provider. Required for fulltext-plus and HTML-to-RSS Enhanced Mode.

    Endpoint of the selected browser provider. Required for fulltext-plus and HTML-to-RSS Enhanced Mode.

  • FC_BROWSER_MAX_CONCURRENCY2Global max concurrent browser render jobs (default: 2). Prevents fulltext-plus from opening too many Chrome sessions at once.

    Global max concurrent browser render jobs (default: 2). Prevents fulltext-plus from opening too many Chrome sessions at once.

  • FC_BROWSER_PROVIDERBrowser rendering provider. Supported values: browserless-restful (Browserless REST /content) and cdp (Chrome DevTools Protocol, such as CloakBrowser cloakserve).

    Browser rendering provider. Supported values: browserless-restful (Browserless REST /content) and cdp (Chrome DevTools Protocol, such as CloakBrowser cloakserve).

    values: browserless-restful, cdp

  • FC_BROWSER_TIMEOUT60sTimeout for a single browser render. Accepts Go duration (60s) or milliseconds (60000). Default: 60s.

    Timeout for a single browser render. Accepts Go duration (60s) or milliseconds (60000). Default: 60s.

  • FC_DEFAULT_TARGET_LANGLLM processing tasks default target language, e.g., zh-CN, en-US.

    LLM processing tasks default target language, e.g., zh-CN, en-US.

  • FC_DOMAIN_MAX_CONCURRENCY3Maximum concurrent requests per target domain during web scraping like fulltext extraction (default: 3).

    Maximum concurrent requests per target domain during web scraping like fulltext extraction (default: 3).

  • FC_HTTP_USER_AGENT_FEEDDefault User-Agent for feed-style outbound requests, such as fetching RSS/XML resources.

    Default User-Agent for feed-style outbound requests, such as fetching RSS/XML resources.

  • FC_HTTP_USER_AGENT_HTMLDefault User-Agent for HTML page fetches, such as fulltext extraction and the HTML-to-RSS tooling.

    Default User-Agent for HTML page fetches, such as fulltext extraction and the HTML-to-RSS tooling.

  • FC_LLM_API_BASEAPI endpoint address. For OpenAI-compatible APIs, usually ends with /v1.

    API endpoint address. For OpenAI-compatible APIs, usually ends with /v1.

  • FC_LLM_API_KEYAPI Key for OpenAI or compatible services (like DeepSeek, Gemini, etc.).

    API Key for OpenAI or compatible services (like DeepSeek, Gemini, etc.).

  • FC_LLM_API_MODELDefault model to use (e.g., gemini-pro, gpt-3.5-turbo). Multiple models supported as comma-separated list.

    Default model to use (e.g., gemini-pro, gpt-3.5-turbo). Multiple models supported as comma-separated list.

  • FC_LLM_API_TYPEopenaiopenai (default) or ollama.

    openai (default) or ollama.

    values: openai, ollama

  • FC_LLM_MAX_CONCURRENCY3Maximum number of LLM API requests executing across the entire FeedCraft process (default: 3).

    Maximum number of LLM API requests executing across the entire FeedCraft process (default: 3).

  • FC_PREHEATING_MAX_CONCURRENCY2Maximum concurrent background preheating tasks (default: 2).

    Maximum concurrent background preheating tasks (default: 2).

  • FC_PREHEATING_QUEUE_SIZEMaximum pending preheating tasks; defaults to the preheating concurrency.

    Maximum pending preheating tasks; defaults to the preheating concurrency.

  • FC_PREHEATING_TASK_TIMEOUT10mTimeout for each preheating task as a Go duration such as 5m (default: 10m).

    Timeout for each preheating task as a Go duration such as 5m (default: 10m).

  • FC_PUPPETEER_HTTP_ENDPOINTLegacy Browserless endpoint alias. Still supported when FC_BROWSER_ENDPOINT is empty.

    Legacy Browserless endpoint alias. Still supported when FC_BROWSER_ENDPOINT is empty.

  • FC_REDIS_URIRedis connection address. Used for caching to speed up processing and reduce AI token consumption.

    Redis connection address. Used for caching to speed up processing and reduce AI token consumption.

  • LOG_LEVELLog level for the backend application (e.g., info, debug, trace).

    Log level for the backend application (e.g., info, debug, trace).

    values: info, debug, trace

FeedCraft releases & version history

More in RSS

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…