Communitygithub.com

elmir-mammadli/ai-deslop

找出並移除讓網站或 UI 看起來像 AI 生成的視覺與文案特徵(「AI 味」),並設計從不出現這些特徵的新頁面。

ai-deslop 是什麼?

此技能「AI de-slop」專為解決網站與 UI 中常見的「AI 生成感」而設計。它提供了一套系統化的七步驟流程:範圍界定 → 審核 → 保留清單 → 編輯 → 修復 → 驗證 → 報告。核心是透過掃描腳本與人工檢查,逐一處理 20 項常見的 AI 痕跡(例如過度使用標籤膠囊、斜體、AI 預設字型、負字距、複雜的裝飾元素、全大寫副標題、漸層背景等),並給出精確的移除或保留規則。支援 Claude Code、Cursor 等 AI 編碼代理,透過執行 Python 審核腳本與手動編輯,將機械化修改(如大小寫、字距)與需要判斷的改寫(如文案、版面)分開處理。最終確保所有頁面在 1440px 與 390px 寬度下無渲染錯誤、無控制台錯誤、無水平溢出,並通過型別檢查、lint 與專案建置。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/elmir-mammadli/ai-deslop/tree/HEAD/skills/ai-deslop

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

AI 去味 (AI de-slop)

目標:讓頁面看起來像是由有觀點的人設計的。統一的字體風格、真實的內容取代佔位標籤、只有承載意義的裝飾。移除痕跡只是第一步;另一半工作是證明移除後沒有任何東西壞掉。

按此順序進行,不可跳過步驟:範圍界定 → 審核 → 保留清單 → 編輯 → 修復 → 驗證 → 報告。只有當「完成定義」中的每一項都達成時,才算完成一次處理。

1. 範圍界定

  • 列出範圍內的所有網站、頁面、共享元件、資料檔案和縮圖。包含父網站,而不僅僅是示範頁或子頁面。如果使用者說「全部」,就表示全部;永遠不要只處理子集就回報完成。
  • 內容存在於三個地方:樣式表、標記/元件、以及資料檔案(標題陣列、字體資訊、導航標籤、後設資料)。這三個地方都要審核。
  • 如果範圍真的不明確,可以問一次。否則直接進行下一步。

2. 使用腳本審核,再以人工審核

首先執行內建的掃描器。它會列出每個候選項目(檔案:行號),並按特徵分組,當仍有需修復的特徵時會以 exit 1 結束。

python3 <skill-dir>/scripts/audit.py <路徑...> --keep-caps ".wordmark,.logo,.heroTitle"
python3 <skill-dir>/scripts/audit.py src --only caps,tracking,period      # 聚焦
python3 <skill-dir>/scripts/audit.py src --json > audit.json               # 機器可讀
  • fix 類型特徵必須歸零(或帶有合理的 deslop-keep 標記)。check 類型特徵(漸層、發光、counter-css、eyebrow、條紋、em-heading、形狀)每項都需要人工判定,並記錄在報告中。
  • 掃描器會跳過註解和 node_modules/build 輸出。它無法判斷意圖、無法找到版面破損、也無法看到渲染後的文字;這些是步驟 5 和 6 的工作。
  • 腳本未涵蓋的額外搜尋,請參考 references/audit.md。

3. 20 項特徵:精確動作與保留規則

