<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://vinsonguo.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://vinsonguo.github.io/" rel="alternate" type="text/html" /><updated>2026-09-06T11:17:34+00:00</updated><id>https://vinsonguo.github.io/feed.xml</id><title type="html">Vinson Guo</title><subtitle>Mobile Developer | Android/iOS/Flutter/React Native</subtitle><author><name>Vinson Guo</name></author><entry><title type="html">Build Your RSS Backend for SmartRSS: A Beginner’s Guide to FreshRSS, Miniflux, RSSHub, and RSS-Bridge</title><link href="https://vinsonguo.github.io/build-your-smartrss-backend" rel="alternate" type="text/html" title="Build Your RSS Backend for SmartRSS: A Beginner’s Guide to FreshRSS, Miniflux, RSSHub, and RSS-Bridge" /><published>2025-12-31T00:00:00+00:00</published><updated>2025-12-31T00:00:00+00:00</updated><id>https://vinsonguo.github.io/build-your-smartrss-backend</id><content type="html" xml:base="https://vinsonguo.github.io/build-your-smartrss-backend"><![CDATA[<p>This guide walks you through setting up a self-hosted RSS backend with <strong>FreshRSS</strong>, <strong>Miniflux</strong>, <strong>RSSHub</strong>, and <strong>RSS-Bridge</strong>, even if you’ve never touched a server before. They all work with SmartRSS, so your feeds stay under your control.</p>

<h2 id="why-build-your-own-rss-backend">Why build your own RSS backend?</h2>

<p>You get:</p>

<ul>
  <li>Your feeds sync across all your devices through SmartRSS</li>
  <li>Your reading habits stay on your own server</li>
  <li>No monthly fees beyond the VPS</li>
  <li>No limit on the number of subscriptions</li>
  <li>It’s fast, since it runs on your own infrastructure</li>
</ul>

<h2 id="what-youll-need">What you’ll need</h2>

<ul>
  <li>A VPS (Virtual Private Server) - $5-10/month</li>
  <li>About 30 minutes of your time</li>
  <li>No coding experience required!</li>
</ul>

<h2 id="quick-start-try-official-instances-first">Quick start: try official instances first</h2>

<p>Before setting up your own server, you can try these official demo instances:</p>

<h3 id="official-freshrss-demo">Official FreshRSS demo</h3>

<p><code class="language-plaintext highlighter-rouge">https://demo.freshrss.org/</code></p>

<p>Clean interface, mobile-friendly, good API support. Good for beginners who want a traditional RSS experience.</p>

<h3 id="official-miniflux-demo">Official Miniflux demo</h3>
<p><code class="language-plaintext highlighter-rouge">https://miniflux.app/</code> (offers a free trial)</p>

<p>Modern design, excellent keyboard shortcuts, and a powerful API. Good for power users who want speed and efficiency.</p>

<p>Both demos let you test the services before deciding which one to self-host. Both work with SmartRSS.</p>

<h2 id="step-1-get-your-vps-ready">Step 1: Get your VPS ready</h2>

<h3 id="choosing-and-purchasing-a-vps">Choosing and purchasing a VPS</h3>

<p>RSS hosting doesn’t need much. What I recommend:</p>

<ul>
  <li>Minimum: 1GB RAM, 1 CPU core, 20GB storage</li>
  <li>Comfortable: 2GB RAM, 1 CPU core, 40GB storage</li>
  <li>Cost: $5-10/month</li>
</ul>

<p>Easy providers for beginners:</p>
<ul>
  <li>DigitalOcean: most beginner-friendly, good tutorials</li>
  <li>Linode: excellent performance, good support</li>
  <li>Vultr: simple interface, reliable service</li>
</ul>

<h3 id="deploy-your-server">Deploy your server</h3>

<ol>
  <li>Create an account at your chosen provider</li>
  <li>Click “Create Droplet/Server”</li>
  <li>Choose <strong>Ubuntu 22.04 LTS</strong></li>
  <li>Pick the $5-10/month plan</li>
  <li>Click “Create” and wait 2-3 minutes</li>
  <li>You’ll get an email with your server IP and password!</li>
</ol>

<h2 id="step-2-connect-to-your-server">Step 2: Connect to your server</h2>

<p>Open your terminal (or PowerShell on Windows) and connect:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh root@your_server_ip
</code></pre></div></div>

<p>The first time, you’ll be asked “Are you sure you want to continue connecting?” Type <code class="language-plaintext highlighter-rouge">yes</code> and press Enter.</p>

<p>Then paste the password from your VPS provider’s email. It won’t show on screen as you type, that’s normal.</p>

<h2 id="step-3-install-docker">Step 3: Install Docker</h2>

<p>Just copy and paste this single command:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-fsSL</span> https://get.docker.com | sh
</code></pre></div></div>

<p>This installs Docker and everything it needs. Grab a coffee, it takes 2-3 minutes.</p>

<h3 id="test-the-installation">Test the installation</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker run hello-world
</code></pre></div></div>

<p>If you see “Hello from Docker!”, you’re ready.</p>

<h2 id="step-4-choose-your-rss-services">Step 4: Choose your RSS services</h2>

<p>You’ll pick one main reader. RSSHub and RSS-Bridge are optional extras for generating feeds from sites that don’t have their own:</p>

<h3 id="the-main-rss-reader-pick-one">The main RSS reader (pick one)</h3>

<p>You need one main RSS reader to manage your feeds:</p>

<h4 id="freshrss-the-beginner-friendly-choice">FreshRSS: the beginner-friendly choice</h4>

<p>FreshRSS suits first-time self-hosters, or anyone who wants a traditional, familiar interface and simplicity over advanced features.</p>

