mcpField
D
Diffgrab

Diffgrab

ローカル
github.com/QuartzUnitブラウザ自動化028 週間前に更新

Diffgrab について

Diffgrabは、Webページの更新を監視する開発者や調査者向けの変更追跡ツールです。セクション単位の構造化差分を生成し、SQLiteにスナップショット履歴を保存します。snapgrabによる画面比較にも対応しています。

主な機能

  1. 01Webページの内容変更を検出
  2. 02統一差分とセクション分析の生成
  3. 03読みやすい変更概要の作成
  4. 04SQLiteへのスナップショット履歴保存
  5. 05オプションの画面差分比較

活用シーン

  1. 01ページの新規公開内容の監視
  2. 02変更されたセクションと行の確認
  3. 03ページの過去バージョンの確認
  4. 04スクリーンショット間の見た目の比較

MCP 対応

DiffgrabのMCPサーバーは、URLの登録、変更確認、構造化差分の取得、スナップショット履歴の閲覧、追跡停止を行う5種類のツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"arknill-diffgrab": {
"command": "uvx",
"args": [
"diffgrab"
]
}
}
}
起動コマンドuvx diffgrab

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypidiffgrab0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

diffgrab

PyPI Python License

한국어 문서 · llms.txt

構造化差分によるウェブページの変更追跡です。markgrab + snapgrab を統合し、MCP ネイティブに対応しています。

from diffgrab import DiffTracker

tracker = DiffTracker()
await tracker.track("https://example.com")
changes = await tracker.check()
for c in changes:
    if c.changed:
        print(c.summary)     # "3 lines added, 1 lines removed in sections: Introduction."
        print(c.unified_diff) # Standard unified diff output
await tracker.close()

特長

  • 変更検出 — 任意の URL を追跡し、コンテンツハッシュによってコンテンツの変更を検出します
  • 構造化差分 — 統合差分 + セクション単位の分析(変更された見出しを確認できます)
  • 人が読みやすい要約 — 「セクション Intro、Methods で 5 行追加、2 行削除」
  • スナップショット履歴 — SQLite に保存し、任意のページの過去のバージョンを閲覧できます
  • markgrab を活用 — markgrab による HTML/YouTube/PDF/DOCX の抽出
  • 視覚的な差分 — snapgrab によるスクリーンショット比較(任意)
  • MCP サーバー — Claude Code/MCP クライアント向けの 5 つのツール
  • CLI を同梱 — diffgrab track、check、diff、history、untrack

仕組み

flowchart TD
    A["diffgrab track URL"] --> B["Fetch initial snapshot\n(markgrab + snapgrab)"]
    B --> C["Store baseline"]
    C --> D["diffgrab check"]
    D --> E["Fetch current page"]
    E --> F{"Content\nhash match?"}
    F -->|"changed"| G["Compute structured diff\n+ section analysis"]
    F -->|"unchanged"| H["No changes"]
    G --> I["📊 DiffResult\nadded / removed / modified"]

インストール

pip install diffgrab

オプションの追加機能:

pip install 'diffgrab[cli]'      # CLI with click + rich
pip install 'diffgrab[visual]'   # Visual diff with snapgrab
pip install 'diffgrab[mcp]'      # MCP server with fastmcp
pip install 'diffgrab[all]'      # Everything

使い方

Python API
import asyncio
from diffgrab import DiffTracker

async def main():
    tracker = DiffTracker()

    # Track a URL (takes initial snapshot)
    await tracker.track("https://example.com", interval_hours=12)

    # Check for changes
    changes = await tracker.check()
    for change in changes:
        if change.changed:
            print(change.summary)
            print(change.unified_diff)

    # Get diff between specific snapshots
    result = await tracker.diff("https://example.com", before_id=1, after_id=2)

    # Browse snapshot history
    history = await tracker.history("https://example.com", count=20)

    # Stop tracking
    await tracker.untrack("https://example.com")

    await tracker.close()

asyncio.run(main())
便利な関数
from diffgrab import track, check, diff, history, untrack

await track("https://example.com")
changes = await check()
result = await diff("https://example.com")
snaps = await history("https://example.com")
await untrack("https://example.com")
CLI
# Track a URL
diffgrab track https://example.com --interval 12

# Check all tracked URLs for changes
diffgrab check

# Check a specific URL
diffgrab check https://example.com

# Show diff between snapshots
diffgrab diff https://example.com
diffgrab diff https://example.com --before 1 --after 3

# View snapshot history
diffgrab history https://example.com --count 20

# Stop tracking
diffgrab untrack https://example.com
MCP サーバー

Claude Code の MCP 設定に追加します:

{
  "mcpServers": {
    "diffgrab": {
      "command": "diffgrab-mcp",
      "args": []
    }
  }
}

または uvx を使用します:

{
  "mcpServers": {
    "diffgrab": {
      "command": "uvx",
      "args": ["--from", "diffgrab[mcp]", "diffgrab-mcp"]
    }
  }
}

MCP ツール:

ツール説明
track_url変更追跡する URL を登録します
check_changes追跡中の URL に変更がないか確認します
get_diffスナップショット間の構造化差分を取得します
get_historyスナップショットの履歴を閲覧します
untrack_urlURL の追跡を停止します

DiffResult

すべての差分処理は DiffResult を返します:

@dataclass
class DiffResult:
    url: str                           # The tracked URL
    changed: bool                      # Whether content changed
    added_lines: int                   # Lines added
    removed_lines: int                 # Lines removed
    changed_sections: list[str]        # Markdown headings with changes
    unified_diff: str                  # Standard unified diff
    summary: str                       # Human-readable summary
    before_snapshot_id: int | None     # DB ID of older snapshot
    after_snapshot_id: int | None      # DB ID of newer snapshot
    before_timestamp: str              # When older snapshot was taken
    after_timestamp: str               # When newer snapshot was taken

ストレージ

スナップショットは SQLite の ~/.local/share/diffgrab/diffgrab.db に保存されます(自動作成)。カスタムパスを指定する場合:

tracker = DiffTracker(db_path="/path/to/custom.db")

QuartzUnit エコシステム

パッケージ役割PyPI
markgrabHTML/YouTube/PDF/DOCX を Markdown に変換pip install markgrab
snapgrabURL からスクリーンショットとメタデータを取得pip install snapgrab
docpickOCR + LLM によるドキュメント抽出pip install docpick
feedkitRSS フィードの収集pip install feedkit
diffgrabウェブページの変更追跡pip install diffgrab
browsegrabLLM 向けブラウザーエージェント近日公開

使用例

  • newswatch — RSS ニュース監視パイプライン(feedkit → markgrab → embgrep → diffgrab)
  • watchdeck — 視覚的な差分と安全ガードを備えたウェブページ監視

ライセンス

MIT


QuartzUnit エコシステムの一部です — データ収集、抽出、検索、AI エージェントの安全性に対応する、組み合わせ可能な Python ライブラリです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。