lov-gen-card · v0.2.1 · 2026-09-25 · sha256 79bd9493a2eda0c6

lov-gen-card v0.2.1A

Immutable. This exact content never changes and is served at /api/v1/blob/79bd9493a2eda0c6.

---
name: lov-gen-card
description: >
  把结构化内容与独立示意图排成可复制、可下载的高清知识卡片,输出自包含 HTML 和 2× PNG;适用于“生成一张卡片”“做系列图鉴卡”“render an editorial card”等任务。
license: MIT
depends_on:
  - lov-branding-consistency
metadata:
  author: LovStudio
  version: "0.2.1"
  card_standard: lovstudio/skill-card/v1
  tags:
    - card
    - editorial-design
    - html
    - png
    - modern-screenshot
  compatibility: "Portable Agent Skills format. Python 3.9+; PNG export requires Chrome or Chromium."
  dependencies: []
---

# 知识卡片工坊 · Knowledge Card Studio

把一份结构化 JSON 和一张独立示意图渲染为固定比例的编辑式卡片。文字、评分、
Logo 和版式全部由 DOM 生成;AI 图像只进入视觉槽。交付自包含 HTML 与高清 PNG,
网页中可复制 Prompt、下载图片,并在导出时执行尺寸与溢出检查。

首个内置预设是 900×1350 的 `art-system-card`,适合艺术风格图鉴、术语图鉴、
方法卡和系列知识卡。它不是把整张卡交给生图模型。

## Triggers

### Activate when

- 用户说“生成一张知识卡片”“把这条内容做成卡”“做一组艺术风格图鉴卡”。
- 用户需要名称、示意图、背景、可复制 Prompt、场景、评分和品牌组成一张系列卡。
- The user asks to “create an editorial card”, “render a collectible knowledge card”, or “export a card as HTML and PNG”.

### Do not activate when

- 只需要生成或修改示意图:交给 `lov-image-creator`,再把图像路径交回本 Skill。
- 需要证据关系、数据图表与决策结论的一页信息图:使用 `lov-professional-infographic`。
- 需要姓名、角色、联系方式等身份名片:使用 `lov-business-card`。
- 只是在既有网页中增加截图按钮:使用 `lov-integrate-modern-screenshot`。

## User Profile (cross-session)

每次运行先读取 `skill.yaml` 和共享 `user-profile/v1`。解析顺序是:当前请求、
项目上下文、`skills.lov-gen-card.records`、共享 preferences、共享 brand/user、
安全默认值。

只有用户直接声明并希望长期复用的品牌或偏好,才使用
`scripts/profile_store.py record --confirm` 保存;不得保存推断值、凭据、秘密或
一次性内容。品牌名称、网站与 Logo 可以从 Profile 回退,但私有绝对路径不得写进
可复用源码。完整约定见 `references/user-profile.md`。

## Skill Group Composition

先读 `references/skill-composition.md`。相邻 Skills 只通过文件工件交接,不构成隐含
运行依赖。卡片 HTML 中所需的导出运行时已随本 Skill 一起提供。

## Required resources

运行前确认:

- `$SKILL_DIR/scripts/render_card.py`
- `$SKILL_DIR/assets/art-system-card.template.html`
- `$SKILL_DIR/assets/modern-screenshot.js`
- `$SKILL_DIR/references/input-schema.md`

## Workflow (MANDATORY)

### Step 0: Resolve root and context

- 优先使用宿主提供的 `SKILL_DIR`,否则从当前 Skill 上下文解析安装目录。
- 读取 `skill.yaml` 与共享 Profile;不存在 Profile 时使用无品牌的安全默认值。
- 检查 Python 版本。请求 PNG 时检查 Chrome/Chromium;只有 HTML 时不强制浏览器。

### Step 1: Build the structured brief

从用户请求和已有材料提取 JSON。必填内容是:主副标题、示意图本地路径、背景、
Prompt、1-6 个适用场景、1-5 个 1-5 星编辑评分。字段规则见
`references/input-schema.md`。

能从上下文确定的内容不要重复询问。若只有示意图缺失,可让用户提供本地图片,或
明确将一份“无文字、无徽章、无 Logo、4:3”的视觉 brief 交给可选上游生图能力。
不可在没有图时伪装完成。

评级属于编辑判断,必须保留“editor rating / 5”语义;不得把流行度、品味度写成
未经证据支持的客观统计。模仿在世艺术家时,改写成可描述的媒介、时代、构图和视觉
特征,不把艺术家姓名当作捷径。

### Step 2: Validate and render

先校验输入:

```bash
python3 "$SKILL_DIR/scripts/render_card.py" card.json --validate-only
```

再输出自包含 HTML 与 2× PNG:

```bash
python3 "$SKILL_DIR/scripts/render_card.py" card.json \
  --out ./card-output --name card-01 --format both --scale 2
```

可选参数:

- `--profile` 指定共享 Profile;默认读取 `SKILL_PROFILE_PATH` 或标准位置。
- `--chrome` 指定 Chrome/Chromium 可执行文件;也可设置 `CHROME_PATH`。
- `--format html` 只生成可复制、可手动下载的网页。
- `--scale 1-4` 控制 PNG 像素倍率;默认 2,即 1800×2700。

### Step 3: Inspect the actual card

- 确认输出 PNG 像素严格等于 900×1350 乘倍率。
- 检查脚本输出的 `layout`:`overflowX` 与 `overflowY` 必须为 0,`visualReady` 为 true。
- 打开 PNG 做视觉检查:标题层级、视觉槽完整性、Prompt 可读性、底部 Logo 大小与留白。
- 打开 HTML 测试“复制 Prompt”和“下载 PNG”。HTML 是可编辑母版,PNG 是传播稿。

任何溢出、图像未加载或尺寸不符都会让 PNG 导出失败;不要把失败说成完成。

### Step 4: Deliver and record evidence

报告 JSON、HTML、PNG 的绝对路径,倍率、像素尺寸与布局审计结果。真实使用案例可以
追加到 `cases/cases.json`,但必须记录 Input → Prompt → Output,不得制造案例或评分。

## Output contract

- 一个 UTF-8、自包含、可复制 Prompt 并可离线下载 PNG 的 HTML。
- 一个透明度与颜色保持一致的高分辨率 PNG;默认 1800×2700。
- 终端中的像素、字节数和 DOM 溢出审计。
- 如输入缺图、浏览器缺失或内容超出安全字号,返回可复制的具体错误,不输出假成品。

## Dependencies

- Python 3.9+,脚本仅使用标准库。
- PNG 自动导出需要 Chrome 或 Chromium。
- `modern-screenshot` 运行时随 Skill 内置;生成网页不依赖网络、npm 或兄弟 Skill。