<ul>
  <li>Clean, intuitive web interface</li>
  <li>Easy mobile app integration</li>
  <li>Good API support for SmartRSS</li>
  <li>Simple setup and maintenance</li>
  <li>Large community and documentation</li>
</ul>

<p>It uses about 100MB of RAM.</p>

<h4 id="miniflux-the-power-users-choice">Miniflux: the power user’s choice</h4>

<p>Miniflux suits experienced users who want maximum speed, keyboard shortcuts, minimal distraction-free reading, and a modern tech stack.</p>

<ul>
  <li>Very fast</li>
  <li>Excellent keyboard navigation</li>
  <li>Powerful filtering and search</li>
  <li>Modern, responsive design</li>
  <li>Built-in feed fetching optimization</li>
</ul>

<p>It uses about 150MB of RAM including PostgreSQL.</p>

<p>Can’t decide? Start with FreshRSS. It’s easier for beginners, and you can switch later.</p>

<h3 id="optional-rsshub">Optional: RSSHub</h3>

<p>Many modern websites (YouTube, Twitter, Instagram, Telegram, etc.) don’t provide RSS feeds anymore. RSSHub generates feeds for them.</p>

<p>Why you might want it:</p>

<ol>
  <li>Feeds from 400+ platforms</li>
  <li>Social media feeds: YouTube channels, Twitter users, Instagram posts</li>
  <li>Custom feeds from specific websites, filters, or keywords</li>
  <li>Control over feed content, update frequency, and format</li>
  <li>Free and open, no API keys needed</li>
</ol>

<p>Some examples:</p>
<ul>
  <li>Get RSS feeds from your favorite YouTube channels</li>
  <li>Follow Twitter users without using Twitter</li>
  <li>Track Instagram posts from specific accounts</li>
  <li>Monitor Telegram channels</li>
  <li>Create feeds from websites that don’t have RSS</li>
  <li>And hundreds more</li>
</ul>

<p>It uses about 200MB of RAM with Redis.</p>

<p>My recommendation: start without RSSHub. Add it later if you need feeds from social media or non-RSS sites.</p>

<h3 id="optional-rss-bridge">Optional: RSS-Bridge</h3>

<p>RSS-Bridge does the same job as RSSHub: it generates RSS and Atom feeds for websites that don’t provide their own. It runs as a single PHP container, no database or cache needed. You control which bridges are enabled with a whitelist file.</p>

<p>My recommendation: same as RSSHub. Install it only if you need feeds from sites without RSS.</p>

<h2 id="step-5-set-up-your-service">Step 5: Set up your service</h2>

<h3 id="create-the-project-directory">Create the project directory</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> <span class="nt">-p</span> ~/rss-services
<span class="nb">cd</span> ~/rss-services
</code></pre></div></div>

<h3 id="option-a-freshrss-recommended-for-beginners">Option A: FreshRSS (recommended for beginners)</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir </span>freshrss <span class="o">&amp;&amp;</span> <span class="nb">cd </span>freshrss
nano docker-compose.yml
</code></pre></div></div>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">version</span><span class="pi">:</span> <span class="s2">"</span><span class="s">3.8"</span>

<span class="na">services</span><span class="pi">:</span>
  <span class="na">freshrss</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">freshrss/freshrss:latest</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">freshrss</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">8080:80"</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">./freshrss-data:/var/www/FreshRSS/data</span>
      <span class="pi">-</span> <span class="s">./freshrss-extensions:/var/www/FreshRSS/extensions</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">CRON_MIN=*/10</span>
      <span class="pi">-</span> <span class="s">TZ=Asia/Shanghai</span>
</code></pre></div></div>

<p>Change <code class="language-plaintext highlighter-rouge">TZ</code> to your timezone. Save and exit with <code class="language-plaintext highlighter-rouge">Ctrl+X</code>, then <code class="language-plaintext highlighter-rouge">Y</code>, then <code class="language-plaintext highlighter-rouge">Enter</code>.</p>

<h3 id="option-b-miniflux-for-power-users">Option B: Miniflux (for power users)</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/rss-services
<span class="nb">mkdir </span>miniflux <span class="o">&amp;&amp;</span> <span class="nb">cd </span>miniflux
nano docker-compose.yml
</code></pre></div></div>

<p>Copy and paste this configuration:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">version</span><span class="pi">:</span> <span class="s2">"</span><span class="s">3.8"</span>

<span class="na">services</span><span class="pi">:</span>
  <span class="na">miniflux</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">miniflux/miniflux:latest</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">miniflux</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">8081:8080"</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">DATABASE_URL=postgres://miniflux:secret@miniflux-db/miniflux?sslmode=disable</span>
      <span class="pi">-</span> <span class="s">RUN_MIGRATIONS=1</span>
      <span class="pi">-</span> <span class="s">CREATE_ADMIN=1</span>
      <span class="pi">-</span> <span class="s">ADMIN_USERNAME=admin</span>
      <span class="pi">-</span> <span class="s">ADMIN_PASSWORD=changeme</span>
      <span class="pi">-</span> <span class="s">BASE_URL=http://your_server_ip:8081</span>
      <span class="pi">-</span> <span class="s">CLEANUP_FREQUENCY=24</span>
      <span class="pi">-</span> <span class="s">POLLING_FREQUENCY=60</span>
      <span class="pi">-</span> <span class="s">TZ=Asia/Shanghai</span>
    <span class="na">depends_on</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">miniflux-db</span>

  <span class="na">miniflux-db</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">postgres:15</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">miniflux-db</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">POSTGRES_USER=miniflux</span>
      <span class="pi">-</span> <span class="s">POSTGRES_PASSWORD=secret</span>
      <span class="pi">-</span> <span class="s">POSTGRES_DB=miniflux</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">miniflux-db:/var/lib/postgresql/data</span>
    <span class="na">healthcheck</span><span class="pi">:</span>
      <span class="na">test</span><span class="pi">:</span> <span class="pi">[</span><span class="s2">"</span><span class="s">CMD-SHELL"</span><span class="pi">,</span> <span class="s2">"</span><span class="s">pg_isready</span><span class="nv"> </span><span class="s">-U</span><span class="nv"> </span><span class="s">miniflux"</span><span class="pi">]</span>
      <span class="na">interval</span><span class="pi">:</span> <span class="s">10s</span>
      <span class="na">timeout</span><span class="pi">:</span> <span class="s">5s</span>
      <span class="na">retries</span><span class="pi">:</span> <span class="m">5</span>

