Initial commit.
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
|||||||
|
# The Wikimedia Taiwan Internation Brief Generator.
|
||||||
|
# Copyright 2026 imacat. All rights reserved.
|
||||||
|
# Authors:
|
||||||
|
# imacat@mail.imacat.idv.tw (imacat), 2026/6/8
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
.idea
|
||||||
|
.claude
|
||||||
|
|
||||||
|
excludes
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# 維基國際短訊 自動化
|
||||||
|
|
||||||
|
每週自動產生維基媒體運動「國際短訊」,用本機 `mail` 寄給秘書長過目、篩選後採用至月訊。
|
||||||
|
台灣維基媒體協會用。
|
||||||
|
|
||||||
|
短訊的**產生規則**(來源、挑選、翻譯、格式、收件人、寄送方式)全部寫在 `wmtw-briefs.md`,
|
||||||
|
本文件不重複,只談簡介、部署與維護。
|
||||||
|
|
||||||
|
運作方式:cron 每週觸發一次 Claude Code headless(`claude -p`),把 `wmtw-briefs.md` 當提示
|
||||||
|
餵進去,它讀 wikimedia-l 過去七天內容、產繁中純文字短訊、用本機 `mail` 寄出,全程無人工介入。
|
||||||
|
用訂閱登入憑證執行,不另計付費 API。
|
||||||
|
|
||||||
|
## 部署
|
||||||
|
|
||||||
|
### 前置需求
|
||||||
|
|
||||||
|
執行 cron 的主機需具備:
|
||||||
|
|
||||||
|
- **Claude Code CLI**,且已用會員帳號 `/login` 過(headless 才有訂閱憑證、不另計費);
|
||||||
|
cron 須掛在這個已登入的使用者底下。
|
||||||
|
- **本機 mail**(如 exim4/sendmail,免 SMTP 認證即可送出)。
|
||||||
|
- **locale `zh_TW.UTF-8`**(中文主旨與內文才正常)。
|
||||||
|
|
||||||
|
### 步驟
|
||||||
|
|
||||||
|
部署位置(系統路徑、crontab)為固定處所,以下用絕對路徑;其餘指涉本專案檔案處皆用相對路徑。
|
||||||
|
|
||||||
|
1. 把指示檔放到系統位置:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo cp wmtw-briefs.md /etc/wmtw-briefs.md
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 找出 claude 執行檔的完整路徑(cron 的 PATH 很精簡,必須寫完整路徑):
|
||||||
|
|
||||||
|
```
|
||||||
|
command -v claude
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 在**已登入會員帳號的使用者**底下 `crontab -e`,加入下列一行
|
||||||
|
(把 `<claude完整路徑>` 換成上一步結果):
|
||||||
|
|
||||||
|
```
|
||||||
|
0 18 * * 1 <claude完整路徑> -p "$(cat /etc/wmtw-briefs.md)" --allowedTools WebFetch Bash >> /tmp/wmtw-briefs.log 2>&1
|
||||||
|
```
|
||||||
|
|
||||||
|
- `0 18 * * 1`:每週一 18:00,可自行調整時段。
|
||||||
|
- headless 放行的工具:`WebFetch`、`Bash`。
|
||||||
|
- 收件人寫在 `/etc/wmtw-briefs.md` 裡,不在 crontab。
|
||||||
|
|
||||||
|
## 維護
|
||||||
|
|
||||||
|
- **改產生規則或收件人**:編輯部署後的 `/etc/wmtw-briefs.md`,不必動 crontab。
|
||||||
|
- **沒收到信**:查 crontab 導向的 log;確認郵件佇列沒卡(`mailq`);
|
||||||
|
確認 claude 訂閱憑證未過期(在該使用者底下重跑互動式 `claude`,若要求重新登入即為過期)。
|
||||||
|
- **中文亂碼**:檢查 crontab 那行有沒有帶 `LANG=zh_TW.UTF-8`。
|
||||||
|
- **內容偏少**:wikimedia-l 某些週本來就稀疏,指示檔已交代據實產短、不硬湊,屬正常。
|
||||||
|
- **上線前測試**:複製一份指示檔、把收件人改成自己(勿寄秘書長),手動跑
|
||||||
|
`<claude完整路徑> -p "$(cat <測試指示檔>)" --allowedTools WebFetch Bash`,
|
||||||
|
確認中文、純文字排版與內容無誤後再正式啟用。
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Wikimedia Taiwan International Brief Generator
|
||||||
|
# Copyright 2026 imacat. All rights reserved.
|
||||||
|
# Authors:
|
||||||
|
# imacat@wikimedia.tw (imacat), 2026/6/10
|
||||||
|
|
||||||
|
# The configuration example for the International Brief Generator.
|
||||||
|
# Install this file as config in the /etc/wmtw-briefs directory.
|
||||||
|
#
|
||||||
|
# sudo mkdir -p /etc/wmtw-briefs
|
||||||
|
# sudo cp config.example /etc/wmtw-briefs/config
|
||||||
|
#
|
||||||
|
|
||||||
|
# The recipients.
|
||||||
|
TO=recipient1@wikimedia.tw,recipient2@wikimedia.tw
|
||||||
|
# The CC recipients.
|
||||||
|
CC=cc1@wikimedia.tw,cc2@wikimedia.tw
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
# 維基國際短訊(國際短訊)週度產生器
|
||||||
|
|
||||||
|
讀 wikimedia-l 郵件論壇過去七天的內容,挑出值得入訊者,譯成繁體中文純文字,
|
||||||
|
用本機 `mail` 寄給秘書長。秘書長過目、篩選後採用至月訊。
|
||||||
|
**唯一來源是 wikimedia-l,不要 WebSearch、也不要抓其他網站。**
|
||||||
|
全程自動執行到「寄出」為止,不要中途停下來問問題。
|
||||||
|
|
||||||
|
## 步驟一:時間範圍
|
||||||
|
|
||||||
|
每週執行,蒐集過去七天有活動的討論串。短訊標題用當週日期範圍,例如「2026/6/1–6/7」。
|
||||||
|
|
||||||
|
## 步驟二:來源——wikimedia-l 封存頁(HyperKitty 網頁,用 WebFetch 讀)
|
||||||
|
|
||||||
|
- 最近活動(優先):
|
||||||
|
`https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/latest`
|
||||||
|
- 當月封存(月份不補零,如 6 月為 `/6/`):
|
||||||
|
`https://lists.wikimedia.org/hyperkitty/list/wikimedia-l@lists.wikimedia.org/{YYYY}/{M}/`
|
||||||
|
- 執行日落在月初七天內時,一併抓上個月封存頁以涵蓋滿七天。
|
||||||
|
|
||||||
|
做法:先列出過去七天有活動的討論串(主旨、日期、連結),再對相關者開其討論串頁
|
||||||
|
(`.../thread/<ID>/`)讀內文取得細節與日期。
|
||||||
|
|
||||||
|
## 步驟三:挑選(以維基會議與期程為主)
|
||||||
|
|
||||||
|
從討論串中挑出會議與活動消息,目標約 8–15 則。每則盡量蒐齊**期程**:
|
||||||
|
會議日期、地點;補助/獎學金、投稿/提案、報名等各截止日;以及本週(這七天)的新進展。
|
||||||
|
|
||||||
|
三個範圍維度盡量都照顧(以清單實際有的內容為準):
|
||||||
|
- **全球性**:Wikimania、Wikimedia Summit、全球徵件與補助等。
|
||||||
|
- **地區性(ESEAP)**:ESEAP Conference/Summit、區域內各國活動與徵件。
|
||||||
|
- **主題性**:Wikidata、WikiWomen(Women in Red 等)、Wikimedia LGBT+(Wiki Loves Pride 等),及其他維基計畫。
|
||||||
|
|
||||||
|
各範圍、各則同等重要,不分優先高低。
|
||||||
|
|
||||||
|
已截止的期程,除非會議本身仍將舉行且具參考價值,否則略過或註明「已截止」;
|
||||||
|
但務必確保**即將截止**的期程被列出。若該週清單幾乎沒有會議內容,就據實產一份簡短短訊
|
||||||
|
說明「本週無重要會議期程消息」,可摘一兩則受關注的討論,不要硬湊。
|
||||||
|
|
||||||
|
## 步驟四:翻譯與用語
|
||||||
|
|
||||||
|
全部譯成**繁體中文、台灣用語**;多語內容一律譯為中文。日期一律寫清楚(年/月/日),
|
||||||
|
不用「下週」「月底」這類相對說法。
|
||||||
|
|
||||||
|
避免中國大陸用語:軟體(非軟件)、行動(非移動)、應用程式/App、社群(非社區)、
|
||||||
|
使用者(非用戶)、專案/計畫(非項目)、資訊(非信息)、影片(非視頻)。
|
||||||
|
專有名詞:維基媒體基金會/維基百科/維基數據(Wikidata)/維基共享資源(Commons)等;
|
||||||
|
Wikimania、ESEAP、Women in Red、Wiki Loves Pride 等慣用原文者保留原文;
|
||||||
|
不確定的正式譯名保留原文、可加註,不要硬譯。
|
||||||
|
|
||||||
|
## 步驟五:查證標記
|
||||||
|
|
||||||
|
- 期程日期說法不一或不確定:於日期後加「(待確認)」。
|
||||||
|
- 僅為討論/提議、尚未定案:註明「討論中」。
|
||||||
|
|
||||||
|
## 步驟六:內容格式(純文字)
|
||||||
|
|
||||||
|
開頭放一段**「近期截止提醒」**:把一兩週內即將截止的投稿/補助/報名期程,
|
||||||
|
依截止日由近到遠條列(會議名稱 — 期程類別 — 截止日)。本週若無迫近期程,註明即可。
|
||||||
|
|
||||||
|
其後分三區塊(無內容者可省略),每則連續編號:
|
||||||
|
|
||||||
|
```
|
||||||
|
近期截止提醒
|
||||||
|
一、全球性會議與活動
|
||||||
|
二、地區性(ESEAP)會議與活動
|
||||||
|
三、主題性社群活動(Wikidata/WikiWomen/Wikimedia LGBT+ 等)
|
||||||
|
```
|
||||||
|
|
||||||
|
每則:**名稱**(範圍標註)/會議日期、地點/重要期程(有哪些列哪些)/
|
||||||
|
本週動態(若有)/來源連結(該討論串網址)。
|
||||||
|
|
||||||
|
純文字排版,用分隔線與編號即可,不要 HTML。
|
||||||
|
頂部加一行:「本則由 Claude Code AI 自動整理自 wikimedia-l 郵件論壇過去七天內容。」底部註明「來源:wikimedia-l」。
|
||||||
|
|
||||||
|
## 步驟七:寄出(純文字,本機 mail)
|
||||||
|
|
||||||
|
不要用 shell 變數存檔名。跑 `mktemp` 後,
|
||||||
|
記下它印出的**實際檔名**,後續都用那個字面檔名操作:
|
||||||
|
|
||||||
|
1. 跑 `mktemp /tmp/wmtw-brief.XXXXXX`,記下它印出的實際檔名。
|
||||||
|
2. 把整理好的純文字短訊寫到該檔名。收件人與副本名單存在 `/etc/wmtw-briefs/config`
|
||||||
|
(該檔每行一項:`TO=收件人`、`CC=副本`,位址以逗號分隔)。直接讀該檔,取出 `TO` 與 `CC`
|
||||||
|
兩行等號後的字面值,再用本機 `mail` 從該檔名寄出(`-c` 帶副本、收件人放最後):
|
||||||
|
`mail -s "【維基國際短訊】{YYYY/M/D}–{YYYY/M/D}" -c <CC的值> <TO的值> < <實際檔名>`
|
||||||
|
3. 刪除該檔名:`rm -f <實際檔名>`
|
||||||
|
|
||||||
|
寄出後回報:共幾則、各區塊則數、有哪些即將截止的期程。
|
||||||
Reference in New Issue
Block a user