Bản tin AI tự động mỗi sáng: gom RSS, GitHub, Jira rồi tóm tắt thành 1 tin nhắn
Tóm tắt
Lịch 7h → lấy dữ liệu (RSS blog công nghệ, release GitHub của repo bạn theo dõi, ticket Jira thay đổi hôm qua) → lọc trùng bằng code → Claude tóm tắt theo 3 mức (cần làm ngay / nên biết / đọc thêm) → gửi một tin nhắn. Làm bằng n8n hoặc claude -p + cron.
Một Technical PM mỗi sáng thường mở 6–8 tab: Jira, GitHub, Sentry, Slack, vài blog công nghệ… chỉ để biết “hôm nay có gì cần xử lý”. Một bản tin AI tự động gom tất cả về một tin nhắn duy nhất lúc 7 giờ sáng, đã được phân loại theo mức độ khẩn — tiết kiệm 20–30 phút mỗi ngày và giảm nguy cơ bỏ sót. Bài này hướng dẫn thiết kế nguồn, prompt, hai cách triển khai (n8n và dòng lệnh) và cách cải thiện theo thời gian.
Kiến trúc
Schedule 7:00 thứ 2–6
→ Thu thập song song: RSS · GitHub releases · Jira · Sentry
→ Code: lọc trùng, lọc theo thời gian (24h), cắt bớt nội dung
→ LLM: tóm tắt + phân loại 🔴🟡🔵, kèm link
→ Gửi Telegram / Slack / email
→ Lưu bản tin vào Sheet/Notion để tra lại
Nguồn gợi ý
| Nguồn | Lấy bằng | Lọc gì |
|---|---|---|
| Blog / tin công nghệ | RSS Read node | Bài trong 24h, từ khoá liên quan stack |
| Release các repo đang dùng | GitHub API hoặc RSS /releases.atom | Bản mới, đánh dấu “breaking” |
| Ticket đổi trạng thái | Jira API (JQL updated >= -1d) | Bị chặn, quá hạn, P1 mới |
| Lỗi production | Sentry / log API | Lỗi mới hoặc tăng đột biến |
| Pull request | GitHub API | PR chờ review > 2 ngày |
Prompt tóm tắt
Bạn là trợ lý của một Technical PM. Từ dữ liệu dưới đây, viết bản tin tối đa 15 dòng:
🔴 Cần xử lý hôm nay (ticket bị chặn, lỗi production, breaking change)
🟡 Nên biết (release mới, thay đổi đáng chú ý, PR chờ lâu)
🔵 Đọc thêm (tối đa 3 link đáng đọc nhất)
Quy tắc:
- Mỗi dòng có link nguồn.
- Không thêm thông tin ngoài dữ liệu được cung cấp.
- Nếu một mục không có gì, ghi "Không có".
{{collected_json}}
Điểm quan trọng là giới hạn độ dài và cấu trúc cố định. Bản tin dài hơn một màn hình điện thoại sẽ nhanh chóng bị bỏ qua.
Cách 1: n8n
- Schedule Trigger 7:00, thứ 2–6.
- Các nhánh song song: RSS Read, HTTP Request (GitHub, Jira, Sentry).
- Code node: gộp, lọc trùng, cắt mỗi mục còn tiêu đề + 200 ký tự + link.
- Node LLM (Anthropic) với prompt trên.
- Telegram/Slack node gửi tin; Google Sheets node lưu lại.
Cách 2: dòng lệnh + cron
# crontab: 7h sáng thứ 2–6
0 7 * * 1-5 /opt/digest/collect.sh \
| claude -p "$(cat /opt/digest/prompt.txt)" \
| /opt/digest/send-telegram.sh
collect.sh gọi các API bằng curl + jq, xuất JSON gọn; claude -p chạy Claude Code ở chế độ không tương tác; script cuối gửi kết quả qua Telegram Bot API. Ưu điểm: không cần server workflow, dễ đưa vào Git.
Nguyên tắc để bản tin hữu ích
- Lọc bằng code trước khi gửi cho model: rẻ hơn, nhanh hơn và tóm tắt tốt hơn vì ít nhiễu.
- Luôn có link nguồn: người đọc kiểm chứng trong một chạm; giảm rủi ro model diễn giải sai.
- Không để AI bịa: dặn rõ “chỉ dùng dữ liệu được cung cấp”; mục trống thì ghi “Không có”.
- Lưu lại lịch sử: tra cứu “tuần trước có gì” và đánh giá chất lượng theo thời gian.
- Chạy khi có lỗi: nếu một nguồn lỗi, vẫn gửi bản tin kèm dòng “Không lấy được dữ liệu Sentry” thay vì im lặng.
Cải thiện sau 2 tuần
- Hỏi người nhận: dòng nào vô ích? Bỏ nguồn đó hoặc siết bộ lọc.
- Có mục nào lẽ ra phải 🔴 mà bị xếp 🟡? Thêm định nghĩa hoặc ví dụ vào prompt.
- Cân nhắc bản tin riêng cho từng vai trò: dev nhận PR/lỗi, PM nhận ticket/rủi ro, lãnh đạo nhận tổng quan tuần.
Áp dụng thế nào?
- Dev: Bắt đầu với 2 nguồn (GitHub + Sentry), thêm dần. Viết
collect.shsao cho chạy độc lập để debug. - Tech Lead: Dùng bản tin như “standup bất đồng bộ” — giảm thời gian họp buổi sáng.
- PM: Bản tin là nguồn dữ liệu tốt cho báo cáo tuần: gom 5 bản tin ngày, cho AI tóm tắt thành báo cáo tiến độ.
Nguồn & tham khảo
- RSS Read node — n8n Docs
- Run Claude Code programmatically — Claude Code Docs