<span class="na">volumes</span><span class="pi">:</span>
  <span class="na">miniflux-db</span><span class="pi">:</span>
</code></pre></div></div>

<p>Change these to your own values:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">ADMIN_USERNAME</code>: your username</li>
  <li><code class="language-plaintext highlighter-rouge">ADMIN_PASSWORD</code>: a strong password</li>
  <li><code class="language-plaintext highlighter-rouge">BASE_URL</code>: your server IP</li>
  <li><code class="language-plaintext highlighter-rouge">TZ</code>: your timezone</li>
</ul>

<p>Save and exit with <code class="language-plaintext highlighter-rouge">Ctrl+X</code>, then <code class="language-plaintext highlighter-rouge">Y</code>, then <code class="language-plaintext highlighter-rouge">Enter</code>.</p>

<h3 id="option-c-rsshub-optional">Option C: RSSHub (optional)</h3>

<p>Only install RSSHub if you need feeds from social media or non-RSS sites.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/rss-services
<span class="nb">mkdir </span>rsshub <span class="o">&amp;&amp;</span> <span class="nb">cd </span>rsshub
nano docker-compose.yml
</code></pre></div></div>

<p>Copy and paste this configuration:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">version</span><span class="pi">:</span> <span class="s2">"</span><span class="s">3.8"</span>

<span class="na">services</span><span class="pi">:</span>
  <span class="na">rsshub</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">diygod/rsshub:latest</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">rsshub</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">1200:1200"</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="na">NODE_ENV</span><span class="pi">:</span> <span class="s">production</span>
      <span class="na">CACHE_TYPE</span><span class="pi">:</span> <span class="s">redis</span>
      <span class="na">REDIS_URL</span><span class="pi">:</span> <span class="s">redis://rsshub-redis:6379/</span>
    <span class="na">depends_on</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">rsshub-redis</span>

  <span class="na">rsshub-redis</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">redis:alpine</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">rsshub-redis</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">rsshub-redis-data:/data</span>
    <span class="na">command</span><span class="pi">:</span> <span class="s">redis-server --appendonly yes</span>

<span class="na">volumes</span><span class="pi">:</span>
  <span class="na">rsshub-redis-data</span><span class="pi">:</span>
</code></pre></div></div>

<p>Save and exit with <code class="language-plaintext highlighter-rouge">Ctrl+X</code>, then <code class="language-plaintext highlighter-rouge">Y</code>, then <code class="language-plaintext highlighter-rouge">Enter</code>.</p>

<h3 id="option-d-rss-bridge-optional">Option D: RSS-Bridge (optional)</h3>

<p>RSS-Bridge turns websites without RSS into feeds, same idea as RSSHub. Install it only if you need that.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/rss-services
<span class="nb">mkdir </span>rss-bridge <span class="o">&amp;&amp;</span> <span class="nb">cd </span>rss-bridge
nano docker-compose.yml
</code></pre></div></div>

<p>Copy and paste this configuration:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">services</span><span class="pi">:</span>
  <span class="na">rss-bridge</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">rssbridge/rss-bridge:latest</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">rss-bridge</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">3000:80"</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">./whitelist.txt:/app/whitelist.txt:ro</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">RSSBRIDGE_whitelist_file=/app/whitelist.txt</span>
</code></pre></div></div>

<p>Save and exit with <code class="language-plaintext highlighter-rouge">Ctrl+X</code>, then <code class="language-plaintext highlighter-rouge">Y</code>, then <code class="language-plaintext highlighter-rouge">Enter</code>.</p>

<p>Next, create the whitelist file. It decides which bridges are enabled. <code class="language-plaintext highlighter-rouge">*</code> enables all of them:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s1">'*'</span> <span class="o">&gt;</span> whitelist.txt
<span class="nb">cat </span>whitelist.txt
<span class="c"># *</span>
</code></pre></div></div>

<p>If you want to limit the bridges, put bridge names in this file instead, one per line.</p>

<h2 id="step-6-launch-your-services">Step 6: Launch your services</h2>

<p>Navigate to your chosen service directory and start it:</p>

<h3 id="for-freshrss">For FreshRSS:</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/rss-services/freshrss
docker compose up <span class="nt">-d</span>
</code></pre></div></div>

<h3 id="for-miniflux">For Miniflux:</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/rss-services/miniflux
docker compose up <span class="nt">-d</span>
</code></pre></div></div>

<h3 id="for-rsshub-if-installed">For RSSHub (if installed):</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/rss-services/rsshub
docker compose up <span class="nt">-d</span>
</code></pre></div></div>

<h3 id="for-rss-bridge-if-installed">For RSS-Bridge (if installed):</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/rss-services/rss-bridge
docker compose up <span class="nt">-d</span>
</code></pre></div></div>

<p>This will download and start your services. Wait 2-3 minutes for everything to initialize.</p>

