# Giám sát thay đổi trang web: diff các trang công khai dưới dạng Markdown sạch

> Theo dõi các trang web công khai để phát hiện thay đổi: đọc trang giá, chính sách và changelog dạng Markdown, diff văn bản và cảnh báo. Từ 0,07 US$/1K trang.

- URL: https://webreaderapi.com/vi/use-cases/monitoring/
- Cập nhật lần cuối: 2026-10-22
- Đơn vị phát hành: WebReaderAPI (https://webreaderapi.com)

So sánh HTML thô sẽ báo động mỗi khi một quảng cáo hay một token thay đổi. So sánh nội dung chính dưới dạng Markdown chỉ đánh dấu những gì người đọc sẽ nhận ra: một giá mới, một điều khoản được viết lại, một mục changelog mới.

**Câu trả lời nhanh — Làm sao tôi có thể theo dõi các trang web để phát hiện thay đổi nội dung?**

Đọc từng trang theo lịch dưới dạng Markdown của nội dung chính, lưu văn bản và so sánh với phiên bản trước; chỉ cảnh báo khi văn bản thay đổi. **WebReaderAPI** đọc tối đa 100 URL mỗi batch job, loại bỏ quảng cáo và menu để chúng không thể kích hoạt báo động giả, và tính một credit mỗi trang từ 0,07 US$/1K trang tính đến tháng 10 năm 2026. Không cần KYC; thanh toán bằng crypto.

## Giám sát với WebReaderAPI

| Thuộc tính | Giá trị |
| --- | --- |
| Endpoint | `POST https://webreaderapi.com/api/v1/batch`, sau đó `GET https://webreaderapi.com/api/v1/jobs/{job_id}` |
| Kích thước batch | Tối đa 100 URL mỗi batch job |
| Nội dung được so sánh | Markdown của nội dung chính, không có quảng cáo, menu hay banner |
| Tính phí | 1 credit = đọc 1 trang không cần trình duyệt; 2 credit khi trang cần trình duyệt để render JavaScript. Yêu cầu thất bại, hoặc bị robots.txt của trang web từ chối, không bị tính phí |
| Khối lượng mẫu | 200 trang kiểm tra mỗi ngày = khoảng 6.000 trang mỗi tháng |
| Giá | 3,75 US$ cho 10.000 trang; credit không bao giờ hết hạn |

## Có gì đáng để theo dõi?

Những trang mà cách diễn đạt ảnh hưởng đến doanh nghiệp của bạn và thay đổi mà không báo trước:

- **Trang giá** của nhà cung cấp và đối thủ, để thấy gói mới và biến động giá.
- **Điều khoản, chính sách quyền riêng tư và hoàn tiền** mà bạn phụ thuộc, để bắt các điều khoản thay đổi.
- **Changelog và release notes** của các công cụ bạn xây dựng dựa trên, để phản ứng với các thay đổi phá vỡ.
- **Trang tài liệu** mà sản phẩm của bạn liên kết tới, để sửa hướng dẫn hỏng nhanh chóng.
- **Thông báo công khai** từ cơ quan quản lý hoặc tổ chức tiêu chuẩn trong lĩnh vực của bạn.

Giữ danh sách ở các trang công khai. Hồ sơ cá nhân và các trang sau đăng nhập nằm ngoài phạm vi.

## Tại sao lại diff Markdown thay vì HTML?

Vì HTML thay đổi liên tục mà nội dung không đổi. Quảng cáo luân phiên, session token, dấu thời gian ở footer và markup A/B test khiến hai lần tải cùng một trang khác nhau. Diff trên HTML biến sự nhiễu đó thành cảnh báo, và người ta bỏ không đọc nữa.

Markdown của nội dung chính loại bỏ phần lớn nhiễu trước khi bạn so sánh. Cái còn lại là văn bản con người đọc: tiêu đề, đoạn văn, danh sách và bảng. Diff trên phần văn bản đó ngắn, dễ đọc và đáng để cảnh báo.

*Python: kiểm tra một danh sách trang và in ra những gì đã thay đổi*

```python
import difflib
import json
import os
import pathlib
import time

import requests

API = "https://webreaderapi.com/api/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]}
STORE = pathlib.Path("snapshots.json")
URLS = [
    "https://example.com/pricing",
    "https://example.com/legal/terms",
    "https://example.com/changelog",
]

old = json.loads(STORE.read_text(encoding="utf-8")) if STORE.exists() else {}
job = requests.post(API + "/batch", headers=HEADERS, json={"urls": URLS}, timeout=60).json()
results, cursor, delay = [], None, 5
while True:
    params = {"cursor": cursor} if cursor else {}
    page = requests.get(API + "/jobs/" + job["job_id"], headers=HEADERS, params=params, timeout=60).json()
    results += page.get("results", [])
    cursor = page.get("next_cursor")
    if page["status"] == "done" and not cursor:
        break
    if not cursor:
        time.sleep(delay)
        delay = min(delay * 2, 60)

new = dict(old)
for item in results:
    if "markdown" not in item:
        print("not read:", item["url"], item.get("error", {}).get("code"))
        continue
    before = old.get(item["url"], "")
    if before and before != item["markdown"]:
        diff = difflib.unified_diff(before.splitlines(), item["markdown"].splitlines(), lineterm="", n=0)
        print("CHANGED:", item["url"])
        print("\n".join(list(diff)[:40]))
    new[item["url"]] = item["markdown"]
STORE.write_text(json.dumps(new, ensure_ascii=False), encoding="utf-8")

```

## Tôi nên kiểm tra bao lâu một lần, và lịch sự đến mức nào?

Kiểm tra thường xuyên như trang thực sự thay đổi, và không hơn. Hàng ngày phù hợp với trang giá và changelog; hàng tuần phù hợp với chính sách và tài liệu. Một trang đọc mỗi giờ hiếm khi cho bạn biết nhiều hơn một lần đọc mỗi ngày, và tốn gấp 24 lần.

WebReaderAPI tuân theo robots.txt cho mọi trang và tôn trọng `Crawl-delay` của một trang web trong các crawl job. Các trang mà trang web đó không cho phép sẽ bị bỏ qua và không bị tính phí, nên một trang web nghiêm ngặt chỉ đơn giản là biến mất khỏi báo cáo của bạn. Hãy hỏi chủ sở hữu nếu bạn cần truy cập một trang từ chối robots.

## Theo dõi tốn bao nhiêu?

Một credit mỗi trang mỗi lần kiểm tra. Vài ví dụ theo giá tháng 10 năm 2026:

- **50 trang, hàng ngày:** khoảng 1.500 trang mỗi tháng. 10.000 trang (3,75 US$) dùng được hơn sáu tháng.
- **200 trang, hàng ngày:** khoảng 6.000 trang mỗi tháng. 50.000 trang (14,25 US$) dùng được khoảng tám tháng.
- **1.000 trang, hàng tuần:** khoảng 4.300 trang mỗi tháng, gần với trường hợp trước.

Các trang cần trình duyệt dùng hai credit; đặt `render=false` cho những trang bạn biết là HTML thuần để giữ số lượng ở mức một.

## Gói nào phù hợp để theo dõi?

Nhân số trang với số lần kiểm tra mỗi tháng, rồi chọn một gói dùng được vài tháng. Credit không bao giờ hết hạn.

| Gói | Số lượng | Giá | Giá mỗi đơn vị |
| --- | --- | --- | --- |
| Kiểm tra | 10.000 trang | 3,75 US$ | 0,38 US$/1K trang |
| Khởi đầu | 50.000 trang | 14,25 US$ | 0,28 US$/1K trang |
| Xây dựng | 100.000 trang | 21,75 US$ | 0,22 US$/1K trang |

Trong mọi gói: Trích xuất nội dung chính · Render JavaScript khi cần · Trang thất bại và bị từ chối không bị tính phí · Credit không bao giờ hết hạn

**Trước khi bạn thanh toán**

- Nạp tối thiểu 25 US$. Nạp một lần bằng crypto, sau đó mua bất kỳ gói nào từ số dư của bạn.
- Số dư của bạn không có ngày hết hạn và có thể dùng để mua credit trang bất cứ lúc nào. Nếu một pack có giá thấp hơn mức nạp tối thiểu, khoản tiền bạn chỉ nạp thêm để đạt mức tối thiểu đó có thể được hoàn lại theo yêu cầu trong vòng 30 ngày kể từ ngày thanh toán, bằng USDT hoặc USDC, miễn là bạn chưa sử dụng khoản đó. Mọi số dư khác sẽ không được hoàn lại trừ khi pháp luật có quy định khác.
- Được ghi có khi thanh toán của bạn đã được kiểm tra trên blockchain. Thời gian xác nhận mạng thông thường: BTC ≈ 20 phút · USDT TRC-20 ≈ 1 phút · USDT ERC-20 ≈ 5 phút · USDC ERC-20 ≈ 5 phút · ETH ≈ 5 phút · SOL ≈ 1 phút · LTC ≈ 15 phút

## Theo dõi thay đổi: các câu hỏi thường gặp

### WebReaderAPI có gửi cảnh báo không?

Không. Nó đọc các trang và trả về Markdown; script của bạn so sánh các phiên bản và gửi cảnh báo qua email, chat hoặc ticket. Đoạn code ở trên in ra các dòng thay đổi như một điểm khởi đầu.

### Làm sao để tránh báo động giả do ngày tháng và bộ đếm?

So sánh Markdown của nội dung chính, không phải HTML, và gỡ các dòng mà bạn biết thay đổi mỗi lần tải, như "cập nhật 5 phút trước", trước khi diff. Hầu hết các phần tử luân phiên đã được loại bỏ bởi trích xuất nội dung chính.

### Tôi có thể theo dõi các trang cần JavaScript không?

Có. Với `render=auto`, các trang trống nếu không có JavaScript sẽ được render trong trình duyệt headless với giá hai credit. Các trang hoạt động mà không cần JavaScript vẫn giữ ở mức một.

### Tôi có thể theo dõi cả một trang web thay vì một danh sách trang không?

Có: chạy một crawl job thay vì một batch, rồi so sánh từng trang. Với các trang web lớn, hãy so sánh ngày `lastmod` trong sitemap trước và chỉ đọc lại những trang đã thay đổi.

---

WebReaderAPI: WebReaderAPI là web reader API cho AI agent, chuyển mọi trang web công khai thành Markdown sạch, thanh toán bằng crypto không cần tải lên giấy tờ. Credit trả trước từ 0,07 US$/1K trang không bao giờ hết hạn, và robots.txt được tôn trọng. Không cần KYC — không ID, không selfie, không giấy tờ. Thanh toán bằng crypto.
