NewsNow: Nền tảng tổng hợp tin tức thời gian thực mã nguồn mở với kiến trúc hiện đại

https://news.zktww.vip

Giới thiệu

Trong kỷ nguyên thông tin bùng nổ, việc theo dõi tin tức từ nhiều nền tảng — như Weibo, Zhihu, Hacker News, V2EX hay GitHub — thường dẫn đến phân tâm và quá tải. NewsNow là một dự án mã nguồn mở do cộng đồng phát triển, tập trung vào việc cung cấp luồng tin tức được tổng hợp thông minh, có độ trễ thấp và giao diện tối ưu — giúp người dùng tiếp cận nội dung quan trọng một cách mạch lạc và chủ động.

Tổng quan

NewsNow là một hệ thống tổng hợp tin tức thời gian thực viết bằng TypeScript, tích hợp đa nguồn, hỗ trợ cá nhân hóa luồng đọc, bộ đệm thông minh và cơ chế đồng bộ trạng thái người dùng. Dự án được thiết kế để xử lý hiệu quả các luồng dữ liệu không đồng nhất, đồng thời duy trì trải nghiệm người dùng mượt mà trên cả web desktop và mobile.

Liên kết chính

Tính năng nổi bật

  1. Tổng hợp đa nguồn với phân loại ngữ nghĩa
    Hỗ trợ thu thập từ hơn 12 nền tảng (bao gồm GitHub Trends, Wall Street Journal API, Zhihu Hot List, Weibo Realtime Feed, V2EX Node Updates…). Dữ liệu được phân nhóm tự động theo chủ đề: Công nghệ, Tài chính, Thời sự quốc tế, Chính sách Trung Quốc, v.v., không phụ thuộc vào nhãn thủ công.
  2. Cá nhân hóa dựa trên hành vi tương tác
    Hệ thống ghi nhận lượt xem, thời gian đọc và tỷ lệ cuộn (scroll depth) để điều chỉnh thứ tự hiển thị. Người dùng có thể tạo các "bộ lọc động" như tech AND (ai OR rust) NOT crypto, thay vì chỉ chọn danh mục tĩnh.
  3. Xác thực qua GitHub + đồng bộ trạng thái
    Sử dụng OAuth 2.0 để đăng nhập; dữ liệu cá nhân (bộ lọc, lịch sử đọc, cấu hình theme) được lưu trữ trong Cloudflare D1 — đảm bảo tính riêng tư và khả năng khôi phục khi chuyển thiết bị.
  4. Cơ chế thu thập thông minh
    Mỗi nguồn được gán một "độ ưu tiên cập nhật" dựa trên tần suất xuất hiện nội dung mới trong 24h gần nhất. Các nguồn nóng (ví dụ: GitHub Trending) được kéo mỗi 90 giây; nguồn ổn định (ví dụ: WSJ RSS) chỉ cập nhật mỗi 45 phút — giảm tải server và tránh bị chặn IP.
  5. Triển khai linh hoạt với cấu hình runtime
    Hỗ trợ triển khai trên Docker, Cloudflare Workers + Pages, hoặc Vercel Edge Functions. Toàn bộ cấu hình được quản lý qua biến môi trường — không cần sửa code để thay đổi hành vi hệ thống.

Công nghệ cốt lõi

  • Licensing: MIT License — cho phép sử dụng thương mại, sửa đổi và đóng gói lại.
  • Frontend: React 18 + TypeScript + TanStack Query + Tailwind CSS. Giao diện tuân thủ WCAG 2.1, hỗ trợ dark/light mode với transition mượt và tùy chỉnh font-size toàn cục.
  • Backend: Bun runtime với HTTP server nhẹ, tích hợp sẵn middleware xác thực và rate limiting. Lưu trữ dữ liệu sử dụng Cloudflare D1 (SQL on Workers), có thể chuyển sang PostgreSQL hoặc SQLite qua abstraction layer.
  • Crawling: Bộ thu thập chạy độc lập dưới dạng Worker, sử dụng Puppeteer Core (headless) cho nguồn yêu cầu render JS, và fetch-native cho RSS/API — đảm bảo độ tin cậy cao.

Ví dụ triển khai với Docker Compose

Dưới đây là file docker-compose.yml đã được tái cấu trúc để tăng tính rõ ràng và bảo mật:

version: '3.9'
services:
  aggregator:
    image: ghcr.io/ourongxing/newsnow:stable
    restart: unless-stopped
    ports:
      - "4444:4444"
    environment:
      - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
      - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
      - AUTH_JWT_SECRET=${AUTH_JWT_SECRET}
      - DB_CONNECTION_URL=sqlite:///data/newsnow.db
      - CACHE_TTL_SECONDS=1800
      - ENABLE_CRAWLER=true
    volumes:
      - ./data:/data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4444/api/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Khởi chạy bằng lệnh:

docker compose up -d

Ứng dụng thực tiễn

  • Người dùng cá nhân: Thiết lập trang tin riêng với tiêu chí lọc theo lĩnh vực chuyên sâu (ví dụ: "tất cả bài viết về Rust trong 7 ngày qua có ít nhất 30 upvote trên Reddit hoặc Hacker News").
  • Nhà phát triển: Nghiên cứu kiến trúc hệ thống tổng hợp dữ liệu phân tán, hoặc đóng góp module xử lý nguồn mới (ví dụ: RSS từ blog cá nhân, feed từ Discord webhook).
  • Tổ chức: Triển khai phiên bản nội bộ để theo dõi xu hướng công nghệ liên quan đến sản phẩm, hoặc tổng hợp báo cáo từ các kênh truyền thông đối tác.

Hướng phát triển tiếp theo

  • Tích hợp mô hình nhỏ (tiny LLM) để tóm tắt tự động và phát hiện chủ đề nổi bật từ tiêu đề/mô tả.
  • Hỗ trợ PWA đầy đủ với offline-first caching và notification push cho các chủ đề đã theo dõi.
  • Mở rộng hệ sinh thái qua plugin system — cho phép cộng đồng viết connector cho nguồn dữ liệu tùy chỉnh (JSON API, Notion DB, Airtable…).

Thẻ: typescript react cloudflare-d1 bun web-crawling

Đăng vào ngày 5 tháng 7 lúc 13:12