<h3 id="check-if-everything-is-running">Check if everything is running</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># For FreshRSS</span>
<span class="nb">cd</span> ~/rss-services/freshrss <span class="o">&amp;&amp;</span> docker compose ps

<span class="c"># For Miniflux</span>
<span class="nb">cd</span> ~/rss-services/miniflux <span class="o">&amp;&amp;</span> docker compose ps

<span class="c"># For RSSHub</span>
<span class="nb">cd</span> ~/rss-services/rsshub <span class="o">&amp;&amp;</span> docker compose ps

<span class="c"># For RSS-Bridge</span>
<span class="nb">cd</span> ~/rss-services/rss-bridge <span class="o">&amp;&amp;</span> docker compose ps
</code></pre></div></div>

<p>If a service shows “Up”, it’s working.</p>

<h2 id="step-7-access-and-configure-your-services">Step 7: Access and configure your services</h2>

<h3 id="freshrss-setup">FreshRSS setup</h3>
<ul>
  <li>URL: <code class="language-plaintext highlighter-rouge">http://your_server_ip:8080</code></li>
  <li>First time: click “Installation” and create your admin account</li>
  <li>Good for: beginners who want a simple, clean interface</li>
</ul>

<h3 id="miniflux-setup">Miniflux setup</h3>
<ul>
  <li>URL: <code class="language-plaintext highlighter-rouge">http://your_server_ip:8081</code></li>
  <li>Login: use the username and password you set in the config file</li>
  <li>Good for: users who want speed and powerful features</li>
</ul>

<h3 id="rsshub-no-setup-needed">RSSHub (no setup needed)</h3>
<ul>
  <li>URL: <code class="language-plaintext highlighter-rouge">http://your_server_ip:1200</code></li>
  <li>No login required, it just works</li>
  <li>Use it to generate RSS feeds from YouTube, Twitter, Instagram, etc.</li>
  <li>Documentation: open the URL to see all available routes and examples</li>
</ul>

<h3 id="rss-bridge-no-setup-needed">RSS-Bridge (no setup needed)</h3>
<ul>
  <li>URL: <code class="language-plaintext highlighter-rouge">http://your_server_ip:3000</code></li>
  <li>No login required</li>
  <li>Use it to generate feeds for sites without RSS</li>
  <li>Open the URL to browse the available bridges</li>
</ul>

<h2 id="step-8-enable-api-access-for-smartrss">Step 8: Enable API access for SmartRSS</h2>

<p>Now connect your RSS services to SmartRSS.</p>

<h3 id="enable-freshrss-api">Enable FreshRSS API</h3>

<ol>
  <li>Log in to FreshRSS at <code class="language-plaintext highlighter-rouge">http://your_server_ip:8080</code>.</li>
  <li>Click your username (top right), then Administration.</li>
  <li>Go to Authentication and enable API access.</li>
  <li>Save the changes.</li>
  <li>Generate API credentials:
    <ul>
      <li>Still in Administration, open Profile</li>
      <li>Scroll to the API section</li>
      <li>Click Generate to create your API password</li>
      <li>Copy your API username and password. SmartRSS will need them.</li>
    </ul>
  </li>
</ol>

<h3 id="enable-miniflux-api">Enable Miniflux API</h3>

<ol>
  <li>Log in to Miniflux at <code class="language-plaintext highlighter-rouge">http://your_server_ip:8081</code>.</li>
  <li>Open Settings, then Integrations.</li>
  <li>Enable the Google Reader API and set a username and password. These are separate from your Miniflux account login.</li>
  <li>Server URL: <code class="language-plaintext highlighter-rouge">http://your_server_ip:8081/</code></li>
</ol>

<h2 id="step-9-connect-smartrss-to-your-server">Step 9: Connect SmartRSS to your server</h2>

<p>Now connect SmartRSS to your self-hosted services.</p>

<h3 id="for-freshrss-users">For FreshRSS users:</h3>

<ol>
  <li>Open SmartRSS on your device.</li>
  <li>Add a new account and select FreshRSS.</li>
  <li>Enter your server details:
    <ul>
      <li>Server URL: <code class="language-plaintext highlighter-rouge">http://your_server_ip:8080/api/</code></li>
      <li>Username: your FreshRSS username</li>
      <li>Password: your API password (from step 8)</li>
    </ul>
  </li>
  <li>Test the connection. Your feeds now sync.</li>
</ol>

<h3 id="for-miniflux-users">For Miniflux users:</h3>

<ol>
  <li>Open SmartRSS on your device.</li>
  <li>Add a new account and select Miniflux.</li>
  <li>Enter your server details:
    <ul>
      <li>Server URL: <code class="language-plaintext highlighter-rouge">http://your_server_ip:8081/</code></li>
      <li>Username: your Miniflux Google Reader username</li>
      <li>Password: your Miniflux Google Reader password</li>
    </ul>
  </li>
  <li>Test the connection, and you’re done.</li>
</ol>

<h3 id="add-feeds-from-rsshub">Add feeds from RSSHub</h3>

<p>Want to follow a YouTube channel or Twitter user that doesn’t have RSS?</p>

<ol>
  <li>Open RSSHub at <code class="language-plaintext highlighter-rouge">http://your_server_ip:1200</code>.</li>
  <li>Find the route you need, for example <code class="language-plaintext highlighter-rouge">/youtube/user/:username</code>.</li>
  <li>Copy the RSS feed URL.</li>
  <li>Add it in SmartRSS, or in your FreshRSS or Miniflux web interface.</li>
</ol>

