並非為了設陷阱,而是為了結果。

七個網址。七次失敗。

我的 Hashnode 個人資料缺少 H1 標籤。三個 freeCodeCamp 教程的元描述缺少或超過 160 個字元。兩篇 DEV.to 文章的標題太長,導致 Google 無法正確顯示。

我搭建了這個代理程式。我先用自己的內容進行了測試。這是演示的真實版本。


我當時正在解決的問題

每個數位行銷機構都有人專門負責這項工作:打開電子表格,存取每個客戶的網址,檢查標題標籤、描述、H1 標籤,記錄失效連結,並將所有資訊貼到報告中。每週重複此動作。

那個人要花錢。工作內容是確定性的。之所以現在還是手工操作,唯一的原因是沒人能發展出替代方案。

我周末就把它建好了。


堆疊

  • 瀏覽器使用-基於 Python 的原生瀏覽器自動化工具。此代理程式會在可見的 Chromium 視窗中瀏覽真實頁面,而非無頭爬蟲。它支援持久會話、真實渲染,呈現與人類使用者相同的頁面。

  • Claude API(Sonnet) ——讀取頁面快照並傳回結構化的 JSON 資料:標題狀態、描述狀態、H1 標籤數量、規格標籤、標誌。每個 URL 需要呼叫一次 API。

  • httpx-用於偵測死連結的非同步 HEAD 請求。每頁最多 50 個連結,支援並發,每個請求超時時間為 5 秒。

  • 扁平化的 JSON 檔案state.json檔案用於記錄已稽核的內容。即使執行過程中中斷,重新啟動後,它也會從中斷處繼續執行。無需資料庫。

七個Python文件,共956行程式碼,可在Windows筆記型電腦上運作。


大多數教程都會跳過的部分:HITL

代理程式遇到登入問題,拋出異常,執行終止。

大多數自動化教程都是如此。

這個行不通。

當代理程式偵測到非 200 狀態碼、重新導向登入頁面或標題包含「登入」或「存取被拒絕」時,它會暫停。在互動模式下,可以選擇跳過、重試或退出。在--auto模式下,它會自動跳過,將 URL 記錄到needs_human[]陣列中,然後繼續執行。

一個了解自身限制的智能體比一個默默失敗的智能體更有用。這是大多數人不會做出的設計決策,因為教程裡沒有涵蓋這方面內容。


審計實際發現

我用它在三個平台上發布了自己的內容進行了測試:

| URL | 失敗欄位 |

|-----|----------------|

| hashnode.com/@dannwaneri | H1 缺失 |

| freeCodeCamp — 如何建立自己的 Claude 程式碼技能 | 元描述 |

| freeCodeCamp — 如何阻止人工智慧代理猜測 | 元描述 |

| freeCodeCamp — 建構生產環境的垃圾系統 | 標題 + 元描述 |

| freeCodeCamp — 作者/dannwaneri | 元描述 |

| dev.to — 守門恐慌 | 標題過長 |

| dev.to — 我搭建了一個生產環境垃圾系統 | 標題太長 |

freeCodeCamp 的描述問題部分是平台層面的-freeCodeCamp 控制模板,有時會截斷或省略元描述。 DEV.to 的標題問題則由我負責。適合作為標題的文章標題通常會超過<title>標籤內的 60 個字元。

代理程序並不在意。它檢查了標準並報告了結果。


賽程安排

python index.py --auto

新增一個.bat文件,用於設定 API 金鑰並呼叫該指令。將其新增至 Windows 任務規劃程式中,安排在週一早上 7 點執行。喝咖啡的時候,記得查看report-summary.txt

這就是代理商的工作流程。無需人工幹預。特殊情況需人工審核,會在needs_human[]清單中列出。其他所有情況都會自動處理和報告。


這實際花費是多少?

每個 URL 呼叫一次 Sonnet API,每頁約 0.002 美元。每週審核 20 個 URL 的費用不到 0.05 美元。 Playwright 瀏覽器在本地執行,無需支付雲端瀏覽器費用,也無需訂閱 Browserbase。

整個營運模式都秉持著每月5美元的理念。我做其他所有事情也都遵循同樣的原則。


程式碼

GitHub: dannwaneri/seo-agent

複製它,將你的 URL 加到input.csv ,在你的環境中設定ANTHROPIC_API_KEY ,執行pip install -r requirements.txt ,執行playwright install chromium ,然後執行pip install -r requirements.txt ,執行playwright install chromium ,然後執行python index.py

freeCodeCamp 的教學會逐一講解每個模組——瀏覽器整合、Claude 提取提示、非同步連結檢查器、HITL 邏輯。教程上線後會在評論區提供連結。


值得命名的轉變

瀏覽器自動化工具已經存在十年之久。 Playwright、Selenium、Puppeteer——功能強大,但都需要編寫和維護選擇器。一旦按鈕的類別名稱發生變化,腳本就會出錯。

這個代理不使用選擇器。它像 Claude 一樣讀取頁面——透過語義,經由可存取性樹進行讀取。即使 CSS 類別發生了變化,「提交」按鈕仍然是「提交」按鈕。

提取邏輯在提示符中,而不是在程式碼中。

舊方法:頁面變更時,自動化流程會中斷。

新方法:推理過程會適應變化,程式碼無需如此。

這才是真正的轉變。不是“人工智慧包攬一切”,而是“脆弱性轉移了”。從選擇器到提示,從維護到推理。故障模式不同了,恢復方式也不同了。


這是我為機構運營搭建實用本地 AI 代理系列教程的第一篇。 freeCodeCamp 的分步教學即將推出。程式碼庫現已上線。


原文出處:https://dev.to/dannwaneri/i-built-a-local-ai-agent-that-audits-my-own-articles-it-flagged-every-single-one-pkh


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝9   💬10   ❤️3
537
🥈
我愛JS
📝2   💬6   ❤️2
141
🥉
💬1  
4
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登