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.

daily-brief logo

Self-host daily-brief

0.1.0

AI-curated daily news brief with market technical analysis

AlphaOpen SourceMIT
Updated4 days ago
LanguageTypescript
Setup difficultyModerate
Stars
383
Install with Build from Source
Tech panel showing GitHub Trending, X posts, and AI media sourcesMarkets panel with 21 tickers, technical indicators (SMA/RSI/MACD), and AI commentaryWorld news panel with BBC, Guardian, NYT, NPR, DW Chinese, Al Jazeera, The DiplomatFinance panel with Bloomberg, WSJ, FT, BBC Business, Economist

What is daily-brief?

daily-brief generates a personalized AI-curated daily news briefing that you host yourself. It aggregates 26 enabled sources by default (53 total) across tech (GitHub Trending, AI media, X posts), financial markets (21 tickers including US stocks, crypto, HK stocks, commodities, macro signals with technical indicators and LLM commentary), world news (BBC, Guardian, NYT, etc.), finance (Bloomberg, WSJ, FT), and community discussions (V2EX, LinuxDo for Chinese; Hacker News, Reddit r/stocks for English). The report is bilingual (Chinese/English) switched via REPORT_LOCALE. Six LLM backends are swappable via one env var: Claude CLI (default, uses your Max subscription), Anthropic, OpenAI, DeepSeek, MiniMax, and Zhipu. Three deployment paths: GitHub Actions + Pages (zero infrastructure, recommended), local one-liner install with OS-native scheduler, or self-hosted server with auto-deploy via scp. Output is a single-file HTML with inlined CSS/JS, no external dependencies. Requires Node.js 20+, npm, git, and one working LLM (API key or Claude Code login). Licensed MIT.

Should you self-host daily-brief?

daily-brief scores 50/100 on selfhost.directory (how scoring works) and ranks #27 of 85 in Feed Reader. It has 383 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Typescript.

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

Features

  • Auto-deploy to custom server
  • Bilingual reports (Chinese/English)
  • Claude Code integration
  • Configurable data sources via JSON
  • Dry-run validation
  • Financial market panel with technical indicators
  • Flexible deployment options
  • LLM usage quota reporting
  • Multi-source news aggregation
  • No third-party reader lock-in
  • Scheduled automatic runs
  • Single-file HTML output
  • Source registry management
  • Swappable LLM backends
  • Zero data-source API keys

daily-brief README

How to install daily-brief

Install daily-brief with Build from Source

Environment variables
LLM_BACKEND, ANTHROPIC_API_KEY/OPENAI_API_KEY/DEEPSEEK_API_KEY/MINIMAX_API_KEY/ZHIPU_API_KEY/LLM_API_KEY, LLM_BASE_URL, LLM_MODEL, REPORT_LOCALE, REPORT_TZ, REPORT_HOUR, REPORT_DAYS, DEPLOY_HOST, DEPLOY_PATH, OUTPUT_MARKDOWN

Clones to ~/daily-brief, installs deps, registers OS scheduler, sets up Claude Code global skill, runs dry-run smoke test.

How to configure daily-brief

  • ANTHROPIC_API_KEYAnthropic API key for anthropic backend

    Anthropic API key for anthropic backend

  • ANTHROPIC_BASE_URLCustom base URL for Anthropic-compatible proxies

    Custom base URL for Anthropic-compatible proxies

  • CLAUDE_CLI_PATHPath to claude binary (auto-detected)

    Path to claude binary (auto-detected)

  • CLAUDE_MODELsonnetModel passed to claude CLI (sonnet, opus, haiku)

    Model passed to claude CLI (sonnet, opus, haiku)

    values: sonnet | opus | haiku

  • DEEPSEEK_API_KEYDeepSeek API key for deepseek backend

    DeepSeek API key for deepseek backend

  • DEEPSEEK_BASE_URLhttps://api.deepseek.com/v1Custom base URL for DeepSeek

    Custom base URL for DeepSeek

  • DEPLOY_HOSTSSH host for auto-deploy (user@server-ip)

    SSH host for auto-deploy (user@server-ip)

  • DEPLOY_PATHRemote path on server for auto-deploy (e.g. /var/www/your-domain)

    Remote path on server for auto-deploy (e.g. /var/www/your-domain)

  • LLM_API_KEYGeneric API key alias for non-preset OpenAI/Anthropic-compatible services

    Generic API key alias for non-preset OpenAI/Anthropic-compatible services

  • LLM_BACKENDclaude-cliLLM backend selector: claude-cli (default), anthropic, openai, deepseek, minimax, zhipu

    LLM backend selector: claude-cli (default), anthropic, openai, deepseek, minimax, zhipu

    values: claude-cli | anthropic | openai | deepseek | minimax | zhipu

  • LLM_BASE_URLGeneric base URL alias for non-preset OpenAI/Anthropic-compatible services

    Generic base URL alias for non-preset OpenAI/Anthropic-compatible services

  • LLM_MODELUniversal model override for the active backend

    Universal model override for the active backend

  • MINIMAX_API_KEYMiniMax API key for minimax backend

    MiniMax API key for minimax backend

  • MINIMAX_BASE_URLhttps://api.minimax.io/v1Custom base URL for MiniMax (use api.minimaxi.com/v1 in mainland China)

    Custom base URL for MiniMax (use api.minimaxi.com/v1 in mainland China)

  • OPENAI_API_KEYOpenAI API key for openai backend

    OpenAI API key for openai backend

  • OPENAI_BASE_URLhttps://api.openai.com/v1Custom base URL for OpenAI-compatible services

    Custom base URL for OpenAI-compatible services

  • OUTPUT_MARKDOWNfalseGenerate Markdown output in addition to HTML

    Generate Markdown output in addition to HTML

    values: true | false

  • REPORT_DAYS*Day-of-week filter cron-style (0=Sun..6=Sat, default * every day)

    Day-of-week filter cron-style (0=Sun..6=Sat, default * every day)

    values: e.g. 1-5, 1,3,5

  • REPORT_HOUR8Hour(s) to trigger in REPORT_TZ (default 8). Comma-separated for multiple runs

    Hour(s) to trigger in REPORT_TZ (default 8). Comma-separated for multiple runs

    values: e.g. 8,18

  • REPORT_LOCALEzhReport locale: zh (default) or en — switches sources, UI, prompts, stance labels, date format

    Report locale: zh (default) or en — switches sources, UI, prompts, stance labels, date format

    values: zh | en

  • REPORT_TZUTCIANA timezone name (default UTC) — drives trigger time and date label

    IANA timezone name (default UTC) — drives trigger time and date label

    values: e.g. Asia/Shanghai, America/Los_Angeles

  • ZHIPU_API_KEYZhipu AI API key for zhipu backend

    Zhipu AI API key for zhipu backend

  • ZHIPU_BASE_URLhttps://open.bigmodel.cn/api/anthropicCustom base URL for Zhipu

    Custom base URL for Zhipu

More in News Aggregators

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…