<p>Popular RSSHub routes:</p>
<ul>
  <li>YouTube: <code class="language-plaintext highlighter-rouge">http://your_server_ip:1200/youtube/user/:username</code></li>
  <li>Twitter: <code class="language-plaintext highlighter-rouge">http://your_server_ip:1200/twitter/user/:username</code></li>
  <li>Instagram: <code class="language-plaintext highlighter-rouge">http://your_server_ip:1200/instagram/user/:username</code></li>
  <li>Telegram: <code class="language-plaintext highlighter-rouge">http://your_server_ip:1200/telegram/channel/:channelname</code></li>
</ul>

<h3 id="add-feeds-from-rss-bridge">Add feeds from RSS-Bridge</h3>

<ol>
  <li>Open RSS-Bridge at <code class="language-plaintext highlighter-rouge">http://your_server_ip:3000</code>.</li>
  <li>Pick a bridge from the list and fill in the fields it asks for.</li>
  <li>Copy the RSS or Atom URL it generates.</li>
  <li>Add that URL in SmartRSS, or in your FreshRSS or Miniflux web interface.</li>
</ol>

<h2 id="quick-management-commands">Quick management commands</h2>

<h3 id="check-service-status">Check service status</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># For FreshRSS</span>
<span class="nb">cd</span> ~/rss-services/freshrss <span class="o">&amp;&amp;</span> docker compose ps

<span class="c"># For Miniflux</span>
<span class="nb">cd</span> ~/rss-services/miniflux <span class="o">&amp;&amp;</span> docker compose ps

<span class="c"># For RSSHub</span>
<span class="nb">cd</span> ~/rss-services/rsshub <span class="o">&amp;&amp;</span> docker compose ps

<span class="c"># For RSS-Bridge</span>
<span class="nb">cd</span> ~/rss-services/rss-bridge <span class="o">&amp;&amp;</span> docker compose ps
</code></pre></div></div>

<h3 id="view-logs-if-something-goes-wrong">View logs (if something goes wrong)</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># For FreshRSS</span>
<span class="nb">cd</span> ~/rss-services/freshrss <span class="o">&amp;&amp;</span> docker compose logs <span class="nt">-f</span>

<span class="c"># For Miniflux</span>
<span class="nb">cd</span> ~/rss-services/miniflux <span class="o">&amp;&amp;</span> docker compose logs <span class="nt">-f</span>

<span class="c"># For RSSHub</span>
<span class="nb">cd</span> ~/rss-services/rsshub <span class="o">&amp;&amp;</span> docker compose logs <span class="nt">-f</span>

<span class="c"># For RSS-Bridge</span>
<span class="nb">cd</span> ~/rss-services/rss-bridge <span class="o">&amp;&amp;</span> docker compose logs <span class="nt">-f</span>
</code></pre></div></div>

<h3 id="restart-a-service">Restart a service</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># For FreshRSS</span>
<span class="nb">cd</span> ~/rss-services/freshrss <span class="o">&amp;&amp;</span> docker compose restart

<span class="c"># For Miniflux</span>
<span class="nb">cd</span> ~/rss-services/miniflux <span class="o">&amp;&amp;</span> docker compose restart

<span class="c"># For RSSHub</span>
<span class="nb">cd</span> ~/rss-services/rsshub <span class="o">&amp;&amp;</span> docker compose restart

<span class="c"># For RSS-Bridge</span>
<span class="nb">cd</span> ~/rss-services/rss-bridge <span class="o">&amp;&amp;</span> docker compose restart
</code></pre></div></div>

<h3 id="update-your-services">Update your services</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># For FreshRSS</span>
<span class="nb">cd</span> ~/rss-services/freshrss <span class="o">&amp;&amp;</span> docker compose pull <span class="o">&amp;&amp;</span> docker compose up <span class="nt">-d</span>

<span class="c"># For Miniflux</span>
<span class="nb">cd</span> ~/rss-services/miniflux <span class="o">&amp;&amp;</span> docker compose pull <span class="o">&amp;&amp;</span> docker compose up <span class="nt">-d</span>

<span class="c"># For RSSHub</span>
<span class="nb">cd</span> ~/rss-services/rsshub <span class="o">&amp;&amp;</span> docker compose pull <span class="o">&amp;&amp;</span> docker compose up <span class="nt">-d</span>

<span class="c"># For RSS-Bridge</span>
<span class="nb">cd</span> ~/rss-services/rss-bridge <span class="o">&amp;&amp;</span> docker compose pull <span class="o">&amp;&amp;</span> docker compose up <span class="nt">-d</span>
</code></pre></div></div>

<h3 id="stop-services">Stop services</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># For FreshRSS</span>
<span class="nb">cd</span> ~/rss-services/freshrss <span class="o">&amp;&amp;</span> docker compose down

<span class="c"># For Miniflux</span>
<span class="nb">cd</span> ~/rss-services/miniflux <span class="o">&amp;&amp;</span> docker compose down

<span class="c"># For RSSHub</span>
<span class="nb">cd</span> ~/rss-services/rsshub <span class="o">&amp;&amp;</span> docker compose down

<span class="c"># For RSS-Bridge</span>
<span class="nb">cd</span> ~/rss-services/rss-bridge <span class="o">&amp;&amp;</span> docker compose down
</code></pre></div></div>

<h2 id="common-issues-and-fixes">Common issues and fixes</h2>

<h3 id="services-wont-start">Services won’t start</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Check what's wrong (replace with your service)</span>
<span class="nb">cd</span> ~/rss-services/freshrss  <span class="c"># or miniflux, rsshub, or rss-bridge</span>
docker compose logs

<span class="c"># Restart everything</span>
docker compose restart
</code></pre></div></div>

<h3 id="cant-access-your-server">Can’t access your server</h3>

<p>Make sure your VPS provider’s firewall allows these ports (only for services you installed):</p>
<ul>
  <li>8080 (FreshRSS)</li>
  <li>8081 (Miniflux)</li>
  <li>1200 (RSSHub)</li>
  <li>3000 (RSS-Bridge)</li>
