為什麼做這個專案
每天早上滑新聞,常常一滑就半小時,真正有用的可能只有三則。這個專案讓 Python 幫你收集、讓 LLM 幫你讀,你只要看結果。
它也是一個很完整的練習:抓資料、清理、呼叫 API、處理輸出、自動化,一次串起前面三個單元學到的東西。做完你會很清楚,一個「AI 應用」裡,哪些部分是一般程式,哪些部分才真的需要 AI。
四個步驟裡只有一步用到 LLM,其餘都是你已經會的 Python。
開始前的準備
- 完成「資料與自動化」,會用 Python 呼叫 API、處理 JSON
- 完成「LLM API」,已經申請好 API 金鑰,並放在環境變數裡
- 挑兩到三個有 RSS 的新聞來源。很多新聞網站、部落格和政府機關都有提供
- 建立專案資料夾和虛擬環境,安裝
feedparser和anthropic套件
實作指南
里程碑 1:抓到新聞列表
feedparser 可以幫你讀 RSS,不用自己解析:
import feedparser
FEEDS = [
"https://example.com/tech/rss",
"https://example.com/business/rss",
]
for url in FEEDS:
feed = feedparser.parse(url)
for entry in feed.entries[:5]:
print(entry.title, entry.link)
把網址換成你挑的來源。如果某個來源抓不到東西,把錯誤訊息貼給 AI 問原因,常見的是網址不是真正的 RSS。
里程碑 2:篩選與去重
同一則新聞常在不同來源重複出現。請 AI 幫你寫篩選函式,但規則由你決定:
我有一個 list,每個元素是 feedparser 的 entry。請寫一個函式:只保留 24 小時內發布的新聞、去掉標題幾乎一樣的重複新聞,最多回傳 15 則。請說明你怎麼判斷「標題幾乎一樣」,並寫兩個簡單的測試案例。
上限很重要,它直接決定每天的 API 花費。
里程碑 3:讓 LLM 寫摘要
這是整個專案的核心。用系統提示定好規則,並要求固定格式的輸出:
import os
import anthropic
client = anthropic.Anthropic() # 會自動讀取 ANTHROPIC_API_KEY
SYSTEM = """你是新聞編輯,為忙碌的上班族整理晨報。
只根據提供的標題與摘要撰寫,不要加入原文沒有的資訊。
用 JSON 回覆,欄位:category(科技、財經、國際、其他)、points(三句繁體中文重點)。"""
def summarize(title, summary):
resp = client.messages.create(
model=os.environ["MODEL_NAME"],
max_tokens=500,
system=SYSTEM,
messages=[{"role": "user", "content": f"標題:{title}\n摘要:{summary}"}],
)
return resp.content[0].text
模型名稱放在環境變數,到服務商的官方文件查目前可用的名稱,之後要換模型也不用改程式。
拿到回覆後,用 json.loads 轉成字典。偶爾模型回覆的格式會跑掉,請 AI 教你加上錯誤處理:解析失敗時重試一次,還是失敗就跳過這則。
里程碑 4:組成晨報並送出
把結果依分類排好,寫成 Markdown 檔:
# 晨報 2026-11-07
## 科技
- **標題**:三句重點……(原文連結)
## 財經
- ……
一定要附上原文連結。摘要是幫你判斷要不要點進去讀,不是取代原文。想更進一步,可以請 AI 教你用 Email 寄給自己。
里程碑 5:排程與成本檢查
用「資料與自動化」學過的排程方法,讓程式每天早上自動執行。跑一週後檢查兩件事:
- 花費:到 API 服務商的後台看用量,算出一天大約多少錢
- 品質:隨機挑五則摘要對照原文,有沒有講錯或加料
這是我的系統提示,以及三則我覺得摘要得不好的例子(附原文)。請分析問題出在哪裡,並建議修改後的系統提示。
延伸挑戰
- 讓使用者用一個設定檔決定關注的關鍵字,只摘要相關新聞
- 把十五則新聞合併成一次 API 呼叫,比較成本和品質的差異
- 加一段「今天最值得讀的一則」,並請模型說明理由
- 把晨報送到你的聊天軟體頻道
- 程式能從至少兩個來源抓新聞,並篩選、去重
- 每則摘要都有分類、三句重點和原文連結
- API 金鑰沒有出現在程式碼或 Git 紀錄裡
- 已經連續自動執行至少三天
- 你知道一天大約花多少錢,也抽查過摘要的正確性
做完了?分享你的作品!
到交流區貼上作品連結和心得,你的經驗會幫到下一個人。
專案討論
卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。