article-overlap-checkerlisted
Install: claude install-skill Coolkidlab-Yin/Coolkidlab
# 文章撞稿檢查(article-overlap-checker)
## 什麼時候用
- 使用者要檢查全站有沒有「兩頁太像、互搶排名」的撞稿
- 使用者寫新文章前,想確認題目跟既有文章的距離
- 使用者想找出「跟全站都不像」的孤島頁(缺內鏈、難被定位)
## 怎麼跑
工具在 `scripts/semantic_map.py`,純 Python 標準庫,無需安裝任何東西:
```bash
# 本機 HTML 資料夾(建議掃整個站的輸出目錄,只掃子資料夾會高估孤島)
python scripts/semantic_map.py --dir <網站輸出資料夾> --out report.md
# 或直接掃線上 sitemap(逐頁下載,實測 130 頁約 7 分鐘 —— 掃本機快得多)
python scripts/semantic_map.py --sitemap https://your-site.com/sitemap.xml --out report.md
```
**成功長這樣**:終端印 `報告已寫入 report.md`,報告首行是 `# 語意地圖報告(N 頁)`。
回報給使用者前先看一眼 stderr:sitemap 模式下每頁會印 `fetched` 或 `skip`,
**大量 skip 代表報告只涵蓋部分頁面,結論不可信** —— 這時要跟使用者講,
不要拿一份殘缺的地圖下結論。
## 讀報告的原則(重要,回報給使用者時要帶到)
1. **閾值是經驗值不是鐵律**:預設 0.62/0.55 在一個 75 頁繁中站校準;
第一次跑先看分布,再用 `--cannibal`/`--close` 調。
2. **撞稿候選要人工複核搜尋意圖**:兩頁服務不同意圖(教學 vs 比較 vs 故障排除)
即使相似度高也可以共存;真撞稿是「同一個搜尋意圖有兩個入口」。
3. **孤島頁的解法是內鏈不是刪除**:先補相關文章互連,再觀察。
4. 新文章寫完可以重跑一次,確認沒有製造新的撞稿(寫作流程的最後一道檢查)。
## 侷限(誠實告知使用者)
- TF-IDF ��詞面相似,抓得到「用詞重疊」抓不到「換句話說的同義」;
分數異常低但你直覺很像的頁面,請用人工判斷推翻工具。
- 需要頁面正文 > 200 字才納入(太短的頁面沒有統計意義)。
- 設計對象是網站文章;社群短貼文(Threads/X 這類)詞太少,分數會普遍偏低
(實測一批短文案中位數僅 0.016),只能當粗篩,意圖重不重疊要人工判讀。