</ul>

<h3 id="smartrss-wont-connect">SmartRSS won’t connect</h3>

<ol>
  <li>Double-check your server URL, including <code class="language-plaintext highlighter-rouge">http://</code> and the port number.</li>
  <li>Verify your API credentials. Regenerate them if needed.</li>
  <li>Test the web interface in your browser first. If you can log in there, the server itself is fine.</li>
</ol>

<h2 id="conclusion">Conclusion</h2>

<p>You now have your own RSS backend that syncs with SmartRSS across all your devices. Your reading stays on your own server, and there are no monthly fees.</p>

<p>Start adding your favorite feeds.</p>

<p>Need help? Check the official documentation:</p>
<ul>
  <li><a href="https://freshrss.github.io/FreshRSS/">FreshRSS Documentation</a></li>
  <li><a href="https://miniflux.app/docs/">Miniflux Documentation</a></li>
  <li><a href="https://docs.rsshub.app/">RSSHub Documentation</a></li>
  <li><a href="https://rss-bridge.github.io/rss-bridge/index.html">RSS-Bridge Documentation</a></li>
</ul>

<p>Happy reading!</p>

<hr />

<p><em>Download SmartRSS and connect it to your new backend.</em></p>

<div class="app-download-section">
  <h3>📱 Download SmartRSS Now</h3>
  <p>Available on iOS, Android, and Windows platforms</p>
  <div class="download-buttons">
    <a href="https://apps.apple.com/app/smartrss-ai-rss-reader/id6749771900" class="download-btn">
      <span class="btn-icon">🍎</span>
      Download for iOS
    </a>
    <a href="https://play.google.com/store/apps/details?id=com.vinsonguo.flutter_rss_reader" class="download-btn">
      <span class="btn-icon">🤖</span>
      Download for Android
    </a>
    <a href="https://github.com/VinsonGuo/SmartRSS-Windows/releases" class="download-btn">
      <span class="btn-icon">💻</span>
      Download for Windows
    </a>
  </div>
