infocard · v6.7.0 · 2026-09-25 · sha256 4d7744145ff87599

infocard v6.7.0A

Immutable. This exact content never changes and is served at /api/v1/blob/4d7744145ff87599.

---
name: infocard
description: "从 URL 或纯文本生成可定制样式的信息卡片图片(PNG),输出到 ~/Downloads/infocard-img/。先读懂内容,再按密度/结构/情绪选择视觉形式、版式与配色;默认输出与原文同语言的单语卡片。触发场景:生成信息卡片、知识卡片、概念图、科普长图、金句卡、产品发布卡、版本对比卡、benchmark 数据卡,把文章/推文/链接/一段文字做成图,卡片配图;make an infocard, knowledge card, concept card, turn this article into an image card。用法:/infocard <URL|文本> [--theme=guofeng|slate|sunset|coral|indigo|forest|purple|dashboard|editorial|knowledge] [--width=1080] [--output=<name>] [--lang=auto|zh|en|both]"
user-invocable: true
version: "6.7.0"
---

# infocard: 智能信息卡片生成器

没有"默认布局":先读懂内容,再让视觉形式从内容的思想形状中长出来。

## Purpose

把 URL 或纯文本转成一张(或双语两张)可交付的信息卡片 PNG。技能不套固定模板,而是先理解原文的
思想形状(密度 / 结构 / 情绪),据此选择版式、配色与图形,再用无头浏览器按 `.card` 边界截图到
`~/Downloads/infocard-img/`。

## When to Use

- 用户要把一篇文章 / 一条推文 / 一个链接 / 一段文本做成图片卡片。
- 用户要概念图、科普长图、金句卡、产品发布卡、版本对比卡、benchmark 数据卡。
- 触发词:信息卡片、知识卡片、概念图、科普长图、金句卡、发布卡、对比卡、做成卡片、卡片配图、
  infocard、knowledge card、concept card、turn this article into an image card。

## When NOT to Use

- 用户要咨询 / 研报 / PPT 封面质感 -> 交给 `mckinsey-cover`。
- 用户要摄影质感、写实、产品实拍图 -> 交给 `image-design`。
- 用户要工程化规格出图、透明底素材、UI 原型、角色一致性 -> 交给 `spec-image`。
- 用户只要文字摘要、明确不要图片 -> 直接回答,不要出图。

## Workflow

1. **解析输入**:首个非 `--` 的 token 为输入;`http(s)://` 开头为 URL,否则为文本。参数取
   `--theme/--width/--output/--lang`,缺省见 `description`,`--output` 缺省时自动提取文件名。
2. **获取内容**:URL -> Twitter/X 用 `twitter tweet <URL>`;GitHub 用 `gh` 或 Jina;微信公众号用
   Exa MCP / Camoufox;通用用 `curl -s "https://r.jina.ai/<URL>"` 或 WebFetch。文本输入跳过本步。
3. **提取元信息并定模式**:标题(≤15 字)、副标题(≤30 字)、来源、核心要点、金句(<25 字)、数据;
   归入概念解说 / 金句 / 密集知识三类模式之一。
4. **三维判断(含内部自检)**:定密度(留白)、结构(版式)、情绪(主题);产品/对比类另列核心
   优势、对比数值、规格参数;确认密度 / 结构 / 情绪 / 锚点 / 配色互相自洽。
5. **选主题与版式**:按 `## Decision Rules` 选定 `--theme`,再读该主题的布局规范。
6. **语言**:`auto` 按原文生成单语(中文占比 >50% 判中文);`zh`/`en`/`both` 跨语言时必须走
   `/translate-polisher`,严禁直译;术语/品牌名(Claude Code、HTML、MCP…)与难译短语
   (one-shot、intent alignment)保留英文。
7. **生成 HTML**:遵守 `## Constraints` 的骨架与硬规则。单语写 `/tmp/infocard_{name}.html`;
   双语先译后写,分别 `_zh.html` / `_en.html`。
8. **截图**:按 `## Scripts` 的 capture.js 调用方式执行。
9. **展示**:用 `present_files` 展示生成的 PNG。

## Decision Rules

`--theme` 缺省 = `editorial`。长文/专访/报告/知识图谱 -> `editorial`;产品/模型发布、版本对比、
benchmark -> `dashboard`;科普、概念解析、知识长图、方法论图解 -> `knowledge`;其余按情绪映射
(沉思 -> `slate`/`indigo`,锐利 -> `coral`/`sunset`,温暖/科研 -> `forest`,技术 -> `purple`,
优雅 -> `guofeng`)。完整对照表见 `references/content-modes.md`。

- 主题已定 -> 只读 `references/theme-palettes.md` 中对应那一节,取 CSS 变量原值。
- 主题为 `editorial`(默认)-> 读 `references/editorial-layout.md`。
- 主题为 `dashboard` -> 读 `references/dashboard-layout.md`。
- 主题为 `knowledge` -> 读 `references/knowledge-layout.md`。
- 判定内容模式、密度与结构 -> 读 `references/content-modes.md`。
- 生成 HTML 需要图标 -> 读 `references/svg-icon-sprite.md` 取 `<symbol>` 与图标映射。
- 用户想预览主题配色 -> 展示 `assets/theme_colorcards.png`;需要卡片骨架 -> 参考
  `assets/template.html`(legacy,body 含 `padding`/`100vh`,capture.js 会清除;只借结构与配色)。