#特徵精確動作僅在以下情況保留
1標籤與膠囊圓角 999px → 3 到 4px,或將標籤改為純色文字它承載讀者會採取行動的狀態(緊急、狀態、作用中篩選)
2過度斜體刪除 font-style: italic、italic 工具類、用於裝飾的 <em>/<i>真正的作品標題、引用的外文詞彙、商標字
3預設 AI 字型當 Instrument Serif、Instrument Sans、Geist、Geist Mono、Space Grotesk、IBM Plex Mono、JetBrains Mono、Space Mono 作為頁面主要字體時進行替換絕不作為主要字體;請參閱字體規則
4負字距刪除所有負的 letter-spacing 和 tracking-[-…]、tracking-tight(er)絕不
5過度詳細的 UI刪除小工具:即時狀態點、假追蹤器、游標透鏡、磁性按鈕、滾動傾斜跑馬燈、旋轉計數器、裝飾性電平表該小工具是產品本身(計算機、計劃工具、配置器)
6過度使用分隔線每個列表最多保留一條結構分隔線;刪除僅用於分隔的線分隔線用於分組表格或列表中的行
7陰影與透明度使用純色色票;刪除發光、模糊、backdrop-filter、模糊半徑超過 40px 的陰影遮罩用於保持照片上的文字可讀;真正的覆蓋層(對話框、選單)上的一個細微陰影
8邊框容器取消僅用邊框裝飾的卡片;刪除左側的強調色條紋(border-left ≥ 3px)該框是真實物件(表單、收據、票券、工作表、表格),或條紋表示狀態(表單成功/錯誤)
9過度詳細的圖表刪除「Plate I」、「Fig. 2」、不具解釋意義的圖例和標籤每個元素都對應到真實事物
10囉嗦、重複的文字頁尾使用一行揭露文字,取代重複的「sample」註解;刪除重複說明標題的句子該註解提供了其他地方未陳述的資訊
11程式碼痕跡刪除 // LABEL、/services 連結文字、[1]、EV-01、R-03、STATUS:、TEL/MAIL/AREA 大寫標籤真正的導覽麵包屑(「首頁 / 關於」)
12章節編號刪除標記和 CSS counter() 中的「01 /」、「§」、「Chapter 1」、羅馬數字、「Z1」、補零計數器順序是內容本身:說明、時間線、表單步驟、測驗題目、與圖表標記對應的數字。然後使用純 1. 而非 01
13眉毛刪除標題上方的小標籤;如果它包含事實(地點、交易、價格),則將其移至標題或第一句它是功能性標籤:表單標籤、圖例、dt、表格標題、頁尾欄位標題
14抖動、噪點刪除抖動和噪點紋理紋理即是藝術方向(孔版印刷、紙張邊緣);標記為 deslop-keep
15ASCII 圖片刪除預設情況下絕不保留
16方圓角半徑 12px 及以上 → 4 到 6px(區段、卡片、圖片、對話框)正圓(寬高相等:頭像、圖示點、圓形勾選)、刻意造型(拱形窗戶、管端)並標記 deslop-keep
17等寬字型替換為網站的文字字體,加上 font-variant-numeric: tabular-nums頁面上的真實程式碼
18全大寫副標題刪除 text-transform: uppercase、uppercase 工具類、原始字串中的大寫;同時刪除其正字距商標字、真正的標示(危險/警告/注意、管道標記),以及基於壓縮顯示標題的品牌(保留 --keep-caps 上的那些選擇器)
19漸層背景純色資料刻度(溫度、季節)、照片遮罩、硬邊界線
20標題中的句號移除 h1 到 h3、頁面標題、卡片和資料標題、顯示尺寸的單句頁尾行的結尾句號正文句子、多句段落、縮寫(「Co.」、「Inc.」)