</div>]]></content><author><name>Vinson Guo</name></author><category term="tutorial" /><category term="self-hosting" /><category term="rss" /><category term="docker" /><category term="smartrss" /><summary type="html"><![CDATA[This guide walks you through setting up a self-hosted RSS backend with FreshRSS, Miniflux, RSSHub, and RSS-Bridge, even if you’ve never touched a server before. They all work with SmartRSS, so your feeds stay under your control.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-55-32-81_bb53aaa59eb1f897861a3c681a6c04b4.jpg" /><media:content medium="image" url="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-55-32-81_bb53aaa59eb1f897861a3c681a6c04b4.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Supercharge Your Reading with SmartRSS AI Prompts</title><link href="https://vinsonguo.github.io/smartrss-prompts" rel="alternate" type="text/html" title="Supercharge Your Reading with SmartRSS AI Prompts" /><published>2025-10-11T00:00:00+00:00</published><updated>2025-10-11T00:00:00+00:00</updated><id>https://vinsonguo.github.io/smartrss-prompts</id><content type="html" xml:base="https://vinsonguo.github.io/smartrss-prompts"><![CDATA[<p>Hey there, SmartRSS readers.</p>

<p>If you’ve ever wished your RSS reader could do a bit more, like summarizing, translating, or helping you learn English, this post is for you.</p>

<p>SmartRSS now works with AI prompts, so you can analyze, learn from, and share articles. Here are some prompts you can use right away.</p>

<h2 id="1-article-analyzer">1. Article Analyzer</h2>

<p>Get a structured summary, key insights, and a timeline.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Based on the following requirements, please analyze the article and produce the output that includes a concise summary, key takeaways, and additional contextual insights. The output language should be {language}. Use clear, accessible, and natural phrasing suitable for general readers.
      
1. Provide a 50 words long concise and engaging summary that captures the article’s core viewpoints and main idea.
2. List the most important insights or facts using clear and easy-to-understand language.
3. If the article contains chronological information or significant events, include a short timeline summarizing the key moments in order.
4. Give a brief background to help readers understand the article’s context — such as why the topic matters or what situation it addresses.

Article Title: {title}
Article Content: {content}

Please provide the content directly, without any additional explanatory text.
</code></pre></div></div>

<p>Perfect for understanding long reads at a glance.</p>

<h2 id="2-translation-assistant">2. Translation Assistant</h2>

<p>Read anything, in any language.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please translate the following article into {language}.
Keep the paragraph structure and tone consistent with the original text.
Do not add explanations or summaries.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Great for following Japanese tech blogs or French design magazines.</p>

<h2 id="3-keyword-extractor">3. Keyword Extractor</h2>

<p>See what the article is really about.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please extract the 10 most relevant keywords or phrases from this article.
Focus on concepts that capture the main ideas and subjects.
Return the keywords in {language}.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Useful for tagging, search optimization, or topic discovery.</p>

<h2 id="4-english-learning-assistant">4. English Learning Assistant</h2>

<p>Turn every article into a mini English lesson.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please identify difficult words or idioms in the following article.
For each, provide a list:
- {language} Definition
- Example sentence
- Simple synonym

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Perfect for readers learning English through real content.</p>

<h2 id="5-discussion-starter">5. Discussion Starter</h2>

<p>Generate questions that make you think.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Read the following article and create 3 open-ended discussion questions.
Each question should encourage deeper thinking or debate.
Write the output in {language}.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Ideal for study groups or newsletter editors looking for talking points.</p>

<h2 id="6-social-media-repost-generator">6. Social Media Repost Generator</h2>

<p>Share your favorite reads instantly.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please create a short social media post based on the following article.
Make it catchy, under 280 characters, and include 2-3 relevant hashtags.
Keep the tone engaging and informative.
Write the post in {language}.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>From SmartRSS to your social feed in one click.</p>

<h2 id="7-hashtag--topic-generator">7. Hashtag &amp; Topic Generator</h2>

<p>Find hashtags that make your post discoverable.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please generate 5-8 relevant hashtags that best match the themes and topics of this article.
Focus on concise, popular, and meaningful tags.
Return the hashtags in {language}.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Pair it with the Social Media Repost prompt for best results.</p>

<h2 id="8-headline-rewriter">8. Headline Rewriter</h2>

<p>Craft catchy titles that grab attention.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please generate 5 alternative headlines for this article.
Each headline should be under 15 words and written in an engaging tone suitable for online audiences.
Write the headlines in {language}.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Try this when you’re curating articles or writing newsletters.</p>

<h2 id="9-fact-checker--bias-detector">9. Fact Checker &amp; Bias Detector</h2>

<p>Read with a critical eye.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please analyze the following article for factual reliability and potential bias.
Identify any emotionally charged or opinionated language.
Summarize your findings objectively in bullet points.
Use {language} for the output.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Helps you spot bias and misinformation at a glance.</p>

<h2 id="10-writing-style-mimic">10. Writing Style Mimic</h2>

<p>Learn from your favorite writers’ styles.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Analyze the writing style of this article, including tone, rhythm, and vocabulary.
Then, generate a short paragraph (around 100 words) written in a similar style on a related topic.
Use {language} for the output.

Title: {title}
Content: {content}
</code></pre></div></div>

<p>Perfect for bloggers and content creators seeking inspiration.</p>

<h2 id="bonus-tip-combine-prompts">Bonus tip: combine prompts</h2>

<p>You can chain them together:</p>

<ul>
  <li>Keyword Extractor → Hashtag Generator → Social Media Post</li>
  <li>Article Analyzer → Discussion Starter → English Learning Assistant</li>
</ul>

<h2 id="final-thoughts">Final thoughts</h2>

<p>With AI prompts, SmartRSS does more than show you feeds. It can summarize, teach, and help you share what you read.</p>

<p>Try these prompts, tweak them to fit your reading habits, and see what your feed can do.</p>

<p>Happy reading.</p>

<hr />

<p><em>Download SmartRSS and try these prompts.</em></p>

<div class="app-download-section">
  <h3>📱 Download SmartRSS Now</h3>
  <p>Available on iOS, Android, and Windows platforms</p>
  <div class="download-buttons">
    <a href="https://apps.apple.com/app/smartrss-ai-rss-reader/id6749771900" class="download-btn">
      <span class="btn-icon">🍎</span>
      Download for iOS
    </a>
    <a href="https://play.google.com/store/apps/details?id=com.vinsonguo.flutter_rss_reader" class="download-btn">
      <span class="btn-icon">🤖</span>
      Download for Android
    </a>
    <a href="https://github.com/VinsonGuo/SmartRSS-Windows/releases" class="download-btn">
      <span class="btn-icon">💻</span>
      Download for Windows
    </a>
  </div>
</div>]]></content><author><name>Vinson Guo</name></author><category term="apps" /><category term="rss" /><category term="ai-prompts" /><summary type="html"><![CDATA[Hey there, SmartRSS readers.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-53-15-36_bb53aaa59eb1f897861a3c681a6c04b4.jpg" /><media:content medium="image" url="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-53-15-36_bb53aaa59eb1f897861a3c681a6c04b4.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Introducing SmartRSS: An AI-Powered, Cross-Platform RSS Reader</title><link href="https://vinsonguo.github.io/introducing-smartrss" rel="alternate" type="text/html" title="Introducing SmartRSS: An AI-Powered, Cross-Platform RSS Reader" /><published>2025-09-03T00:00:00+00:00</published><updated>2025-09-03T00:00:00+00:00</updated><id>https://vinsonguo.github.io/introducing-smartrss</id><content type="html" xml:base="https://vinsonguo.github.io/introducing-smartrss"><![CDATA[<p><strong>SmartRSS</strong> takes RSS reading beyond the ordinary. Bring all your favorite content into one place, from RSS feeds and blogs to podcasts, YouTube, Reddit, Substack, Mastodon, Bluesky, and more. Discover 80,000+ built-in sources and use AI to summarize, translate, and understand articles faster, while text-to-speech turns your reading list into high-quality audio. With powerful customization, offline reading, and seamless sync across popular RSS services, SmartRSS adapts to the way you read.</p>

<div class="app-download-section">
  <h3>📱 Download SmartRSS Now</h3>
  <p>Available on iOS, Android, and Desktop platforms</p>
  <div class="download-buttons">
    <a href="https://apps.apple.com/app/smartrss-ai-rss-reader/id6749771900" class="download-btn">
      <span class="btn-icon">🍎</span>
      Download for iOS/macOS
    </a>
    <a href="https://play.google.com/store/apps/details?id=com.vinsonguo.flutter_rss_reader" class="download-btn">
      <span class="btn-icon">🤖</span>
      Download for Android
    </a>
    <a href="https://github.com/VinsonGuo/SmartRSS-Windows/releases" class="download-btn">
      <span class="btn-icon">💻</span>
      Download for Windows
    </a>
    <a href="https://github.com/VinsonGuo/SmartRSS-Linux/releases" class="download-btn">
      <span class="btn-icon">💻</span>
      Download for Linux
    </a>
  </div>
</div>

<h2 id="what-makes-smartrss-special">What makes SmartRSS special?</h2>

<p>SmartRSS is an RSS reader that works the same way everywhere. Open the same feeds from any device, <strong>Android, iOS, macOS, or Windows</strong>, in one interface.</p>

<h3 id="ai-features-that-work-for-you">AI features that work for you</h3>

<p>
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-57-21-00_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="AI Actions" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
<img src="https://vinsonguo.github.io/assets/img/smartrss/IMG_7338.jpeg" alt="Reading Interface" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
</p>

<p>You write your own prompts for AI actions and connect them to OpenAI, Anthropic, or Google Cloud AI. Once a prompt is set, run it on any article: summarize it, translate it, pull out key phrases, analyze sentiment, or turn unstructured text into structured data.</p>

<p>
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-53-15-36_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="Customized AI Actions" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-56-43-67_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="AI Providers" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
</p>

<p>AI Aggregation groups up to 100 articles by topic, narrative, or underlying connection. Instead of a long unread list, you get organized summaries. Saving something? Share it as clean markdown to your note-taking or read-later app in one tap.</p>

<h3 id="universal-sync--integration">Universal sync &amp; integration</h3>

<p>
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-54-14-82_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="Universal Sync &amp; Integration" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-59-13-21_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="Universal Sync &amp; Integration" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
</p>

<p>Never lose an update. SmartRSS syncs multiple accounts with almost any backend service, including:</p>

<ul>
  <li>Self-hosted: FreshRSS, Miniflux</li>
  <li>Cloud services: Feedly, Feedbin, Newsblur, Bazqux, Inoreader (Developer API)</li>
  <li>Legacy API: Google Reader API compatibility</li>
</ul>

<h3 id="multi-platform-content-support">Multi-platform content support</h3>

<p>SmartRSS supports many content platforms:</p>

<p><img src="https://vinsonguo.github.io/assets/img/smartrss/IMG_7335.jpeg" alt="Add Feed Interface" style="max-width: 300px; height: auto; display: block; margin: 20px auto; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" /></p>

<ul>
  <li>Traditional blogs and websites: classic RSS feeds</li>
  <li>Medium publications: follow your favorite writers</li>
  <li>Mastodon profiles: stay connected with the decentralized social web</li>
  <li>Bluesky profiles: keep up with the newest social platform</li>
  <li>Substack newsletters: never miss important newsletters</li>
  <li>YouTube channels: get notified of new videos</li>
  <li>Reddit communities: track discussions that matter to you</li>
</ul>

<p>Paste a URL and SmartRSS finds the correct feed. Follow creators across platforms without hunting for RSS links. Everything lives in one place, sorted into custom categories.</p>

<h3 id="personalized-experience">Personalized experience</h3>

<p>Theming options:</p>

<p>
<img src="https://vinsonguo.github.io/assets/img/smartrss/IMG_7336.jpeg" alt="Theme Customization" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
<img src="https://vinsonguo.github.io/assets/img/smartrss/IMG_7340.jpeg" alt="Theme Customization" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
</p>

<ul>
  <li>Over 1000 fonts</li>
  <li>12 dynamic color themes</li>
  <li>Adaptive color schemes: Tonal Spot, Fidelity, Neutral, Vibrant, and Expressive</li>
  <li>The interface adapts to your preferences for readability</li>
</ul>

<h3 id="reading-experience">Reading experience</h3>

<p>Reading is clean and distraction-free:</p>

<p>
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-55-32-81_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="Feeds Hub" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-55-49-67_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="Article List" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
</p>

<ul>
  <li>Clean article layout, no distractions</li>
  <li>Smart content parsing: articles keep their images and multimedia formatting</li>
  <li>Quick actions for sharing, bookmarking, and navigation</li>
  <li>Responsive design for different screen sizes</li>
</ul>

<p>VoiceOver and TalkBack are fully supported, and Bionic Reading helps guide your eyes through text.</p>

<h3 id="audio-experience">Audio experience</h3>

<p>Turn reading into listening. SmartRSS has a built-in audio player:</p>

<ul>
  <li>Custom TTS (text-to-speech): pick from multiple voices and engines, with control over speed, pitch, and language.</li>
  <li>Native podcast support: subscribe, manage, and play episodes in the app, with automatic fetching and background playback.</li>
  <li>Universal play queue: mix TTS articles and podcast episodes into one continuous list.</li>
</ul>

<p>
<img src="https://vinsonguo.github.io/assets/img/smartrss/Screenshot_2025-12-24-10-58-50-55_bb53aaa59eb1f897861a3c681a6c04b4.jpg" alt="TTS" style="max-width: 200px; height: auto; margin: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);" />
</p>

<hr />

<p><em>SmartRSS is available now on the <a href="https://apps.apple.com/app/smartrss-ai-rss-reader/id6749771900">App Store</a> and <a href="https://play.google.com/store/apps/details?id=com.vinsonguo.flutter_rss_reader">Google Play</a>. Have feedback or questions? Feel free to <a href="https://vinsonguo.github.io/about">reach out</a>. I’d love to hear from you!</em></p>]]></content><author><name>Vinson Guo</name></author><category term="apps" /><category term="rss" /><category term="mobile-development" /><summary type="html"><![CDATA[SmartRSS takes RSS reading beyond the ordinary. Bring all your favorite content into one place, from RSS feeds and blogs to podcasts, YouTube, Reddit, Substack, Mastodon, Bluesky, and more. Discover 80,000+ built-in sources and use AI to summarize, translate, and understand articles faster, while text-to-speech turns your reading list into high-quality audio. With powerful customization, offline reading, and seamless sync across popular RSS services, SmartRSS adapts to the way you read.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://vinsonguo.github.io/assets/img/smartrss/smartrss-logo.PNG" /><media:content medium="image" url="https://vinsonguo.github.io/assets/img/smartrss/smartrss-logo.PNG" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>