Configs2026年4月10日·1 分钟阅读

changedetection.io — Self-Hosted Website Change Monitoring

changedetection.io monitors websites for content changes and sends alerts. Track price drops, restock alerts, content updates, and page modifications automatically.

AI
AI Open Source · Community
快速使用

先拿来用,再决定要不要深挖

这里应该同时让用户和 Agent 知道第一步该复制什么、安装什么、落到哪里。

docker run -d --name changedetection -p 5000:5000 
  -v changedetection-data:/datastore 
  dgtlmoon/changedetection.io:latest

Open http://localhost:5000 — add a URL and start monitoring for changes.

介绍

changedetection.io is a self-hosted website change detection and monitoring tool. It periodically checks web pages for content changes and sends notifications via email, Slack, Discord, Telegram, webhooks, and 70+ notification channels. Perfect for tracking price drops, monitoring competitor sites, catching restock alerts, and watching for content updates.

With 31.1K+ GitHub stars, changedetection.io is the most popular open-source website monitoring tool, used by individuals and businesses for competitive intelligence, price monitoring, and content tracking.

What changedetection.io Does

  • Content Monitoring: Detect any text change on any web page
  • Visual Diff: Highlighted visual comparison showing exactly what changed
  • CSS/XPath Filters: Monitor specific page sections (price, stock status, etc.)
  • JavaScript Rendering: Support for JavaScript-heavy sites via Playwright browser
  • Price Tracking: Extract and track prices with notifications on drops
  • Notifications: 70+ channels via Apprise (email, Slack, Discord, Telegram, webhooks, etc.)
  • Scheduling: Configurable check intervals per watch (minutes to days)
  • Import/Export: Bulk import URLs, export monitoring configurations
  • API: REST API for programmatic management
  • Tags & Groups: Organize monitored sites with tags

Architecture

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  Web UI      │────▶│ changedetection│──▶│  Target      │
│  (Flask)     │     │  .io Server   │   │  Websites    │
└──────────────┘     └──────┬───────┘    └──────────────┘
                            │
              ┌─────────────┼─────────────┐
              │             │             │
       ┌──────┴──┐   ┌─────┴───┐   ┌─────┴───┐
       │Playwright│   │ Apprise │   │ SQLite  │
       │(JS sites)│   │ (Notify)│   │ (Data)  │
       └──────────┘   └─────────┘   └─────────┘

Self-Hosting

Docker Compose (with Playwright)

services:
  changedetection:
    image: dgtlmoon/changedetection.io:latest
    ports:
      - "5000:5000"
    environment:
      PLAYWRIGHT_DRIVER_URL: ws://playwright-chrome:3000
      BASE_URL: http://localhost:5000
    volumes:
      - changedetection-data:/datastore
    depends_on:
      - playwright-chrome

  playwright-chrome:
    image: dgtlmoon/sockpuppetbrowser:latest
    restart: unless-stopped
    environment:
      SCREEN_WIDTH: 1920
      SCREEN_HEIGHT: 1080

volumes:
  changedetection-data:

Use Cases

Price Drop Monitoring

Watch: https://amazon.com/product-page
CSS Filter: #priceblock_ourprice
Trigger: Text changed
Notification: "Price changed from $99.99 to $79.99!"
  → Send to Telegram + Email

Competitor Monitoring

Watch: https://competitor.com/pricing
CSS Filter: .pricing-table
Check every: 6 hours
Notification: "Competitor pricing page changed!"
  → Send to Slack #competitive-intel

Restock Alerts

Watch: https://store.com/limited-edition-item
CSS Filter: .stock-status
Trigger: Text contains "In Stock"
Notification: "Item is back in stock!"
  → Send to Discord + Push notification

Content & News Monitoring

Watch: https://gov-website.com/policy-updates
CSS Filter: .content-area
Ignore: .sidebar, .footer, .ads
Check every: 1 hour
Notification: "Government policy page updated"
  → Send via Email

Key Features

CSS/XPath Selectors

# Monitor only the price
CSS: .product-price
XPath: //span[@class="price"]

# Monitor article content, ignore sidebar
CSS: article.main-content
CSS Remove: .ads, .related-posts, .comments

# Monitor a table
CSS: table.pricing-comparison

Notification Channels

Email (SMTP)          Slack          Discord
Telegram              ntfy           Gotify
PagerDuty             Pushover       Pushbullet
Microsoft Teams       Webhooks       Matrix
IFTTT                 Home Assistant  Custom scripts
... and 60+ more via Apprise

Visual Diff

changedetection.io shows exactly what changed:

Before: "Regular Price: $99.99"
After:  "Sale Price: $79.99"     ← highlighted in green
Removed: "Regular Price: $99.99" ← highlighted in red

API

# Add a new watch
curl -X POST http://localhost:5000/api/v1/watch 
  -H "x-api-key: YOUR_API_KEY" 
  -H "Content-Type: application/json" 
  -d '{"url": "https://example.com", "tag": "competitor", "minutes_between_check": 60}'

# List all watches
curl http://localhost:5000/api/v1/watch 
  -H "x-api-key: YOUR_API_KEY"

changedetection.io vs Alternatives

Feature changedetection.io Visualping Distill.io Huginn
Open Source Yes No No Yes
Self-hosted Yes No Browser ext. Yes
JS rendering Playwright Yes Yes Manual
Visual diff Yes Yes Yes No
Notifications 70+ channels Email Email + more Flexible
Price tracking Yes No Yes Custom
Ease of use Easy Easy Easy Complex
Pricing Free (self-host) $10+/mo Free + paid Free

常见问题

Q: 可以监控需要登录的页面吗? A: 可以。通过 Playwright 浏览器可以配置登录步骤(填写表单、点击按钮),支持 Cookie 注入和 Header 自定义。

Q: 检查频率可以设到多高? A: 最低可以设置为每分钟检查一次。但建议对大多数网站保持 15-60 分钟的间隔,避免被目标网站封禁 IP。

Q: 需要 Playwright 容器吗? A: 如果你监控的网站是纯 HTML(不依赖 JavaScript 渲染),不需要 Playwright。对于 React/Vue/Angular 等 SPA 网站,需要 Playwright 来渲染 JavaScript 内容。

来源与致谢

讨论

登录后参与讨论。
还没有评论,来写第一条吧。

相关资产