同時移除:標題內的重點色短語(與 #2 相同特徵)、輪廓或描邊的巨大商標字、裝飾性斑點和圓圈、空的邊框和膠片條。

4. 字體

  • 永遠不要將預設 AI 字型(#3)作為主要字體。根據頁面主題選擇字體:標示行業使用公路或窄體字體,傳統行業使用 Caslon 或 Didone,工作室則使用編輯風格襯線字體搭配簡潔無襯線字體。
  • 一個顯示字體加上一個文字字體,或一個字體家族。標籤不使用第三個家族。
  • 數字在文字字體中使用 font-variant-numeric: tabular-nums,絕不使用等寬字體。
  • 更換字體時,同時更新:字體匯入、CSS 變數、版面類別列表、提及字體名稱的標頭註解,以及任何顯示字體名稱的資料(目錄卡片、風格指南)。然後重新檢查每個依賴舊字體寬度或行數的標題。
  • 移除斜體後,不要載入斜體或未使用的字重。

5. 文案規則

  • 標題:無結尾句號、無 <em>、無重點色 span、使用句子大小寫。
  • 將斷裂式的兩句標題改寫成一個自然句:
    • 「關閉閥門。然後打電話。」 → 「關閉閥門,然後打電話」
    • 「找到漏水處。規劃屋頂。」 → 「找到漏水處,然後規劃屋頂」
    • 「快速、簡潔、清晰。」 → 「快速、簡潔且清晰」
    • 「專業的網站。明確的價格。」 → 「價格明確的專業網站」
    • 「七層。你看見一層。」 → 「七層,而你看見一層」
    • 提問加指示可以保留為兩部分:「沒水了?預約早上拜訪」。
  • 當移除承載事實的眉毛時,該事實必須存在於某個可見的地方。
  • 遵循專案自身的風格規則(拼寫變體、禁用詞、破折號樣式)。編輯後檢查拼寫一致性。
  • 絕不捏造證據:沒有假評論、假計數、假標誌、假獎項。樣本在頁尾標示一次即可。

6. 編輯

  • 機械式修改(大小寫、字距、斜體、圓角、標題句號)使用腳本;需要判斷的改寫(改寫、小工具、版面)則手動處理。
  • 使用小型解析器逐條編輯 CSS 規則(匹配 selector { body } 區塊,修改 body,寫回)。不要在整個樣式表上執行一個大型回溯正則表達式。
  • 先建立保留清單,再進行編輯。記錄哪些選擇器保留大寫、哪些數字保留,然後將該清單傳遞給腳本。
  • 在行內標記刻意保留的例外,以便未來審核時跳過:CSS 中使用 /* deslop-keep: reason */,JSX 中使用 {/* deslop-keep: reason */},位於同一行或上一行。

7. 修復移除造成的破損

每次移除都可能留下缺口。針對每個網站,檢查以下每一項:

  1. 具有小第一欄的網格(44px 1fr、80px 1fr 360px、90px 1fr 1.4fr),用於放置數字或程式碼:在每個斷點移除該欄位。
  2. p、dd、h3、li 上 28 到 60px 的左外邊距或內邊距,用於讓文字對齊到已移除的數字右側:設為 0。
  3. 遺留的 counter-reset / counter-increment、li > span / dt span 規則、僅用於間隔數字的標題上的 display: flex; gap。
  4. 不再被標記引用的死類別(跳過動態類別,例如 s[\badge_${x}`])、空的規則、未使用的 index` 參數和 props、未使用的匯入和字體變數、過時的註解。
  5. 與圖片重疊或依賴行數的標題,在字體變更後。
  6. 絕不要在未閱讀規則的情況下,移除 ::before / ::after 內的邊框:左邊框加底部邊框旋轉 45° 就是一個繪製的勾選標記。

8. 驗證

  • 在 1440 和 390 寬度下,對每個頁面進行渲染檢查,使用 prefers-reduced-motion: reduce 讓動畫區段以完成狀態渲染。擷取前滾動整個頁面,確保懶加載圖片已載入;移除開發者覆蓋層。空白圖片區域可能是懶加載或卡住的開發圖片最佳化工具,在與正式環境比較之前,不要將其視為錯誤。
  • 在兩種寬度下,對每個路由進行自動化檢查:零控制台錯誤、零水平溢出(scrollWidth > innerWidth)。
  • 專案檢查:型別檢查、lint(零新警告)、專案的文案或禁用詞檢查、正式環境建置。
  • 重新執行審核腳本:fix 總數必須為 0。
  • 更新顯示舊設計的縮圖、預覽圖和展示廳圖片,並重新檢查它們。
  • 在提交前,恢復被建置或開發伺服器改寫的檔案(例如 tsconfig.json、next-env.d.ts)。

9. 完成定義

所有條件都必須為真:

  • 範圍內的每一項都經過審核(樣式表、標記、資料、縮圖)。
  • audit.py 報告 fix: 0;每個剩餘的 check 命中有判定結果。
  • 每個例外都在保留清單上,或帶有 deslop-keep 標記並附上原因。
  • 每個頁面都已渲染並被檢視過,在 1440 和 390 寬度下。
  • 每個路由上零控制台錯誤和零水平溢出。
  • 型別檢查、lint、文案檢查和正式環境建置通過。
  • 預覽圖和縮圖已更新。
  • 未經使用者同意,不推送或發布任何內容。

10. 報告

最後以簡短報告結尾,格式如下:

  1. 範圍: 涵蓋哪些內容(網站和頁面數量)。
  2. 已移除: 按特徵列出,哪些變更以及大致數量。
  3. 刻意保留: 每個例外及其原因。
  4. 已修復: 發現並修正的版面破損。
  5. 已驗證: 每項檢查及其結果。
  6. 未完成項目: 任何未完成或未驗證的事項,清楚陳述。

實務中常見陷阱

  • 無頭瀏覽器設定檔會快速填滿磁碟。一次擷取一個頁面,刪除每個設定檔,監控可用空間。磁碟滿載會破壞 shell 和開發伺服器。
  • 不要終止使用者的開發伺服器。在另一個連接埠啟動你自己的伺服器,並在完成後停止它。
  • 僅匹配類別名稱會移除功能性標籤;應根據位置和元素類型進行匹配。
  • 資料驅動的標題和模板字面量的頁面標題,會被僅針對 JSX 的標題掃描遺漏;腳本也會檢查 title:、heading: 和 title=。
  • 跳過父網站、資料檔案或縮圖的處理,不算完成。

設計新作品,避免這些痕跡

從主題開始,而不是從模板開始:一個為行業或受眾選擇的顯示字體和一個文字字體,一個具有意義的重點色,0 到 6px 的圓角,句子大小寫的標籤,沒有句號的標題,沒有眉毛,除非順序重要否則沒有編號區段,使用真實內容代替佔位標籤,以及每個裝飾元素都與關於該業務的真實事物相關。在交付前執行 audit.py。

相關技能