## Constraints

- **先读内容再选布局**:密度定留白、结构定形式、情绪定配色;禁止套用固定模板。
- **body 只是画布,`.card` 才是卡片**:capture.js 会强制清除 body 的 padding/margin/flex/min-height
  并以 `.card` 定位边界。`<body>` 首子元素必须是 `<div class="card">`;body 只设 `background` 与
  `width:1080px`、margin/padding 为 0;`.card` 设 `width:1080px; box-sizing:border-box;` 并承载
  全部 padding 与布局;不用 body 居中,不用 `100vh` / `min-height`。
- **不编造**:内容须有原文依据,不脱离原文做通用卡,不虚构类比或例子;抽取时不擅自改写、
  增删或"优化"原文要点与数据。
- **跨语言必走 `/translate-polisher`**,禁止直译;保真优先,难译处保留英文。
- **默认单语**;双语须显式 `--lang=both`,不擅自生成两张。
- **图标只用内联 SVG 雪碧图**,禁用 CDN Web Component(`<ion-icon>` 截图会缺失);每区块至多 1 个图标。
- **元信息禁止插在卡片正中**:作者/日期/阅读量/点赞/收藏等互动数据不是核心知识,除非本身就是
  卡片主题否则不展示;作者置于报头 kicker 或底部署名。**不显示来源/平台字样**(禁止
  "X ARTICLE" 类标识)。**Header 只放标题/副标题**;作者名置底栏(12-13px,次级色)。

HTML 骨架(`1080px` 固定宽;代码块用 `white-space:pre-wrap`):

```html
body { background: var(--bg); width: 1080px; margin: 0; padding: 0; }
.card { width: 1080px; padding: 72px 64px 48px; box-sizing: border-box; color: var(--text-primary); }
<body><div class="card"><!-- 内容 --></div></body>
```

## Priority

1. **不编造 / 忠实原文** > 叙事丰富度。为凑"知识分享"而要加原文没有的类比时,宁可少加。
2. **内容可读性** > 版式对齐。留白下限与版式网格冲突时,压缩或拆分内容,不挤压可读性。
3. **默认单语** > 双语。用户未显式给 `--lang=both` 时只出一张。

## Stop Conditions

- 内容获取失败且无本地副本 -> 停止并告知用户,**不要**凭记忆或推测编造卡片内容。
- 截图连续失败 2 次 -> 停止重试,核对 HTML 骨架并原样报错;输入既非 URL 也未给文本 -> 追问。

## Verification

交付前逐项确认:

- [ ] PNG 已生成,宽 = `--width` 或 1080,路径在 `~/Downloads/infocard-img/` 下。
- [ ] `.card` 为 body 首子元素,body 无 padding / 居中 / `100vh`。
- [ ] 主题与内容情绪匹配,CSS 变量取自 `references/theme-palettes.md`。
- [ ] 图标全部来自内联 SVG 雪碧图,无 CDN Web Component;卡片内无来源/平台字样与正中的互动数据。
- [ ] 跨语言时经过 `/translate-polisher`;双语仅当 `--lang=both` 时生成。

## Output

- **Outcome**:一张(双语时两张)信息卡片 PNG,位于 `~/Downloads/infocard-img/{name}.png`
  (双语为 `_zh.png` / `_en.png`,目录自动创建)。
- **Done when**:PNG 已生成、已用 `present_files` 展示、`## Verification` 全部勾选。
- **Evidence**:版式由内容密度/结构决定、配色取自选定主题变量、留白比例符合密度档位、
  内容可追溯到原文。

## References

按需加载,不要预先全读:

- `references/content-modes.md` — 第 3、4 步归类模式/密度/结构,以及写正文前核对内容硬规则时读。
- `references/theme-palettes.md` — 主题确定后读,只取该主题那一节的 CSS 变量。
- `references/editorial-layout.md` — 仅当主题为 `editorial`(默认)时读。
- `references/dashboard-layout.md` — 仅当主题为 `dashboard` 时读。
- `references/knowledge-layout.md` — 仅当主题为 `knowledge` 时读。
- `references/svg-icon-sprite.md` — 写 HTML 且需要图标时读,取 `<symbol>` 定义与图标映射。

## Scripts

- `scripts/capture.js` — 主渲染器。参数依次为 `<html> <png> [width] [height] [fullpage] [scale]`;
  `scale` 默认 2(2x 高清)。成功时 stdout 打印 `OK: <绝对路径>`,失败时 stderr 打印错误并以
  退出码 1 结束。依赖 `playwright`:未安装时先在本技能目录执行
  `npm install && npx playwright install chromium`。

```bash
node <skill>/scripts/capture.js /tmp/infocard_{name}.html ~/Downloads/infocard-img/{name}.png 1080 800 fullpage
# 双语:对 _zh.html / _en.html 各跑一次。输出目录需先存在
```

- `scripts/capture_dsh.js` — 早期简化版截图脚本(改用系统 Chrome 的 `channel:'chrome'`,不支持
  fullpage 参数)。仅当 playwright 自带浏览器不可用、但本机装有 Chrome 时作为备用。

## Related Skills

- `mckinsey-cover` — 咨询 / 研报 / PPT 封面质感。
- `image-design` — 摄影逻辑的五维 AI 绘图提示词;`spec-image` — 工程化规格出图与多图一致性。
- `translate-polisher` — 跨语言卡片翻译的唯一入口。