Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
News app
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An open-source, mobile-first app and free public API for the world's conflicts, crises and major deals, with AI analysis on top.
Every hour World Pulse reads 26 public news and humanitarian feeds: BBC regional desks, Al Jazeera, The Guardian, DW, France 24, NPR, Kyiv Independent, Middle East Eye, AllAfrica, The New Humanitarian, International Crisis Group, UN News, ReliefWeb, WHO, GDACS and others. From them it publishes:
Everything is static files, so it needs no server, no database and no paid hosting.
| Piece | Cost |
|---|---|
| Hosting, CDN, HTTPS | $0: GitHub Pages (Cloudflare Pages or Netlify also work) |
| Hourly builds | $0: GitHub Actions (unlimited minutes for public repos) |
| News data | $0: public RSS/Atom feeds, no API keys |
| Web app on iOS, Android, desktop | $0: installable PWA, no app store needed |
| Android APK | $0: built by the Android app workflow; sideload it or attach it to GitHub Releases |
| Store listings (optional) | Google Play one-time $25 developer fee; Apple App Store $99/year and a Mac to build |
| AI analysis (optional) | Pay-per-use Anthropic API: see below. With no key, the app uses rule-based analysis and costs nothing |
AI runs once per hourly build, in CI. It never runs per reader, so the cost is the same whether you have 10 readers or 10 million. Each build:
brief_every_hours (default 3). In between, the previous brief is reused.ai.budget_usd (set to $18) caps total AI spend across all builds. Every build adds up what each call cost from the token counts the API reports, at list prices. The running total is published at /api/v1/ai-usage.json and in the build log (AI usage: … $X total). Once the cap is reached, the build switches to rule-based analysis, and the app keeps working. Raise the number to resume. The check runs before every call, so the cap can be passed by at most one request, a fraction of a cent on Haiku.For an absolute ceiling, keep auto-reload turned off in your Anthropic Console billing settings. The API then stops when your prepaid credits run out, and the app falls back to rules.
These are rough monthly estimates, assuming about 15–40 new conflict stories an hour and a brief every 3 hours. They come from list prices, not from measured runs, so check them against your own build logs:
ai.model in config/site.json | Approx. per month |
|---|---|
claude-opus-5-5 (highest quality) | ~$40–90 |
claude-sonnet-5-5 | ~$20–45 |
claude-haiku-5-5 (configured) | ~$1–3 (about $0.07/day, so $18 lasts roughly 8 months) |
Changing the model is a one-line edit. Raising brief_every_hours or lowering max_articles_per_run cuts the cost further.
python3 -m worldpulse.build --out public # fetch feeds, build app + API (Python 3.10+, stdlib only)
python3 -m http.server -d public 8000 # open http://localhost:8000
python3 -m unittest discover -s tests # offline tests
To enable AI locally: pip install -r requirements-ai.txt, copy .env.example to .env and put your key there. .env is git-ignored, so it never reaches GitHub; for the hourly build on GitHub, store the key as the ANTHROPIC_API_KEY repository secret.
Web app + API (GitHub Pages, about 2 minutes)
https://<user>.github.io/<repo>/.ANTHROPIC_API_KEY.GitHub pauses scheduled workflows in repos with 60 days of no activity. If that happens, re-enable the workflow in the Actions tab.
Android app
Actions → Android app → Run workflow builds app-debug.apk, which you can download from the run's artifacts. Pushing a v* tag attaches the APK to a GitHub Release. The app loads live data from your Pages site and ships a bundled copy so the first launch also works offline. To publish on Google Play, add the four ANDROID_* keystore secrets listed in .github/workflows/android.yml, and the workflow will also produce a signed .aab.
To build locally you need Node 22, JDK 21 and the Android SDK:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