name: Science-Card description: 科學知識卡片生成器。將科學主題/概念製作成精美的 JPG 科普卡片,含手繪風格背景、認知引子、知識來源、日期和配樂推薦。觸發場景:使用者提到"知識卡片"、"科普卡片"、"做成卡片"、"生成知識卡"或希望將知識點視覺化封裝。不適用於:長文報告生成、資料圖表製作、純文本筆記整理。
JPG渲染流水線:JSON 卡片資料 → card_builder.py → WeasyPrint PDF → pdftoppm JPG
HTML渲染流水線:JSON 卡片資料 → html_card_builder.py → self-contained HTML
核心模組:
├── 🧠 design_thinker.py — 設計思維鏈引擎(內容分析→色彩心理學→美學規則→隨機取樣)
├── 🖼️ 插圖提取與嵌入(從PDF/圖片提取代表性插圖嵌入封面與內容頁)
├── 🎯 顯式暗色頭部背景(保障 WCAG AA ≥4.5:1 對比度)
├── 📐 統一卡片高度
├── 🎨 內容設計官(生成前資料審查)、排版設計官、質量檢查官
├── 🌐 html_card_builder.py — HTML 生成引擎(v7 新增,零依賴)
└── 🔗 提供下載連結(HTML檔案可通過 ima_cos_util 上傳獲得下載連結)
依賴(JPG模式):Python 3.12, WeasyPrint, Pillow, pdftoppm (poppler-utils)
依賴(HTML模式):Python 3.12,無額外依賴
輸出:
- JPG 模式:2160×N px 高解析度 JPG(Retina 2x),每套2張(封面+內容卡)
- HTML 模式:self-contained HTML 檔案,含內聯CSS+JS,每套1個檔案
Science-Card/
├── SKILL.md ← 本文件
├── references/aesthetics-reference.md (配色/排版/設計原則參考)
├── assets/
│ ├── card-template.html ← WeasyPrint JPG 用模板
│ └── card-html-template.html ← HTML 卡片參考模板(v7 新增)
└── scripts/
├── card_builder.py ← 主程式(v7 - 新增 --html/--web-images 引數)
├── html_card_builder.py ← HTML卡片生成引擎(v7 - 整合網路圖片搜尋)
├── web_image_searcher.py ← 網路圖片搜尋與下載模組(v7 - 新增)
├── design_thinker.py ← 設計思維鏈引擎
├── background_illustrator.py ← SVG背景插畫/裝飾/圖示生成
├── quality_guardians.py ← 三位一體質量審查體系
└── quality_controller.py ← 舊版QC(自動修復保留)
所有卡片(封面/內容/方卡)統一使用內容頁智慧高度標準,不再使用固定尺寸:
estimate_content_height() 動態計算(700~1920px)design_thinker.py)四階段設計推理管線,無需手動指定配色:
內容分析 → 色彩心理學對映 → 美學規則約束 → 隨機數取樣
第一階段:內容分析 - 6個預設類別+3個擴充套件類別的關鍵詞匹配引擎 - 輸出:類別、基礎主題、情感效價(0~1)、形式性(0~1)、複雜度(0~1) - 文本語料:標題+標籤+引子+原理+要點+關聯的綜合分析
第二階段:色彩心理學 - 6大主題色系的HSL色彩心理學對映表(含色相/飽和度/明度基準) - 情感效價→明度調節:積極+6%,嚴肅-6% - 形式性→飽和度調節:正式-8%,輕鬆+8% - 複雜度→色相偏移:高複雜度+3°色相偏移 - 每項輸出附帶人類可讀的設計理由
第三階段:美學規則約束 - 60-30-10 黃金配色比例 - 漸變角度 145°~165° 對角線 - 高亮色為暖色調(R > B)驗證 - 可讀性最低對比度 4.5:1 - 光暈位置基於黃金分割預置 - 點陣間距60~100px隨機化 - 字型大小根據複雜度微調
第四階段:隨機數取樣 - 內容Hash → 穩定種子(同內容每次生成相同結果) - 每項引數在安全範圍內隨機擾動(色相±2° 飽和度±2% 明度±1%) - 光暈位置隨機微調 ±3%
無需手動指定 cover_colors,系統自動生成完整設計方案,並列印設計決策報告。
當知識來源有圖片/PDF插圖時,自動提取並嵌入卡片:
提取邏輯 (extract_illustration_from_source()):
- PDF:pdftoppm 提取前3頁,取最佳頁面
- 圖片(PNG/JPG):智慧中心裁剪→縮放至400×400
- 過濾:小於5KB的視為無效
嵌入位置: - 封面頁:替換中央圖示區,140×140圓角,半透明毛玻璃背景 - 內容卡:頭部右側,80×80圓角小插圖 - 方卡:頭部右側,80×80圓角小插圖
使用方式:JSON資料中增加 "_extracted_illustration" 欄位,或CLI引數 --illustration-source <path>
6 個預設配色主題(同上版),新增設計思維鏈動態微調:
| 主題 | 主色 | 高亮色 | 色彩心理學含義 |
|---|---|---|---|
nature |
翠綠 #2d6a4f | 金色 #FFD700 | 自然、生長、平衡、和諧、安寧 |
science |
深藍 #1e3a5f | 橙紅 #FF6B35 | 理性、邏輯、信任、冷靜、專業 |
warm |
暖橙 #c44e1c | 珊瑚紅 #FF4757 | 溫暖、活力、社交、樂觀、創意 |
elegant |
棕色 #5c3d2e | 香檳金 #C59B6B | 經典、優雅、權威、傳統、信賴 |
ocean |
海藍 #0d5e73 | 亮黃 #FFD93D | 寧靜、深邃、廣闊、神秘、探索 |
default |
紫色 #5b2c6f | 琥珀 #F5A623 | 智慧、創意、神秘、靈性、深邃 |
設計思維鏈自動選擇:JSON中未指定 theme 和 cover_colors 時,系統自動分析內容類別並匹配最合適的主題。
{
"title": "必填。卡片標題",
"subtitle": "選填。副標題",
"tag": "選填。分類標籤,如\"🧬 進化生物學\"",
"theme": "選填。預設自動檢測。可選值: default/nature/science/warm/elegant/ocean",
"tagline": "選填。封面中間的高亮短文案",
"title_highlight": "選填。標題中需要金色高亮的詞",
"hook": "選填。認知引子",
"key_insight": "選填。核心洞見",
"key_points": "選填。簡單版要點列表(舊格式,向後相容)",
"key_point_details": "選填。新版要點列表(推薦),每個元素含 point(標題)+summary(摘要介紹),如:{\"point\":\"三大革命框架\",\"summary\":\"認知革命讓歷史啟動...\"}",
"principle": "選填。底層原理",
"action_insight": "選填。學以致用",
"related": "選填。關聯概念列表",
"related_en": "選填。關聯概念英文對照",
"source": "選填。知識來源",
"series": "選填。系列名稱,如"進化生物學"。顯示在封面頂部",
"cover_icon_svg": "選填。封面中央圖示(SVG),不填則用主題預設",
"header_icon_svg": "選填。內容卡頭部圖示(SVG),不填則用主題預設",
"cover_colors": "選填。配色覆蓋(不填則設計思維鏈自動生成)",
"_extracted_illustration": "選填。提取的插圖路徑(嵌入封面和內容卡)",
"illustration_source": "選填。PDF/圖片原始檔路徑,配合 illustration_pages 自動提取插圖",
"illustration_pages": "選填。PDF頁碼範圍,如'18-23',僅在此範圍內搜尋插圖",
"topic_key": "選填。輸出檔名標識"
}
每套輸出 2張卡片(封面 + 內容卡),尺寸完全一致:
| 卡片 | 內容 | 說明 |
|---|---|---|
| 封面卡 | 系列名+日期+封面插圖(替代圖示) + 標題+tagline+副標題+來源+頁尾 | 有插圖時插圖替換抽象圖示 |
| 內容卡 | 頭部(標籤+標題+副標題+核心洞見) + 引子 → 關鍵要點(含摘要) → 插圖 → 底層原理 → 學以致用 → 關聯概念 → 頁尾 | 全部內容整合在一張卡上 |
由底到頂,層層疊加:
10 📄 文字層(標籤 → 標題(高亮詞金色) → tagline → 分割線 → 副標題 → 來源)
9 🖼️ **提取插圖層**(可選,140px 毛玻璃圓角容器,替代SVG圖示)
8 🎯 中央圖示盒(無插圖時,150px 毛玻璃圓角容器 + 120px SVG圖示)
7 📐 四角幾何裝飾框(L形線條 + 端點圓點)
6 🌊 底部波形裝飾曲線(兩層波浪,設計思維鏈高亮色)
5 🔵 彩色光暈 ×6團(設計思維鏈最佳化佈局,基於黃金分割)
4 ⚪ 點陣網格(設計思維鏈動態間距60~100px)
3 📄 紙張紋理 (4% opacity)
2 🖼️ 大幅SVG主題插畫(設計思維鏈動態透明度30~45%)
1 🎨 漸變底色 + 雙層徑向光暈(設計思維鏈角度145~165°)
┌─ card-header(設計思維鏈漸變色)──────────────┐
│ 🖼️ 提取插圖(可選/右) │ 🏷️ 分類標籤 │
│ 標題(大號白色) │
│ 副標題 │
│ ┌─ ◆ ▶ 核心洞見 ────────────────────┐ │
│ │ 核心洞見內容…… │ │
│ └────────────────────────────────────┘ │
├─ card-body(白色漸變背景)───────────────────┤
│ ▶ 認知引子(高亮色邊框文本框) │
│ ● 關鍵要點 ① ② ③ ④(編號徽標) │
│ ◈ 底層原理 │
│ ◎ 學以致用(高亮色左邊框) │
│ ∞ 關聯概念 · 中文 (English) │
├─ card-footer ──────────────────────────────┤
│ 📚 知識來源 │ 📅 日期 🎵 配樂 署名 │
└────────────────────────────────────────────┘
# 1. 【JPG】生成完整卡片集(2張統一豎版智慧高度:封面+內容卡)
python3 card_builder.py \
--input card_data.json \
--format card-set \
--output my-card
# 2. 【HTML】生成互動式 HTML 卡片集(推薦,零依賴)
python3 card_builder.py \
--input card_data.json \
--html \
--output my-card
# 3. 從PDF/圖片提取插圖並生成卡片(指定頁碼範圍)
python3 card_builder.py \
--input card_data.json \
--format card-set \
--output my-card \
--illustration-source /path/to/source.pdf \
--illustration-pages "18-23"
# 4. 快速生成(不寫JSON,自動設計思維鏈配色)
python3 card_builder.py \
--title "標題" \
--hook "認知引子..." \
--format card-set \
--output my-card
# 5. 【HTML】快速生成(直接 json 字串)
python3 html_card_builder.py \
--json '{"title":"量子糾纏","theme":"science"}' \
--output quick-card
# 6. 【HTML】自動搜尋網路圖片(推薦,自動配圖)
python3 card_builder.py \
--input card_data.json \
--html --web-images \
--output my-card
# 7. 【HTML】直連搜尋網路圖片(跳過AI輔助,純自動)
python3 html_card_builder.py \
--json '{"title":"量子糾纏","theme":"science"}' \
--web-images --output my-card
series 欄位值title_highlight/tagline/key_insight/related_en--illustration-source 引數--format card-set 輸出 JPG 卡片,或使用 --html 輸出 HTML 卡片想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。
--web-images 自動搜尋網路圖片配圖ima_cos_util -f <html檔案路徑> 上傳獲得下載連結Science-Card v6.2 設立了三位專職審查官,分別在生成前、生成中、生成後把關,確保高質量交付:
工作時機:卡片生成前,審查輸入資料
| 規則 | 嚴重度 | 標準 |
|---|---|---|
| 標題必填 | S | 卡片必須有一個明確的標題 |
| 關鍵要點必填 | S | 至少要有 key_points 或 key_point_details |
| 原理或應用至少其一 | S/A | principle 或 action_insight 至少配置一項 |
| 認知引子 | A | hook 建議 ≥30 字增加吸引力 |
| 要點摘要 | A | 所有 key_point_details 應有非空 summary |
| 標題高亮 | A | 建議使用 title_highlight 突出關鍵詞 |
| 中英文對照 | A | related 和 related_en 數量應一致 |
| 學以致用 | A | 建議提供 action_insight |
| 關聯概念 | A | 建議至少3個關聯概念 |
| 封面tagline | 建議 | 提供短文案放封面 |
| 分類標籤 | 建議 | 如"🧬 生物學" |
| 知識來源 | 建議 | 註明來源增強可信度 |
| 系列名稱 | 建議 | 方便系列化管理 |
嚴重度說明:S=必填項缺失將影響生成,A=缺少會降低內容質量但能生成
工作時機:卡片生成後,逐張檢查視覺質量
| 檢查項 | 標準 | 檢測方法 |
|---|---|---|
| 頭部對比度 | ≥4.5:1(WCAG AA) | 測量頭部區域亮度標準差 |
| 內容填充率 | ≥30% | 非純白畫素行佔比 |
| 插圖可見性 | 有明顯影像區域 | 中段亮度高方差檢測 |
| 尺寸合規 | 1080×N 或 2x | 畫素尺寸匹配標準 |
| 檔案完整性 | ≥50KB(封面)/≥80KB(內容) | 檔案大小檢測 |
工作時機:全部卡片生成完成後,交付前最終審查
| 檢查項 | 標準 |
|---|---|
| 檔案存在性 | 所有預期路徑的檔案必須存在 |
| 圖片有效性 | 所有檔案經過 PIL Image.verify() 驗證 |
| 卡片數量 | 期望輸出 3 張(封面+內容A+內容B) |
| 尺寸一致性 | 同一套卡內所有卡片尺寸完全一致 |
| 檔案大小 | 每張 ≥30KB |
輸入JSON資料
↓
🎨 內容設計官(生成前審查)
├── 檢查資料完整性
├── 檢查內容框架質量
└── 輸出最佳化建議
↓
卡片生成(cover + content-a + content-b)
↓
📐 排版設計官(逐卡審查)
├── 測量每張卡視覺指標
├── 標記不合格項
└── 觸發修復流程(舊版QC自動修復)
↓
🔍 質量檢查官(最終審查)
├── 全面檔案審計
├── 尺寸一致性驗證
└── 綜合結論
↓
✅ 高質量交付 / ⚠️ 標記問題需改進
每次執行前檢查以下專案,確保設計資料滿足內容設計官要求:
- [ ] 封面標題有金色高亮(title_highlight)?
- [ ] 封面有 tagline 短文案?
- [ ] 有插圖時封面用插圖替代了抽象圖示?
- [ ] 內容卡頂部有核心洞見(key_insight)?
- [ ] 要點使用詳情版(key_point_details)帶摘要說明?
- [ ] 關聯概念有中英文對照(related_en)?
- [ ] 頁尾有"卡片製作:客觀思考者"?
- [ ] 所有圖示是Unicode符號(非SVG)?
- [ ] 自檢報告無錯誤/警告?
- [ ] 僅2張卡片(封面+內容),無方卡?
- [ ] 兩張卡片尺寸一致(智慧高度統一)?
- [ ] 頭部背景色 WCAG AA ≥4.5:1 對比度達標?
- [ ] 設計思維鏈輸出合理的配色理由?
- [ ] 配樂告知使用者?
Science-Card v7 新增 HTML 格式卡片生成功能,與原有的 JPG 格式形成互補:
| 對比項 | JPG 模式 | HTML 模式 |
|---|---|---|
| 渲染引擎 | WeasyPrint → pdftoppm | 純 Python,零依賴 |
| 檔案尺寸 | 500KB~2MB/張 | 15~30KB/套 |
| 互動性 | 無 | ✅ 要點可點選展開/摺疊 |
| 響應式 | 固定尺寸 | ✅ 桌面/移動端自適應 |
| 列印/匯出PDF | 直接 JPG | ✅ 瀏覽器 Ctrl+P |
| 插圖支援 | ✅ 內嵌 base64 | ✅ 內嵌 data URL |
| 動畫 | 無 | ✅ fadeIn 入場動畫 |
| 配色系統 | 全部13個主題 | ✅ 全部13個主題 |
# 方式1:從 card_builder.py 使用 --html 引數(推薦)
python3 card_builder.py \
--input card_data.json \
--html \
--output my-card
# 方式2:直接呼叫 html_card_builder.py
python3 html_card_builder.py card_data.json \
--output my-card
# 方式3:內聯 JSON 快速生成
python3 html_card_builder.py \
--json '{"title":"人類進化簡史","theme":"vibrant_sunset","tag":"🧬 進化生物學"}' \
--output quick-card
生成一個 self-contained .html 檔案,包含:
- 封面卡片:帶有漸變背景、標籤、標題、tagline、插圖、來源、日期
- 內容卡片:帶有認知引子、關鍵要點(互動式展開/摺疊)、底層原理、學以致用、關聯概念
- 控制欄:頂部有「列印/匯出PDF」按鈕
- 所有 CSS 和 JS 內聯在 HTML 中,無需外部網路請求
| 特性 | 說明 |
|---|---|
| 🖱️ 要點展開/摺疊 | 點選關鍵要點區域,摘要內容平滑展開/收起 |
| 🖨️ 一鍵列印 | 頂部按鈕呼叫 window.print(),瀏覽器可另存為 PDF |
| 📱 響應式佈局 | 桌面寬屏/手機窄屏自動適配 |
| 🎨 懸停效果 | 卡片 hover 上浮、關聯標籤 hover 變色 |
| 🌓 列印樣式 | 列印時去除背景色、陰影,保留純文字內容 |
HTML 卡片支援自動搜尋知識相關圖片並嵌入卡片,提高視覺吸引力。
工作流程:
| 步驟 | 說明 |
|---|---|
| 1️⃣ 關鍵詞提取 | 從卡片標題/標籤/要點/關聯概念自動提取搜尋關鍵詞 |
| 2️⃣ 多策略搜尋 | Wikipedia→Wikimedia Commons→最佳努力直連→AI輔助搜尋 |
| 3️⃣ 圖片下載 | 驗證圖片格式和大小,下載到本地 |
| 4️⃣ 智慧分配 | 最佳圖片→封面,次佳→內容卡插圖 |
| 5️⃣ AI保障 | 若自動搜尋未找到合適的圖,AI會輔助搜尋並補充 |
使用方式:
# 推薦:通過 card_builder.py
python3 card_builder.py --input data.json --html --web-images --output my-card
# 直接呼叫 html_card_builder.py
python3 html_card_builder.py --input data.json --web-images --output my-card
配圖效果: - 封面:120×120px 圓角插圖,外層毛玻璃+白色邊框+強陰影,確保深色背景上高對比度可見 - 內容卡:max-width 100% 帶背景邊框的全寬插圖(位於認知引子和關鍵要點之間) - 兩張卡片每張都有配圖——即使只找到1張圖也會複用給兩張卡片 - 每張圖標註圖片來源(Wikipedia / Wikimedia Commons / Clipsafari 等)
對比度最佳化(v7.2):
- 封面插圖:img-wrapper 毛玻璃背板(backdrop-filter: blur)增強與深色背景的分離感
- 封面插圖:3px 白色半透明外框 + 2px 白色邊框 + 0 8px 32px 強陰影,確保任何色彩圖片在深色背景下都清晰可見
- 內容卡插圖:淺色背景邊框 + 圖片邊界線,與白色卡片背景形成層次感
這個 Skill 質量不錯,能自動生成精美的科學知識卡片,配色和排版都有專業設計考量,還帶完整的質量檢查。卡片支援深淺色主題,效果比較精緻。不足之處是生成圖片版本需要安裝較多軟體依賴,配置起來稍麻煩;文件內容較豐富但對新使用者不太友好,首次使用需要一定學習成本。總體來說功能完整、品質較高,適合對卡片美觀度有要求的使用者。