
Ahrefs vừa ra mắt một API theo dõi web có tên Firehose, và tôi đã thử nghiệm bản beta miễn phí này một cách cực kỳ hứng thú.

Firehose làm được gì?
Firehose theo dõi toàn bộ web theo thời gian thực và thông báo khi có nội dung khớp với tiêu chí của bạn. Có ai đó đăng bài nhắc đến thương hiệu của bạn? Đối thủ cập nhật trang pricing? Một bài list keyword mới xuất hiện mà bạn không có mặt?
Tôi nghĩ bạn hiểu ý rồi.
Tôi đã tận dụng bản beta này để xây 5 công cụ marketing cho Morgen sử dụng Firehose làm bước đầu tiên. Mỗi tool chỉ là một script Node.js đơn giản. Không database. Không server. Chỉ là các job chạy theo lịch mỗi ngày.
Bài này sẽ giải thích cách Firehose hoạt động và đi qua tool đầu tiên: hệ thống theo dõi brand mention và gửi báo cáo hằng ngày lên Slack.
Hãy xem nó như Google Alerts có thể lập trình — nhưng mạnh hơn nhiều với filter nâng cao.
Cách tạo một “tap”
Tap là feed cá nhân của bạn. Trong đó bạn tạo các rule — mỗi rule là một truy vấn xác định điều bạn muốn bắt.
Ví dụ:
“Thông báo khi có bài viết mới chứa cụm ‘[brand] alternatives’ trên domain của đối thủ.”
Dạng query:
"morgen alternatives" AND domain:reclaim.ai AND page_type:"/Article"
Syntax này gọi là Lucene. Nhìn có vẻ phức tạp nhưng thực ra chỉ là kết hợp AND, OR, NOT.
Các field hữu ích:
"keyword"— match nội dung mớidomain— lọc theo websitetitle— tiêu đềpage_type— loại trang (110+ loại)page_category— category lớnlanguage— ngôn ngữrecent— thời gian (24h, 7d)- URL pattern — wildcard / regex
Ví dụ nâng cao:
"best calendar apps" AND page_type:"/Article/Listicle" AND language:"en" AND NOT domain:morgen.so
Mỗi rule có:
- Quality filter
- NSFW filter
Filters
Bạn có thể tạo query reusable (domain đối thủ, pattern URL) và gọi lại bằng $filtername.

Buffer 24 giờ
Firehose giữ buffer 24h cho tất cả event. Bạn không cần chạy realtime.
Các tool của tôi chạy bằng GitHub Actions mỗi ngày, lấy data 24h gần nhất rồi xử lý.
Tool #1: Brand Radar gửi Slack mỗi ngày

Ý tưởng: biết ngay khi có ai nhắc đến brand của bạn — gửi về Slack mỗi sáng.
Architecture:

GitHub Actions (daily)
→ Connect Firehose
→ Replay 24h data
→ Format Slack message
→ Send via webhook
Các rule tôi dùng

Rule 1 — Domain:
"morgen.so"
Rule 2 — Product:
"morgen app" OR "morgen calendar" OR "morgen" AND NOT language:"de"
Rule 3 — Title:
title:morgen AND NOT language:"de"
Rule 4 — Backlink:
added_anchor:morgen AND NOT language:"de"
Rule 5 — YouTube:
domain:youtube.com AND page_type:"/Video" AND title:morgen AND NOT language:"de"
Tổng cộng 5 rule — vẫn còn nhiều slot để mở rộng.
Kết nối hệ thống
Cần chuẩn bị:
- Firehose account + tap token
- Slack webhook
Bước 1 — tạo tap
Đăng ký, tạo tap, lấy token.
Bước 2 — tạo webhook Slack
Tạo app tại Slack, bật Incoming Webhook, chọn channel.
Bước 3 — lưu .env
FIREHOSE_TAP_TOKEN=fh_xxx
SLACK_WEBHOOK_URL=https://hooks.slack.com/...
Bước 4 — tạo rule
npm run setup
Hoặc dùng curl:
curl -X POST \
-H "Authorization: Bearer $FIREHOSE_TAP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"value": "\"morgen.so\"", "tag": "brand-domain"}' \
https://api.firehose.com/v1/rules
Bước 5 — test
