myspoti
Jetpack Compose로 만든 Spotify 전용 안드로이드 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Collect More News Channel
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗每小時自動蒐集 台灣本地 / 國際 / 財經貿易 / 科技產業 / 資安 五大類重要新聞, 以 RSS/API 為主、Playwright 補強,存入 Neon Postgres,並提供網頁瀏覽、關鍵字篩選、 AI 重要性評分與每日摘要推播。
npm install
# 設定資料庫連線:複製範本後,把 .env 裡的 DATABASE_URL 填上 Neon 連線字串
Copy-Item .env.example .env
npm run db:init # 建立資料表
npm run collect # 抓一次新聞
npm run dev # 開 http://localhost:3000
若要使用 Playwright 補強沒有 RSS 的來源,另外執行一次
npx playwright install chromium。
npm run dev
開啟 http://localhost:3000 — 可瀏覽、分類、搜尋關鍵字、只看重大、右上角「立即更新」手動抓取。
另開一個終端機:
npm run worker
排程器會:
COLLECT_CRON)DIGEST_CRON)想讓它常駐、開機自動啟動,可用 Windows「工作排程器」設定開機執行
npm run worker, 或用 pm2 等程序管理工具。
npm run collect # 手動抓一次
npm run translate # 手動補翻既有未翻譯的英文新聞
npm run digest # 手動產生並推播每日摘要
| 變數 | 說明 |
|---|---|
DATABASE_URL | (必填) Neon Postgres 連線字串,本機與雲端共用 |
ANTHROPIC_API_KEY | 填入後啟用 Claude AI 重要性評分與摘要;不填則用關鍵字判斷 |
AI_MAX_PER_RUN | 每次蒐集最多送幾則給 AI(預設 40,控制成本) |
RUNWAY_API_KEY | 填入後啟用英文新聞自動翻譯(走公司 LLM gateway);不填則不翻譯 |
RUNWAY_BASE_URL | 公司 LLM gateway 位址(預設 https://runway.taitra.ai) |
RUNWAY_MODEL | 逗號分隔的模型清單,依序嘗試(預設 claude-haiku,gpt-5-chat) |
TRANSLATE_MAX_PER_RUN | 每次蒐集最多翻幾則(預設 80,控制成本) |
TEAMS_WEBHOOK_URL | Teams 傳入 Webhook,設定後每日摘要推播到 Teams |
SMTP_HOST / SMTP_PORT / SMTP_USER / SMTP_PASS / DIGEST_EMAIL_TO / DIGEST_EMAIL_FROM | Email 推播設定 |
RETENTION_DAYS | 只保留最近 N 天的新聞,更舊的在每次蒐集時刪除(預設 30) |
COLLECT_CRON | 蒐集排程(預設 0 * * * *,每小時) |
DIGEST_CRON | 摘要排程(預設 0 8 * * *,每天 08:00) |
推播優先序:Teams → Email → console(都沒設定就只印在畫面)。
編輯 src/lib/sources.ts。優先用 RSS:
{ name: '來源名稱', category: '科技產業', rss: 'https://example.com/feed' }
沒有 RSS 的網站,用 Playwright 補強:
{
name: '某網站',
category: '國際',
scrape: {
url: 'https://example.com/news',
itemSelector: 'article.item', // 每則新聞容器
titleSelector: 'h2 a', // 標題(相對 item)
// linkSelector 省略時自動取容器內第一個 <a>
},
}
某個來源抓取失敗不會影響其他來源。
編輯 src/lib/classify.ts 的 KEYWORD_WEIGHTS(關鍵字權重)與 MAJOR_THRESHOLD(重大門檻)。
改 RETENTION_DAYS(預設 30)。
src/
lib/
types.ts 型別定義
sources.ts 新聞來源清單 ← 想加來源改這裡
db.ts Neon Postgres 存取(@neondatabase/serverless)
rss.ts RSS 抓取
scrape.ts Playwright 補強抓取
classify.ts 關鍵字分類與重大判斷 ← 想調權重改這裡
ai.ts Claude AI 評分與摘要
translate.ts 英文新聞翻譯(走公司 LLM gateway)
collector.ts 蒐集編排(抓取→去重→分類→AI→翻譯→入庫)
digest.ts 每日摘要生成與推播
env.ts 載入 .env(給 worker/scripts 用)
scripts/
collect-once.ts 手動蒐集
translate-once.ts 手動補翻既有未翻譯新聞
digest-once.ts 手動摘要
init-db.ts 建立資料表
worker.ts 本機 node-cron 排程器
app/ Next.js 網站(App Router)
page.tsx 新聞列表頁
api/news JSON API
api/collect 手動觸發蒐集
.github/workflows/
collect.yml 雲端每小時蒐集(GitHub Actions)
digest.yml 雲端每日摘要(GitHub Actions)
把網站放上 Vercel、排程交給 GitHub Actions、資料庫用 Neon, 即可全雲端、隨時隨地觀看,不必開自己的電腦。
👉 完整步驟見 DEPLOY.md
本機的
npm run worker(node-cron)與雲端的 GitHub Actions 是兩種排程方式,擇一即可: 自己電腦長開就用 worker;要全雲端就用 GitHub Actions。