openclaw-visual

将 OpenClaw 中的信息(PhoenixClaw 日志、聊天记录、单条消息等)转换为精美排版的图片, 便于在聊天窗口(Telegram/Slack/Discord 等)中直接展示和分享。 Use when: - 用户要求将内容做成图片 ("帮我把这段话做成图片") - 用户要求生成日志可视化 ("生成今日日志分享图") - 用户要求将聊天记录可视化 ("把今天的对话做成总结图")

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "openclaw-visual" with this command: npx skills add goforu/openclaw-visual

OpenClaw Visual - 精美图文生成器

将 OpenClaw 中的任何信息转换为精美排版的图片,直接在聊天窗口中展示。

设计风格: 现代极简 / 瑞士风格 / 编辑排版 核心流程: 内容 → HTML 模板 → 本地生成图片 → OpenClaw 发送图片给用户

图片生成: 本地渲染,无需外部 API

  • 默认: node-html-to-image (轻量快速)
  • 高级: playwright (用户要求精美/复杂效果时)

🎯 使用场景

1. 单条消息转图片

用户说: "帮我把这段话做成好看的分享图"

AI 将:

  1. 分析内容类型(金句/引用/想法)
  2. 选择合适模板(引用卡片/金句卡片)
  3. 生成精美图片
  4. 在聊天窗口发送图片

2. PhoenixClaw 日志可视化

用户说: "生成今天的日志分享图"

AI 将:

  1. 读取 ~/PhoenixClaw/Journal/daily/YYYY-MM-DD.md
  2. 解析 frontmatter 和 sections
  3. 选择模板(社交卡片/手账风格)
  4. 生成精美图片
  5. 在聊天窗口发送图片

3. 聊天记录摘要

用户说: "把今天的对话做成总结图"

AI 将:

  1. 扫描今日会话记录
  2. 提取关键信息
  3. 生成时间线/仪表盘风格图片
  4. 在聊天窗口发送图片

🛠️ 核心工作流

步骤 1: 内容识别

分析用户请求,识别内容类型:

内容类型识别方式示例
单条消息用户直接提供文本"帮我把这段话做成图片"
PhoenixClaw 日志用户提及日志/日记"生成今日日志图"
聊天记录用户提及对话/聊天"把今天的对话做成图"
引用/金句文本包含引号或哲理内容名言警句

步骤 2: 模板选择

根据内容类型自动选择最佳模板:

quote-card - 金句/引用卡片

  • 适用: 名言、哲理、简短感悟
  • 尺寸: 800x800 (方形,适合 Instagram)
  • 特点: 大字体编辑排版、纯色背景、无装饰引号、SVG 图标
  • 主题: light / dark / accent / blue

moment-card - 瞬间/时刻卡片

  • 适用: 单张照片 + 描述
  • 尺寸: 800x1000 (竖版)
  • 特点: 杂志风格、大图留白、时间/位置 SVG 图标

daily-journal - 日记编辑风格

  • 适用: PhoenixClaw 完整日志
  • 尺寸: 800x1200 (竖版)
  • 特点: 瑞士网格系统、清晰层级、SVG 图标、大日期数字

social-share - 社交媒体卡片

  • 适用: 分享亮点/成就
  • 尺寸: 1200x630 (OG Image)
  • 特点: 双栏布局、纯色/深色主题、统计数据展示

dashboard - 数据仪表盘

  • 适用: 周/月度汇总、统计数据
  • 尺寸: 1200x800 (横版)
  • 特点: 数据可视化、单色图表、网格布局、SVG 图标

步骤 3: HTML/CSS 生成

根据选定模板,填充内容生成 HTML:

  1. 读取模板文件 assets/templates/{template-name}.html
  2. 替换占位符变量:
    • {{TITLE}} - 标题
    • {{CONTENT}} - 主要内容
    • {{DATE}} - 日期
    • {{MOOD}} - 心情文字
    • {{ENERGY}} - 能量值
    • {{IMAGE_URL}} - 图片 URL
  3. 应用基础样式 assets/css/base-styles.css
  4. 使用系统字体栈 (无需外部字体):
    • 中文: system-ui, PingFang SC, Microsoft YaHei
    • 英文: system-ui, Segoe UI, Roboto

步骤 4: 图片生成

使用本地脚本生成图片:

