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 卡片--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 卡片支持自动搜索知识相关图片并嵌入卡片,提高视觉吸引力。
工作流程:
小葱技能站7w4.net,专业的AI技能分享平台。
| 步骤 | 说明 |
|---|---|
| 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 质量不错,能自动生成精美的科学知识卡片,配色和排版都有专业设计考量,还带完整的质量检查。卡片支持深浅色主题,效果比较精致。不足之处是生成图片版本需要安装较多软件依赖,配置起来稍麻烦;文档内容较丰富但对新用户不太友好,首次使用需要一定学习成本。总体来说功能完整、品质较高,适合对卡片美观度有要求的用户。