返回 Skill 列表
extension
分类: 其它无需 API Key

Keep 运动信息图生成器

Keep 运动数据信息图生成技能。当用户上传 Keep 运动截图(跑步/快走/骑行等)并要求生成信息图、运动海报、运动数据长图、运动打卡图、9宫格运动图、竖屏运动卡片时触发。流程为 OCR 解析截图数据 → 渲染 9 套独立 HTML 模板 → Playwright 截图输出 9 张 1080×1440 竖屏信息图。严禁使用 AI 绘图,全部由 HTML+CSS 渲染后截图。触发词包括:Keep 截图、运动信息图、运动海报、9套运动图、Keep 数据图、跑步打卡图。

person作者: user_d673aae1hubcommunity

Keep 运动数据信息图生成技能

概述

接收用户上传的 Keep 运动截图,通过 OCR 提取结构化运动数据,渲染 9 套独立 HTML 模板(固定 1080×1440 竖屏),用 Playwright 截图输出 9 张信息图。全部视觉元素由 CSS 实现,禁止 AI 绘图与外部图片资源。

硬性约束(全程不可违反)

  1. 画布规格:9 套模板统一 width:1080px; height:1440px; overflow:hidden; 3:4 竖屏,禁止拉伸变形。
  2. 禁止元素:Keep 官方 logo 水印、抖音封面标题文字、任何平台水印、短视频文案标题、话题标签。
  3. 用户名标识:OCR 识别截图内昵称。识别成功 → 渲染在画布右上角作为自定义标识替代品牌 logo;识别失败 → 该 DOM 节点彻底移除,不保留空白占位区域。
  4. 数据条件渲染:心率等字段缺失时,对应数据区块 DOM 彻底删除,不允许出现空白框、占位符或 {{变量}} 模板字符串。
  5. 技术要求:每套模板独立 HTML 文件,全部使用 CSS 实现图标、线条、渐变、装饰效果;禁止引入外部图片、外部字体资源;所有元素内置在 HTML 内。
  6. 强制自检:9 套 HTML 全部渲染完成、截图生成后必须执行完整自检(见步骤 5),自检不通过则重新渲染,不交付结果。
  7. 输出产物:9 张信息图截图 + 结构化原始运动数据 JSON + 每套模板的简短说明。

工作流程

步骤 1:接收输入

接收用户上传的 Keep 运动数据截图(一张或多张)。若图片模糊、被遮挡或非 Keep 截图,提示用户重新上传清晰截图或手动输入运动数据。

步骤 2:OCR 解析与数据确认

调用图像识别能力解析截图,提取以下字段并输出为 JSON:

{
  "user_name": "识别到的用户昵称,识别失败为空字符串",
  "sport_type": "运动类型,如跑步/快走/骑行",
  "distance": "距离,例:5.2km",
  "duration": "运动时长,例:32分15秒",
  "calorie": "消耗卡路里,例:345kcal",
  "pace": "配速,例:6分12秒/km",
  "date": "运动日期,例:2026-08-22",
  "heart_rate": "心率,无则为空字符串"
}

解析完成后必须执行:把提取出来的 JSON 数据以表格或卡片形式展示给用户,允许用户手动修改、校正识别错误。用户确认数据无误后才能进入下一步。禁止跳过用户确认环节直接渲染

步骤 3:渲染 9 套独立 HTML 模板

9 套模板的详细设计规范见 references/templates.md。每套单独完整 HTML 文件,根容器固定 width:1080px; height:1440px; overflow:hidden;

模板清单(固定 9 套,配色版式区分明显):

| # | 模板名 | 风格关键词 | |---|---|---| | 1 | 极简数据风 | 白底浅灰、简约线条、卡片留白 | | 2 | 热血运动风 | 黑底橙红、CSS 跑道线条、力量感 | | 3 | 治愈氛围感 | 莫兰迪渐变、柔和圆角、松弛感 | | 4 | 复古胶片风 | 暖黄复古、CSS 颗粒暗角、胶片边框 | | 5 | 赛博数据卡片 | 深蓝青蓝霓虹、CSS 网格、仪表盘 UI | | 6 | 简约清单打卡风 | 打卡记录表、CSS 勾选标记、坚持感 | | 7 | 极简 ins 卡片 | 白底圆角、简易 CSS 图标、大留白 | | 8 | 深色运动日志 | 纯黑背景、CSS 月亮图标、夜跑场景 | | 9 | 励志短句版 | 数据区 + 励志短句区、运动金句 |

每份 HTML 内部必须包含的条件渲染 JS

<script>
  const DATA = { /* 注入步骤2确认后的JSON */ };
  // 字段为空则移除对应 DOM 节点
  document.querySelectorAll('[data-field]').forEach(el => {
    const key = el.dataset.field;
    if (!DATA[key] || DATA[key] === '') el.remove();
    else el.textContent = DATA[key];
  });
  // 用户名为空时移除右上角标识
  if (!DATA.user_name) document.querySelector('.user-badge')?.remove();
</script>

步骤 4:页面截图

使用 scripts/screenshot.js(Playwright 脚本)对 9 份 HTML 分别执行截图,生成 9 张 1080×1440 PNG 图片。

执行命令示例:

node scripts/screenshot.js ./templates ./output

脚本规范见 scripts/screenshot.js 文件头部注释。如环境中无 Playwright,先用 npm i -D playwright 安装并执行 npx playwright install chromium

步骤 5:强制自检校验

9 张截图全部生成后,必须逐条执行以下自检。任一项不通过,回到步骤 3 重新生成对应模板 HTML,直到全部通过才允许交付。完整自检规则见 references/self_check.md

排版校验:画布尺寸 1080×1440 / 文字不溢出 / 缺失字段区块完全隐藏 / 用户名标识无空白残留 / 文字层级清晰。

显示校验:文字背景对比度足够 / CSS 装饰渲染完整 / 9 套版式配色区分明显 / 无 Keep logo 与水印。

逻辑校验:无 {{xxx}} 占位文本 / 时间配速距离格式正确 / 截图完整无截断黑边错位。

步骤 6:最终交付

向用户交付:

  1. 9 张信息图图片(PNG,1080×1440)
  2. 结构化原始运动数据 JSON(步骤 2 确认后的版本)
  3. 9 套模板的简短说明(每套一句话风格描述)

异常处理

  • OCR 识别失败:提示用户重新上传清晰截图,或直接手动输入运动数据 JSON。
  • HTML 渲染异常:重新生成对应模板 HTML,最多重试 3 次;仍失败则跳过该模板并明确告知用户。
  • Playwright 截图失败:检查 Chromium 是否安装,执行 npx playwright install chromium
  • 截图数据残缺:缺失字段自动隐藏对应区块,不报错、不留空白。

边界规则

  1. 禁止使用 AI 绘图(ImageGen 等)生成海报,全部 HTML 渲染后截图。
  2. 用户可后续指定只生成部分模板(如"只要模板 2 和模板 5"),默认全部 9 套。
  3. 不输出抖音文案、标题、话题标签,只输出纯信息图。
  4. 缺失字段自动隐藏,不报错。

资源文件

  • references/templates.md — 9 套模板的详细设计规范(配色、版式、装饰元素、字体层级)
  • references/self_check.md — 自检规则详解(排版/显示/逻辑三类校验项)
  • scripts/screenshot.js — Playwright 批量截图脚本