# 调用本地生成脚本
node scripts/generate-image.js \
  --template quote-card \
  --content '{"QUOTE":"行动是治愈恐惧的良药","AUTHOR":"威廉·詹姆斯"}' \
  --output ~/OpenClaw/Visuals/output.png

渲染引擎选择:

  • 默认 (node-html-to-image): 轻量快速,适合大多数场景
  • 高级 (playwright): 当用户要求"精美/复杂/高级"效果时自动切换

步骤 5: 返回结果

脚本返回 JSON 结果:

{
  "success": true,
  "outputPath": "/Users/xxx/OpenClaw/Visuals/output.png",
  "renderer": "nodejs",
  "template": "quote-card",
  "dimensions": { "width": 800, "height": 800 }
}

OpenClaw 读取生成的图片文件并发送给用户。

📋 模板详情

quote-card (金句卡片)

适用场景: 名言、哲理、简短感悟

布局:

┌─────────────────────┐
│                     │
│      "引用内容"      │
│                     │
│    —— 作者/来源      │
│                     │
│  [装饰元素]  [日期]  │
└─────────────────────┘

样式特点:

  • 渐变背景 (紫→粉 / 蓝→青 / 橙→红)
  • 大号衬线字体 (Playfair Display / 霞鹜文楷)
  • 装饰性引号
  • 底部装饰线和日期

变量:

  • {{QUOTE}} - 引用内容
  • {{AUTHOR}} - 作者/来源
  • {{DATE}} - 日期 (可选)
  • {{THEME}} - 配色主题 (purple/blue/orange)

moment-card (瞬间卡片)

适用场景: 单张照片 + 描述

布局:

┌─────────────────────┐
│  [照片]             │
│                     │
│  🕐 时间            │
│                     │
│  描述文字...        │
│                     │
│  [心情 emoji]       │
└─────────────────────┘

样式特点:

  • 照片占 60% 高度
  • 圆角设计
  • 时间戳带图标
  • 心情 emoji 装饰

变量:

  • {{IMAGE_URL}} - 照片 URL (需为公开可访问)
  • {{TIME}} - 时间
  • {{DESCRIPTION}} - 描述
  • {{MOOD}} - 心情 emoji

daily-journal (日记手账)

适用场景: PhoenixClaw 完整日志

布局:

┌─────────────────────┐
│  📅 日期  星期       │
│  😊 心情  ⚡ 能量    │
│  ─────────────────  │
│  ✨ Highlights      │
│  • 成就1            │
│  • 成就2            │
│                     │
│  🖼️ Moments         │
│  [照片] [照片]      │
│                     │
│  💭 Reflections     │
│  反思内容...        │
│                     │
│  🌱 Growth          │
│  成长笔记...        │
└─────────────────────┘

样式特点:

  • 米黄色纸质背景
  • 手绘风格边框
  • 贴纸式 emoji
  • 分栏布局

变量:

  • {{DATE}} - 日期
  • {{WEEKDAY}} - 星期
  • {{MOOD}} - 心情
  • {{ENERGY}} - 能量
  • {{HIGHLIGHTS}} - 亮点列表
  • {{MOMENTS}} - 瞬间列表
  • {{REFLECTIONS}} - 反思
  • {{GROWTH}} - 成长笔记

social-share (社交分享)

适用场景: 分享亮点/成就

布局:

┌─────────────────────────────┐
│                             │
│        ✨ 今日亮点          │
│                             │
│    "完成了重要里程碑"       │
│                             │
│    📊 3 个任务完成          │
│    🎯 效率 95%              │
│                             │
│         [Logo]              │
└─────────────────────────────┘

样式特点:

  • 1200x630 横向布局
  • 渐变背景
  • 大标题 + 统计数据
  • 底部品牌标识

变量:

  • {{TITLE}} - 标题
  • {{SUBTITLE}} - 副标题
  • {{STATS}} - 统计数据
  • {{DATE}} - 日期

dashboard (数据仪表盘)

适用场景: 周/月度汇总

布局:

┌──────────────────────────────────────┐
│  📊 本周总结          2026-W05       │
│  ─────────────────────────────────── │
│  [心情趋势图]  [能量分布图]           │
│                                      │
│  关键指标:                           │
│  ✅ 完成: 15  📝 日记: 7  📸 照片: 12 │
│                                      │
│  时间线:                             │
│  Mon → Tue → Wed → Thu → Fri         │
└──────────────────────────────────────┘

样式特点:

  • 深色背景
  • 数据可视化
  • 时间线展示
  • 关键指标卡片

