尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證竹梅活動觀測站 — 清大 × 陽明交大校園活動自動彙整(社團 IG/FB/Threads/X、校園公告 → LLM 抽取 → 網站/Telegram/RSS/ICS)
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
清大 × 陽明交大校園活動自動彙整 從公開公告與社群貼文整理活動,提供網站、推播、行事曆、RSS、Bot 與 AI 查詢介面。 「竹梅」取自梅竹賽的梅(清華,梅貽琦)與竹(交大,凌竹銘),倒過來唸——都有梅竹了,怎麼能沒有竹梅呢?檢視完整 README ↗
「竹梅」取自梅竹賽的梅(清華,梅貽琦)與竹(交大,凌竹銘),倒過來唸——都有梅竹了,怎麼能沒有竹梅呢?
https://chumei.observe.tw/mcp),讓支援 MCP 的 AI 助理搜尋活動、查名錄與建立訂閱網址。竹梅只彙整公開資訊,主要來源包括:
data/sources/,以兩校官方社團名冊為底。活動時間、地點、報名方式與例行社課時段由 LLM 從貼文文字及海報擷取,再經程式後驗、來源歸戶與跨來源去重。資訊不足或信心偏低的結果會標示「待確認」;實際資訊仍以主辦單位原始公告為準。
flowchart LR
A[公開公告與社群來源] --> B[抓取與正規化]
B --> C[(Inbox JSONL)]
C --> D[LLM 文字與海報抽取]
D --> E[後驗、去重、單位歸戶]
E --> F[靜態網站與 PWA]
E --> G[RSS、ICS、JSON API]
E --> H[Telegram、Push、Bot、MCP]
I[OAuth 帳號與使用者偏好] --> F
I --> G
I --> H
| 路徑 | 用途 |
|---|---|
data/sources/*.csv | 人工維護的社團、單位、社群帳號、公告站與場地座標名冊 |
data/feeds/inbox/ | 各來源 adapter 正規化後的 JSONL |
scripts/fetch_*.py | 公告、Instagram、Facebook、Threads、X、WordPress 與限動抓取器 |
scripts/extract_events.py | LLM 活動判別、文字/海報欄位抽取與快取 |
scripts/build_site.py | 合併、去重、單位歸戶、場地定位,產生網站、feeds 與 API |
scripts/auth_server.py | OAuth、Session、個人頁、「我會去」、回報與帳號型自訂訂閱 |
scripts/apify_contributions.py | 社群 Apify 帳號驗證、加密保存、排行榜與動態抓取加速 |
scripts/push_server.py | Web Push 訂閱 API 與帳號綁定 |
scripts/publish_push.py | 依偏好滴灌新活動與「我會去」提醒 |
scripts/publish_telegram.py | 以原始貼文為單位發布 Telegram 訊息 |
scripts/bot_core.py | Telegram/LINE 共用的自然語句活動查詢核心 |
scripts/mcp_server.py | 唯讀 MCP server,資料源為目前已發布版本 |
scripts/run_pipeline.py | 定期抓取、抽取、建站與發布的 orchestrator |
site/ | 網站範本、品牌資產及本機建站/抓取快取 |
published/current | Caddy 提供的已驗證正式版本(原子 symlink 切換) |
deploy/ | macOS launchd 服務與 Caddy 路由範本 |
docs/SCHEMA.md | Inbox 與抽取資料格式 |
目前有效的維護指南是 架構與維運,其中集中列出服務、發布/回復、備份、監控與功能驗收。請依工作選擇對應流程:
PLAN.md 是 2026-08-21 的歷史紀錄;不再用作待辦清單。進行中的工作以 Issues 為準。
登入、訂閱簽章與 Apify 貢獻加密設定由被 Git 忽略的 .env/.env.apify(權限 0600)或程序環境變數提供;網站不再讀取 macOS Keychain。Web Push VAPID 私鑰仍保存在受保護的 state/push/,隨推播狀態備份。請勿把 OAuth secret、Telegram token、社群 cookie 或 state/ 內的使用者資料提交到 repository。完整 pipeline 會存取外部供應商並可能消耗額度;日常程式驗證使用上述隔離 CI 流程。
NYCU OAuth Authorization Code 應用程式的 callback:
https://chumei.observe.tw/auth/nycu/callback
Google OAuth 2.0 Web application 的 callback:
https://chumei.observe.tw/auth/google/callback
清大登入走 NTHUMods Auth(OpenID Connect,public client chumei-observe,PKCE S256,沒有 client secret)。NTHUMods 登記的 redirect URI 不帶 provider 段:
https://chumei.observe.tw/auth/callback
服務會用 JWKS 驗 id_token 的簽章、iss、aud、exp 與 nonce,帳號以 sub(學號)為鍵,顯示名稱取 name。若之後 NTHUMods 另外登記 /auth/nthu/callback,設定 CHUMEI_NTHU_OAUTH_REDIRECT_PATH 即可切換;CHUMEI_NTHU_OAUTH_CLIENT_ID 留空可關閉清大登入。
開發及正式環境均可在 .env 設定(純 KEY=value,不要加引號或 export):
CHUMEI_NYCU_OAUTH_CLIENT_ID=
CHUMEI_NYCU_OAUTH_CLIENT_SECRET=
CHUMEI_GOOGLE_OAUTH_CLIENT_ID=
CHUMEI_GOOGLE_OAUTH_CLIENT_SECRET=
CHUMEI_NTHU_OAUTH_CLIENT_ID=chumei-observe
CHUMEI_NTHU_OAUTH_REDIRECT_PATH=/auth/callback
CHUMEI_AUTH_PUBLIC_BASE_URL=https://chumei.observe.tw
CHUMEI_FEED_SIGNING_KEY=
CHUMEI_APIFY_CONTRIBUTION_KEY=
上述登入、訂閱簽章與 Apify 貢獻加密設定只由環境檔與程序環境變數提供。.env.apify 會覆蓋 .env 同名項目,程序中的 CHUMEI_* 設定再覆蓋檔案;環境檔與備份均須限制權限。舊機的 Keychain 值需要在部署前一次性移入 .env,並保留實際生效的訂閱簽章與 Apify 加密金鑰,詳見 停用 Keychain 與金鑰遷移。舊 Keychain 項目可保留但程式不會再使用。
三種登入可在帳號頁互相綁定。若該身分已有帳號,系統會把追蹤、參加標記、回報、已儲存訂閱與 Session 合併到目前帳號;解除綁定時至少保留一種登入方式。
/account/:帳號設定、登入方式、行事曆、回報、自訂訂閱與刪除帳號;/account/privacy 說明資料保留。/contribute/:社群 Apify 額度貢獻、每日優先點數、排行榜與已註冊帳號池。/@handle:新帳號預設不公開,可由使用者在設定中主動公開。/auth/calendar/{token}.ics:「我會去」活動的私密行事曆,可由帳號頁換發。/feeds/custom.ics、/feeds/custom.xml:不需登入的多維條件組合。/feeds/s/{signed-token}.ics、.xml:帳號儲存的私密訂閱;修改條件不更換網址,除非使用者主動換發。CHUMEI_FEED_SIGNING_KEY 未另外設定時,服務會從 NYCU OAuth client secret 做用途隔離後衍生簽章金鑰;資料庫只保存 public ID,不保存可直接使用的完整 signed token。
CHUMEI_APIFY_CONTRIBUTION_KEY 未另外設定時,同樣會從 NYCU OAuth client secret 做用途隔離後衍生 Fernet 金鑰。貢獻者的 Apify token 在寫入 SQLite 前即加密;公開 API、排行榜與 log 只使用遮罩代號和額度資訊。
帳號服務由 deploy/tw.observe.chumei.auth.plist 常駐在 127.0.0.1:8324。Caddy 需將 /auth/*、/account*、/contribute*、/@*、/feeds/custom.* 與 /feeds/s/* 反代到該服務。
CHUMEI_TELEGRAM_ENABLED=true 啟用;正式發送前可執行 scripts/publish_telegram.py --check 與 --dry-run。state/。登入者可從 /submit/ 或帳號頁提交活動/帳號連結。scripts/process_submissions.py 會定期:
每人每日最多 10 筆,相同連結會去重。可公開驗證的學校單位或社團帳號會進入來源審核流程。
site/assets/og-default.png(1200 × 630)site/assets/brand/logo-square-*.pngsite/assets/favicon.svg 與 site/assets/brand/logo-mark-*.pngsite/assets/fonts/chumei-brand*.woff2活動資訊有誤、主辦單位希望調整或下架,可從網站登入後回報,或寄信至 [email protected]。GitHub Issues 僅處理程式問題;轉載的海報與貼文均附原始來源,主辦單位要求即下架。
程式碼採用 MIT License;活動內容版權屬各主辦單位。