---
title: "Deploy TrendRadar — Automated News Monitoring & Daily Intelligence"
description: "trendradar, automated news crawling, summaries, RSS tracking, web reports."
category: "AI/ML"
url: https://railway.com/deploy/trendradar-automated-news-monitoring-and
---

# Deploy TrendRadar — Automated News Monitoring & Daily Intelligence

trendradar, automated news crawling, summaries, RSS tracking, web reports.

**[Deploy TrendRadar — Automated News Monitoring & Daily Intelligence on Railway](https://railway.com/template/trendradar-automated-news-monitoring-and)**

- **Creator:** Xav's Projects
- **Category:** AI/ML
- **Total deploys:** 10

## Template content

### trendradar-mcp https://upload.wikimedia.org/wikipedia/commons/6/63/Star%2A.svg

- **Image:** wantcat/trendradar-mcp:3.1
- **Start command:** `/bin/sh -lc 'set -eux; sync_f() { t="$1"; u="$2"; c="${3:-}"; mkdir -p "$(dirname "$t")"; if [ -n "$c" ]; then echo "$c" > "$t"; else python3 -c "import urllib.request as u; u.urlretrieve(\"$u\", \"$t\")"; fi; }; sync_f "/app/config/config.yaml" "https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/config.yaml" "${CONFIG_YAML_FILE:-}"; sync_f "/app/config/frequency_words.txt" "https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/frequency_words.txt" "${FREQUENCY_WORDS_FILE:-}"; sync_f "/app/config/ai_analysis_prompt.txt" "https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/ai_analysis_prompt.txt" "${AI_PROMPT_FILE:-}"; cd /app && python3 -m mcp_server.server --transport http --port 3333'`

### mcp-gateway https://media.rubrion.ai/railway/icons/caddy.svg

- **Source:** https://github.com/XavTo/caddy-zero-trust
- **Public domain:** Yes

### trendradar https://upload.wikimedia.org/wikipedia/commons/6/63/Star%2A.svg

- **Image:** wantcat/trendradar:5.0
- **Start command:** `/bin/sh -lc 'set -eux; mkdir -p /app/config; sync_f() { target="$1"; url="$2"; content="${3:-}"; if [ -n "$content" ]; then echo "$content" > "$target"; echo "Config $target chargee depuis variable."; else wget -qO "$target" "$url" || python3 -c "import urllib.request as u; u.urlretrieve(\"$url\", \"$target\")"; echo "Config $target telechargee depuis GitHub."; fi; }; sync_f "/app/config/config.yaml" "https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/config.yaml" "${CONFIG_YAML_FILE:-}"; sync_f "/app/config/frequency_words.txt" "https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/frequency_words.txt" "${FREQUENCY_WORDS_FILE:-}"; sync_f "/app/config/ai_analysis_prompt.txt" "https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/ai_analysis_prompt.txt" "${AI_PROMPT_FILE:-}"; printf "import os,time,pathlib,mimetypes,boto3\nfrom botocore.config import Config\nb=pathlib.Path(\"/app/output\")\nallow={\".html\",\".css\",\".js\",\".json\",\".png\",\".jpg\",\".txt\"}\nbkt=os.environ.get(\"S3_BUCKET_NAME\")\npref=os.environ.get(\"S3_REPORT_PREFIX\",\"web\").strip(\"/\")+\"/\"\ns3=boto3.client(\"s3\",endpoint_url=os.environ.get(\"S3_ENDPOINT_URL\"),region_name=os.environ.get(\"S3_REGION\"),aws_access_key_id=os.environ.get(\"S3_ACCESS_KEY_ID\"),aws_secret_access_key=os.environ.get(\"S3_SECRET_ACCESS_KEY\"),config=Config(signature_version=\"s3v4\"))\nwhile True:\n try:\n  if b.exists():\n   for p in b.rglob(\"*\"):\n    if p.is_file() and p.suffix.lower() in allow:\n     k=pref+p.relative_to(b).as_posix();ct,_=mimetypes.guess_type(p.name)\n     if p.suffix==\".html\":ct=\"text/html;charset=utf-8\"\n     e={\"ContentType\":ct} if ct else None\n     s3.upload_file(str(p),bkt,k,ExtraArgs=e)\n  time.sleep(60)\n except Exception as e:print(e);time.sleep(60)" > /app/upload_s3.py; python3 /app/upload_s3.py & exec /entrypoint.sh'`

### S3-gateway https://media.rubrion.ai/railway/icons/caddy.svg

- **Source:** https://github.com/XavTo/caddy-zero-trust
- **Public domain:** Yes

### s3manager https://upload.wikimedia.org/wikipedia/commons/b/bc/Amazon-S3-Logo.svg

- **Image:** cloudlena/s3manager
- **Public domain:** Yes

## Buckets

- **Railway-bucket**

## Documentation

# Deploy and Host TrendRadar — Automated News Monitoring &amp; Daily Intelligence on Railway

**TrendRadar** is an automated news monitoring system that crawls multiple sources, deduplicates content, stores daily datasets in S3-compatible storage, and generates readable HTML intelligence reports. It is designed for continuous monitoring, historical tracking, and AI-assisted analysis.

## About Hosting TrendRadar — Automated News Monitoring &amp; Daily Intelligence

This template deploys TrendRadar as a cron-based service on Railway. It periodically collects trending news and RSS feeds, processes and deduplicates them, and stores results in a Railway Bucket using S3-compatible APIs. Optional services include an MCP server for AI/agent access and a web-based S3 manager, both typically exposed through authenticated gateways. All data persists across restarts and deployments.

## Common Use Cases

- Daily trend and news intelligence for products, markets, or competitors
- RSS aggregation with historical tracking and keyword filtering
- AI-driven analysis pipelines using Model Context Protocol (MCP)

## Dependencies for TrendRadar — Automated News Monitoring &amp; Daily Intelligence Hosting

- **Railway Bucket**: S3-compatible object storage for databases and reports
- **TrendRadar service**: crawler, scheduler, and report generator
- **Optional MCP service**: AI/agent interface to query stored data
- **Optional gateways**: Basic Auth access to internal services

### Deployment Dependencies

- Upstream project: https://github.com/sansan0/TrendRadar  
- Model Context Protocol (MCP): https://modelcontextprotocol.io/  
- Railway documentation: https://docs.railway.com/

### Implementation Details 

TrendRadar runs in `cron` mode and writes daily SQLite databases  
(`news/YYYY-MM-DD.db`, `rss/YYYY-MM-DD.db`) to the Railway Bucket.

#### Uploading HTML Reports to the Bucket

TrendRadar can optionally upload generated HTML reports from `/app/output`
to the Railway Bucket after each execution. This allows reports to be
persisted, shared, and served independently of the running container.

A common setup is to upload reports under a prefix such as `web/`, producing
paths like:

- `web/index.html`
- `web/html/YYYY-MM-DD/summary.html`

These files can then be accessed through an S3 gateway or static hosting layer.

#### TrendRadar MCP (AI / Agent Access)

The optional **TrendRadar MCP service** exposes collected data through the
Model Context Protocol, allowing AI clients and agents to query, analyze,
and summarize trends programmatically.

The MCP server **does not crawl data itself**. It reads from the same
storage backend as TrendRadar and operates purely as an analysis interface.

##### Connecting an MCP Client (Example)

Below is a minimal MCP client configuration using `streamableHttp`.
Replace the URL with your Railway **MCP gateway** domain.

```json
{
  "mcpServers": {
    "trendradar": {
      "type": "streamableHttp",
      "url": "https:///mcp"
    }
  }
}
```

##### MCP Environment Variables (Minimal)

These variables are typically shared between **trendradar** and
**trendradar-mcp** so crawling and analysis stay aligned.

```env
STORAGE_BACKEND=remote
S3_ENDPOINT_URL=...
S3_BUCKET_NAME=...
S3_ACCESS_KEY_ID=...
S3_SECRET_ACCESS_KEY=...
S3_REGION=auto
PORT=3333
```

##### Gateway &amp; Security (Basic Auth)

It is strongly recommended **not** to expose the MCP service directly.
Instead, deploy a small HTTP gateway in front of it.

Typical gateway behavior:
- Terminates public HTTP(S)
- Enforces **Basic Authentication**
- Proxies requests to `trendradar-mcp` on the Railway private network

```env
AUTH_USER=admin
AUTH_PASS=********
DOMAIN_NAME=...
UPSTREAM_URL=http://trendradar-mcp:3333
```

#### S3 Manager (Bucket File Access)

The optional **S3 Manager** service provides a simple web UI to browse
the contents of the Railway Bucket. It is useful for inspecting databases,
verifying report uploads, and debugging storage behavior.

For security, the S3 Manager is typically exposed only through an
authenticated gateway.

```env
PORT=8080
ENDPOINT=storage.railway.app
REGION=auto
ACCESS_KEY_ID=...
SECRET_ACCESS_KEY=...
USE_SSL=true
```

#### Configuration Injection (Optional)

TrendRadar supports injecting full configuration files through environment
variables. At startup, these values can be written into `/app/config`,
overriding the defaults.

```env
FREQUENCY_WORDS_FILE=...      # Content of frequency_words.txt
CONFIG_YAML_FILE=...          # Content of config.yaml
AI_PROMPT_FILE=...            # Content of ai_analysis_prompt.txt
```

This allows full customization of keywords, sources, and analysis behavior
without modifying the container image. Copy the original files from:
https://github.com/sansan0/TrendRadar/tree/master/config  
Modify them as needed, then paste the full content into the corresponding
environment variable.

## Why Deploy TrendRadar — Automated News Monitoring &amp; Daily Intelligence on Railway?


Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying TrendRadar — Automated News Monitoring &amp; Daily Intelligence on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.



## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [stella](https://railway.com/deploy/stella) — Self-host stella with web, API, Postgres, Redis, and object storage.
- [Hermes Agent | OpenClaw Alternative with Dashboard](https://railway.com/deploy/hermes-agent-or-openclaw-alternative-wit) — Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

Open this page in a browser: https://railway.com/deploy/trendradar-automated-news-monitoring-and