变量:

  • {{PERIOD}} - 周期 (本周/本月)
  • {{DATE_RANGE}} - 日期范围
  • {{MOOD_DATA}} - 心情数据
  • {{ENERGY_DATA}} - 能量数据
  • {{STATS}} - 统计数据
  • {{TIMELINE}} - 时间线事件

🔧 配置说明

前置要求

  1. 安装依赖:

    cd skills/openclaw-visual
    npm install
    
  2. (可选) 安装 Playwright - 用于高级渲染:

    npm install playwright
    npx playwright install chromium
    

可选配置

~/.openclaw/visual/config.yaml 中可配置:

# 默认模板
default_template: "quote-card"

# 默认配色主题
default_theme: "light"  # light/dark/accent/blue

# 渲染引擎
renderer: auto  # auto | nodejs | playwright
# auto 模式: 默认 nodejs, 用户要求"精美/复杂"时自动切换 playwright

# 输出设置
output:
  path: "~/OpenClaw/Visuals/"
  format: "png"  # png | jpeg
  quality: 90    # JPEG 质量 (1-100)

💡 使用示例

示例 1: 金句卡片

用户: "帮我把这句话做成图片: '行动是治愈恐惧的良药'"

AI:

  1. 识别为金句类型
  2. 选择 quote-card 模板
  3. 生成 HTML 内容
  4. 调用本地生成脚本:
    node scripts/generate-image.js \
      --template quote-card \
      --content '{"QUOTE":"行动是治愈恐惧的良药","AUTHOR":"威廉·詹姆斯","THEME":"light"}' \
      --output ~/OpenClaw/Visuals/quote-20240201.png
    
  5. 读取生成的图片文件,在聊天窗口发送给用户

示例 2: 日志可视化

用户: "生成今天的日志分享图"

AI:

  1. 读取 ~/PhoenixClaw/Journal/daily/2026-02-01.md
  2. 解析内容
  3. 选择 daily-journalsocial-share 模板
  4. 生成并发送图片

示例 3: 聊天记录总结

用户: "把今天的对话做成总结图"

AI:

  1. 扫描 ~/.openclaw/sessions/ 今日记录
  2. 提取关键话题和决策
  3. 选择 dashboardsocial-share 模板
  4. 生成并发送图片

📚 参考文档

  • references/templates.md - 模板设计规范
  • references/content-parsing.md - 内容解析规则
  • references/rendering-setup.md - 本地渲染配置

🎨 扩展开发

添加新模板

  1. assets/templates/ 创建新的 .html 文件
  2. 定义模板变量占位符
  3. references/templates.md 添加文档
  4. 更新模板选择逻辑

添加新主题

  1. 在 CSS 中定义新的配色方案
  2. 更新 config.yaml 中的主题选项
  3. 在模板选择时传入 {{THEME}} 变量

设计原则

视觉风格

  • 极简主义: 去除多余装饰,留白充足
  • 瑞士风格: 网格系统,清晰层级
  • 编辑排版: 大字号标题,精致细节

配色方案

  • 主色: #1a1a1a (深灰)
  • 辅色: #525252, #737373, #a3a3a3 (灰度)
  • 背景: #fafafa, #f5f5f5 (米白)
  • 强调: #ea580c (橙红), #4f46e5 (靛蓝)

图标系统

使用 Lucide 风格 SVG 图标,替代所有 emoji:

  • 所有图标内联在 HTML 中
  • 统一 stroke-width: 1.5
  • 支持通过 CSS 控制大小: .icon-sm, .icon-md, .icon-lg

字体策略

  • 使用系统字体栈,无需加载外部字体
  • 中文: system-ui, PingFang SC, Microsoft YaHei
  • 英文: system-ui, Segoe UI, Roboto, Helvetica Neue

OpenClaw Visual - 让每一条记录都值得被看见

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Fast Douyin Publish

抖音视频自动发布助手。一键上传视频到抖音,支持自动文案生成和标签优化。

Registry SourceRecently Updated
General

Skills Finder

Intelligent skill matcher that searches multiple skill marketplaces (ClawHub & Skills.sh) in real-time. Supports ANY language for user input, multi-step skil...

Registry SourceRecently Updated
General

Claw Self Improving Plus

Turn raw mistakes, corrections, discoveries, and repeated decisions into structured learnings and promotion candidates. Use when the user wants a conservativ...

Registry SourceRecently Updated