Seo Notary

io.github.raxocode由 GitHub 帳號 raxocode 發布v0.1.0更新於 Oct 25, 2026

Verify what a web page really returns over HTTP and in a browser. Deterministic, local, no LLM.

概覽

AI 產生的概覽

一個本機 MCP 伺服器,透過 HTTP 與真實瀏覽器抓取網頁,回傳確定性的 SEO 檢查結果,讓助理核實頁面實際回傳的內容。

可以做什麼
一次呼叫即可驗證 URL,回傳結構化報告與簡短摘要,涵蓋原始回應中的 HTTP 狀態、重新導向、內容類型、標題、meta 描述、canonical、robots 指令與 JSON-LD 語法。啟用瀏覽器層級後,比對標題、canonical、robots meta 與描述在原始與渲染後的差異,並回報水合錯誤、未攔截的頁面錯誤、主控台錯誤與失敗請求。查詢規則目錄,了解 23 條規則及每條規則無法證明的事項。
適用情境
適合程式碼助理修改前端或頁面程式碼後,需要證據說明頁面實際回傳什麼(包括 JavaScript 執行之後),而不只是聲稱已完成。也適合需要確定性通過/失敗與結束代碼的本機開發檢查與 CI 流程。
執行需求
透過 npx 從 seo-notary npm 套件啟動的本機程序,需要 Node 22.19.0 或更新版本。瀏覽器層級另需透過 install-browser 指令安裝 Chromium。未宣告任何帳號、API 金鑰或環境變數。
安裝前請注意
伺服器會抓取所給的任意 URL;預設 local 網路設定允許 localhost 與私有主機,strict 設定僅允許公開主機。頁面內容被視為不可信證據。目前為 0.1 早期版本,規則輸出與嚴重程度可能變動。尚未進行第三方安全稽核,瀏覽器層級並非像素級精確。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Seo Notary,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

SEO Notary

Verify what a web page really returns, so your coding agent can fix it and prove it.

HTTP and real-browser checks for Claude Code, Cursor, VS Code and CI. Deterministic. No LLM. One command.

Status: 0.1 (early release). APIs, rule output and rule severities may still change between 0.x releases; see the changelog.

Coding agents edit page code but cannot see what the page actually serves. Client-side scripts overwrite titles and canonicals, server rendering breaks, redirects bounce, and the agent reports "done" without evidence. SEO Notary fetches the page, runs deterministic rules over the response and the rendered DOM, and returns structured findings with stable exit codes.

text
$ seo-notary verify http://127.0.0.1:4173/broken --tier browserFAIL http://127.0.0.1:4173/brokentier browser (faithful), 1153 ms, 0 redirects, HTTP 200  title        Acme Widgets | Handmade widgets for every workshop  canonical    http://127.0.0.1:4173/broken  rendered DOM  title        Loading...  canonical    https://staging.acme.example/broken
2 errors, 0 warnings, 0 info; 20 rules passed
ERROR   RENDER_TITLE_DIFFERS  head > title  The title changes after JavaScript runs.  raw:      Acme Widgets | Handmade widgets for every workshop  rendered: Loading...  fix: Make the server-rendered title and the client-rendered title agree.$ echo $?1

That output is abridged from a real run of the demo in this repository. Remove the script that rewrites the title and canonical and the same command prints PASS and exits 0.

Quickstart

Requires Node >=22.19.0.

bash
# Tier 1: raw HTTP and HTML. No browser, nothing to download.npx seo-notary verify http://localhost:3000/
# Tier 2: also render the page in Chromium and compare raw vs rendered.npx seo-notary install-browsernpx seo-notary verify http://localhost:3000/ --tier browser

To run from a checkout instead: npm install && npm run build, then node packages/cli/dist/bin.js verify <url>.

Exit codes: 0 pass, 1 findings at or above --fail-on (default error), 2 operational failure (bad input, network, timeout, policy, browser). Use --format json for exactly one JSON document on stdout. Details: docs/CLI.md.

Use it from an agent

seo-notary mcp runs a local MCP server over stdio with two tools: verify_url and get_rule_catalog. verify_url returns the full report as structured content plus a short summary, in one call. See docs/MCP.md for what has and has not been tested, and for an AGENTS.md snippet that tells agents to verify after frontend changes.

What it checks

HTTP status, redirect chain, content type, title, meta description, canonical link, robots directives (meta and X-Robots-Tag) and JSON-LD syntax in the raw response. With --tier browser: whether the title, canonical, robots meta and description change after JavaScript runs, framework hydration error messages, uncaught page errors, console errors and failed requests. 23 rules in total: docs/RULES.md. Each lists what it does not prove.

What it does not do

  • No crawling, rank tracking, keyword or backlink data, and no claims about indexing or ranking. It reports measured signals only.
  • No LLM calls and no code uploads. It fetches the URL you give it.
  • No hosted service. It runs on your machine.
  • "Hydration error detected" is pattern matching on console messages, not proof of a markup mismatch.
  • The browser tier is not pixel-accurate in either mode.

Security

Page content is untrusted evidence: output strings are stripped of control characters and length-bounded, and nothing in a page is ever treated as an instruction. Two network profiles exist. local (default) lets you verify localhost and private hosts; strict allows public hosts only. A redirect can never move from a public host to a private address. Limits and caveats, including the browser tier's best-effort interception, are in docs/SECURITY.md. To report a vulnerability see SECURITY.md. No third-party security audit has been performed.

Packages

PackagePurpose
seo-notaryCLI and local MCP server
seo-notary-coreSchemas, network policy, fetcher, rules, reports. No browser dependency
seo-notary-browserOptional Playwright adapter

Development

Requires Node >=22.19.0.

bash
npm installnpm run buildnpm run typecheck && npm run lintnpm test                 # unit and integrationnpm run test:security    # network policynpm run test:browser     # needs Chromium: npx playwright-core install --only-shell chromiumnpm run test:smoke       # packs and installs the packages into an empty directorynpm run demo             # serves the broken/fixed demo on http://127.0.0.1:4173

Docs: Architecture, CLI, MCP, Rules, Threat model, Decisions. Contributions: CONTRIBUTING.md.

License

Source code is released under the MIT License. The Raxocode and SEO Notary names and logos are not covered by that license; see TRADEMARK.md.

Built by Raxocode. Project site: seonotary.com.

來源:README.md,提交 60c0df6

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Oct 17, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分