Agent skill

Website Style Images

by LeoYeAI in LeoYeAI/openclaw-master-skills

Generate images matching a website's visual style. An agent skill from LeoYeAI/openclaw-master-skills.

MITAuto-check passedMedia & Creative

Install Website Style Images

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills website-style-images --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/nano-website-style-images .claude/skills/website-style-images && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
website-style-images
GitHub stars
2.2k
Token cost
~4.1k tokens
SKILL.md length
732 words
Files
12 (incl. scripts)
Skills in repo
1,235
Repo updated
First seen
Licence
MIT

At a glance

Generate images matching a website's visual style. An agent skill from LeoYeAI/openclaw-master-skills.

  • Works in 5 steps: 用户需求 → 风格提取 → 风格确认 → …
  • The user wants to: create images in the style of a website
  • SKILL.md covers Setup, Overview, Prerequisites and 支持的图片类型, plus 3 more sections
  • Runs Python scripts from its folder; calls python3 and pip3; needs NANO_BANANA_ACCESS_KEY and NANO_BANANA_SECRET_KEY

What it does

Website Style Images is an agent skill from LeoYeAI/openclaw-master-skills. Generate images matching a website's visual style. Use this skill when the user wants to: create images in the style of a website, match a website's aesthetic, generate branded images from a URL, create banners/social posts/hero images matching a site's design, extract a website's visual identity and produce images in that style, or replicate a website's look and feel in new images. Also trigger when the user mentions 网站风格图片, 匹配网站风格, 品牌风格图片, 网站设计风格生成, 根据网站生成图片, or 仿站风格.

Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including scripts (for example `_meta.json`, `config/api.yaml` and `config/style_defaults.yaml`).

It sits in Media & Creative, covering Image generation, Design to code and Social media posts. It works with Instagram. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.

When your agent uses it

  • The user wants to: create images in the style of a website
  • Match a websites aesthetic
  • Generate branded images from a URL
  • Create banners/social posts/hero images matching a sites design

Example prompts

  • “s design, extract a website”
  • “/website-style-images”

Requirements

  • Python 3
  • A credential in NANO_BANANA_ACCESS_KEY
  • A credential in NANO_BANANA_SECRET_KEY

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. 用户需求
  2. 风格提取
  3. 风格确认
  4. 生成图片
  5. 审查与迭代

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 6 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • pip3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip3, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • NANO_BANANA_ACCESS_KEY
    • NANO_BANANA_SECRET_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Website Style Images loads about 4.1k tokens when it runs. Until then it costs about 124 tokens; SKILL.md has 732 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~124
When it runs · the whole SKILL.md, loaded when a task matches
~4.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 732 words, ~4,142 tokens.

Download SKILL.mdSave it as .claude/skills/website-style-images/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.
name
website-style-images
description
Generate images matching a website's visual style. Use this skill when the user wants to: create images in the style of a website, match a website's aesthetic, generate branded images from a URL, create banners/social posts/hero images matching a site's design, extract a website's visual identity and produce images in that style, or replicate a website's look and feel in new images. Also trigger when the user mentions 网站风格图片, 匹配网站风格, 品牌风格图片, 网站设计风格生成, 根据网站生成图片, or 仿站风格.
emoji
🌐

Website Style Image Generator

根据目标网站的视觉风格(配色、字体、美学、情绪),生成匹配该风格的各类图片。

Setup

Set all 4 environment variables before use (all required):

bash
export NANO_BANANA_ACCESS_KEY="your-access-key"
export NANO_BANANA_SECRET_KEY="your-secret-key"

Also set the API URL (required):

bash
export NANO_BANANA_API_URL="https://your-api-server/task/v1/submit"
export NANO_BANANA_STATUS_URL="https://your-api-server/task/v1/status/{task_id}"

Overview

  • API: NANO-BANANA (Gemini 3 Pro Image Preview) — async submit/poll/download
  • 风格提取: 双通道(CSS/DOM 数据 + 截图视觉分析)
  • 输出类型: 横幅、社交媒体、产品展示、博客头图、广告等 8 种
  • 脚本: 所有脚本自包含在 scripts/ 目录中

Prerequisites

bash
pip3 install -r requirements.txt

支持的图片类型

ID名称默认尺寸适用场景
hero_banner网站横幅1920×600网站首屏/头部横幅
social_square社交方图1080×1080Instagram、微信朋友圈
social_story社交竖图1080×1920Instagram/抖音 Story
social_landscape社交横图1200×628Facebook/LinkedIn 分享
product_display产品展示1200×1200产品展示图
blog_header博客头图1200×630博客文章头图
ad_banner广告横幅1200×628数字广告
custom自定义用户指定其他用途

Workflow

Phase 0 — 用户需求

在任何提取之前,先和用户确认三个问题。

问题 1:你想设计什么?

选项说明
品牌宣传图展示品牌形象、slogan、价值主张
产品推广图突出产品、功能、卖点
社交媒体内容日常帖子、活动预告、节日营销
广告素材信息流广告、展示广告
内容配图博客、文章、教程配图
UI/界面设计App 启动页、功能介绍、引导页
电商图产品主图、详情页、促销 banner
线下物料传单、展架、包装、周边

问题 2:用在哪个平台?(根据问题 1 智能展示对应选项)

设计类型平台选项 → 自动尺寸
社交媒体Instagram(1080×1080) / 小红书(1080×1440) / 朋友圈(1080×1080) / Facebook(1200×628) / LinkedIn(1200×628) / TikTok(1080×1920)
广告素材Google Ads(1200×628) / Facebook Ads(1080×1080) / 抖音信息流(1080×1920)
电商图淘宝主图(800×800) / Amazon(2000×2000) / Shopify(2048×2048)
UI设计iOS(1242×2688) / Android(1440×3120) / Web(1920×1080)
线下物料A4传单(2480×3508) / 展架(2362×5315) / 名片(1050×600)
内容配图博客头图(1200×630) / 微信公众号(900×383)
品牌/产品Hero Banner(1920×600) / 产品展示(1200×1200)

问题 3:风格从哪来?

选项说明后续流程
提供网站 URL (Recommended)从网站提取配色、字体、设计语言→ Phase 1 完整提取
上传截图/图片App 截图、品牌手册、竞品图片、任何参考图→ Phase 1(仅视觉分析,css_data = {})
多个竞品对比提供 2-3 个 URL,分析后选最佳→ Phase 1 逐个提取后合并
直接描述风格不需要参考,直接告诉我想要的风格→ Phase 1(手动构建 style profile)

收集完三个答案后,进入 Phase 1。


Phase 1 — 风格提取

根据 Phase 0 问题 3 的选择,执行对应的提取流程。

Step 1a: CSS/DOM 数据提取(仅有 URL 时执行)

使用 Chrome MCP navigate 打开目标网站,然后用 javascript_tool 注入以下脚本。

脚本使用元素面积加权颜色重要性,提取字体粗细、letter-spacing、line-height、渐变色值、阴影参数,并跳过不可见元素:

javascript
(function() {
    const els = document.querySelectorAll('*');
    const colorMap = {}, bgColorMap = {};
    const fonts = new Set(), headingFonts = new Set();
    const fontWeights = { heading: [], body: [] };
    const letterSpacings = [], lineHeights = [];
    let hasGradient = false, hasShadow = false;
    let shadowDetail = '';
    const radiusValues = [];
    const gradientColors = new Set();

    els.forEach(el => {
        const s = window.getComputedStyle(el);
        if (s.display === 'none' || s.visibility === 'hidden' || s.opacity === '0') return;

        // Area-weighted color collection
        const rect = el.getBoundingClientRect();
        const area = Math.max(1, rect.width * rect.height);
        const weight = Math.min(10, Math.ceil(area / 10000));

        const color = s.color;
        const bg = s.backgroundColor;
        if (color && color !== 'rgba(0, 0, 0, 0)') {
            colorMap[color] = (colorMap[color] || 0) + weight;
        }
        if (bg && bg !== 'rgba(0, 0, 0, 0)') {
            bgColorMap[bg] = (bgColorMap[bg] || 0) + weight;
        }

        // Font extraction with weight
        const fontName = s.fontFamily.split(',')[0].trim().replace(/['"]/g, '');
        if (fontName) fonts.add(fontName);

        const isHeading = ['H1','H2','H3','H4','H5','H6'].includes(el.tagName);
        if (isHeading) {
            headingFonts.add(fontName);
            fontWeights.heading.push(s.fontWeight);
        } else {
            fontWeights.body.push(s.fontWeight);
        }

        // Letter-spacing (px)
        const ls = parseFloat(s.letterSpacing);
        if (!isNaN(ls) && ls !== 0) letterSpacings.push(ls);

        // Line-height (ratio)
        const lh = parseFloat(s.lineHeight);
        const fs = parseFloat(s.fontSize);
        if (!isNaN(lh) && !isNaN(fs) && fs > 0) lineHeights.push(lh / fs);

        // Border radius
        const r = parseFloat(s.borderRadius);
        if (r > 0) radiusValues.push(r);

        // Gradient extraction with actual colors
        if (s.backgroundImage && s.backgroundImage.includes('gradient')) {
            hasGradient = true;
            const matches = s.backgroundImage.match(/rgba?\([^)]+\)|#[0-9a-fA-F]{3,8}/g);
            if (matches) matches.forEach(c => gradientColors.add(c));
        }

        // Shadow detail extraction (first significant one)
        if (s.boxShadow && s.boxShadow !== 'none' && !shadowDetail) {
            hasShadow = true;
            shadowDetail = s.boxShadow.length > 100 ? s.boxShadow.substring(0, 100) : s.boxShadow;
        }
    });

    const sortByWeight = obj => Object.entries(obj).sort((a,b) => b[1]-a[1]).map(e => e[0]);
    const modeFn = arr => {
        if (!arr.length) return 'normal';
        const freq = {};
        arr.forEach(v => freq[v] = (freq[v]||0)+1);
        return Object.entries(freq).sort((a,b) => b[1]-a[1])[0][0];
    };

    return JSON.stringify({
        textColors: sortByWeight(colorMap).slice(0, 20),
        backgroundColors: sortByWeight(bgColorMap).slice(0, 20),
        bodyFonts: [...fonts].slice(0, 10),
        headingFonts: [...headingFonts].slice(0, 5),
        fontWeights: {
            heading: modeFn(fontWeights.heading),
            body: modeFn(fontWeights.body)
        },
        letterSpacings: letterSpacings.slice(0, 10),
        lineHeights: lineHeights.slice(0, 10),
        avgBorderRadius: radiusValues.length ?
            radiusValues.reduce((a,b) => a+b,0) / radiusValues.length : 0,
        hasGradient, hasShadow, shadowDetail,
        gradientColors: [...gradientColors].slice(0, 10)
    });
})()

保存返回的 JSON 为 css_data。

如果用户上传截图/图片而非 URL:css_data = {},跳过本步骤,直接进入 Step 1b。

Step 1b: 截图与视觉分析

有 URL 时:使用 Chrome MCP computer 的 screenshot 动作截取页面,保存到 /tmp/website_style_screenshot.png。

用户上传截图/图片时:直接使用用户提供的图片文件。

使用 Read 工具读取图片,用 Claude Vision 分析以下内容:

字段描述示例值
aesthetic整体美学风格minimalist, bold, playful, corporate, luxury, tech, organic
palette_mood色彩情绪warm, cool, monochromatic, vibrant, muted, earthy
spacing布局间距generous whitespace, tight, balanced, airy
photo_style图像风格studio photography, flat illustrations, 3D renders, abstract
icon_style图标风格线性图标, 填充图标, 3D 图标, 无图标
illustration_style插画风格扁平插画, 等距插画, 手绘, 无插画
photography_treatment摄影处理高对比度, 去饱和, 暖调滤镜, 自然
pattern_style图案/纹理几何图案, 有机纹理, 噪点, 无
density信息密度极简, 适中, 密集
mood_keywords3-5个情绪关键词["professional", "premium", "trustworthy"]
brand_personality品牌个性"sophisticated, authoritative, modern tech"
typography_feel字体整体感觉"modern, clean", "classic, elegant"
layout_style布局结构"grid-based", "asymmetric", "centered single-column"

将分析结果整理为 screenshot_analysis 字典。

Step 1c: 网站素材提取(仅有 URL 时执行)

使用 Chrome MCP javascript_tool 提取网站中的图片资源:

javascript
(function() {
    const assets = [];
    // Logo / Favicon
    const favicon = document.querySelector('link[rel*="icon"]');
    if (favicon) assets.push({type: 'logo', url: favicon.href});
    const ogImage = document.querySelector('meta[property="og:image"]');
    if (ogImage) assets.push({type: 'og_image', url: ogImage.content});
    // Hero 图和大图
    document.querySelectorAll('img').forEach(img => {
        if (img.naturalWidth > 200 && img.naturalHeight > 200) {
            assets.push({type: 'image', url: img.src, w: img.naturalWidth, h: img.naturalHeight});
        }
    });
    // 背景图
    document.querySelectorAll('*').forEach(el => {
        const bg = getComputedStyle(el).backgroundImage;
        if (bg && bg !== 'none' && bg.includes('url(')) {
            const url = bg.match(/url\(["']?([^"')]+)["']?\)/);
            if (url) assets.push({type: 'background', url: url[1]});
        }
    });
    return JSON.stringify(assets.slice(0, 15));
})()

素材选择优先级:Logo > Hero image > Brand photo > OG image

从返回的资源中按优先级选择 2-3 张,下载到 /tmp/style_assets/。这些素材可在 Phase 3 中作为 reference_image_url 传给 API 辅助风格匹配。

Step 1d: 构建风格档案

使用 style_extractor.py 合并数据:

python
import sys
sys.path.insert(0, "${CLAUDE_SKILL_DIR}/scripts")
from style_extractor import build_style_profile, save_style_profile

profile = build_style_profile(css_data, screenshot_analysis, url)
save_style_profile(profile, "/tmp/website_style_profile.json")

或者直接根据分析结果手动构建 JSON:

json
{
    "source_url": "https://example.com",
    "colors": {
        "primary": "#1A1A2E",
        "secondary": "#16213E",
        "accent": "#E94560",
        "background": "#FFFFFF",
        "text_primary": "#1A1A2E",
        "palette_mood": "cool, sophisticated"
    },
    "typography": {
        "heading_style": "SF Pro Display, 700, tight letter-spacing",
        "body_style": "SF Pro Text, 400, standard line-height",
        "overall_feel": "modern, clean"
    },
    "design_traits": {
        "aesthetic": "minimalist corporate",
        "border_radius": "rounded",
        "shadow_style": "0px 4px 12px rgba(0,0,0,0.08)",
        "spacing": "generous whitespace",
        "gradient_use": false,
        "layout_style": "grid-based, symmetric"
    },
    "imagery_style": {
        "photo_style": "high-contrast studio photography",
        "mood_keywords": ["professional", "premium", "trustworthy"]
    },
    "brand_personality": "sophisticated, authoritative, modern tech",
    "screenshot_path": "/tmp/website_style_screenshot.png"
}

Phase 2 — 风格确认
Step 2a: 展示风格概要(精简版)

向用户展示 top 3 颜色 + 2 字体 + 3 aesthetic 关键词:

网站风格分析: [source]

配色: #1A1A2E (深海军蓝) · #E94560 (活力珊瑚) · #FFFFFF (白)
字体: SF Pro Display (标题) · SF Pro Text (正文)
美学: minimalist · corporate · premium

完整风格档案可按需查看。
Step 2b: 风格到 Prompt 映射

不同的 aesthetic 关键词会翻译为不同的 prompt 指令:

Aesthetic 关键词Prompt 指令映射
minimalist"clean composition, ample negative space, simple geometric forms, restrained color palette"
bold"high contrast, saturated colors, strong typography, impactful visual weight"
playful"rounded shapes, bright accent colors, whimsical elements, casual arrangement"
corporate"structured grid layout, professional photography, muted tones, formal composition"
luxury"rich textures, gold/dark accents, elegant serif typography, dramatic lighting"
tech"gradient overlays, geometric patterns, neon accents on dark background, futuristic elements"
organic"natural textures, earth tones, flowing shapes, warm photography, handcrafted feel"
vibrant"saturated multi-color palette, dynamic composition, energetic visual rhythm"

这些映射在 Phase 3 构建 prompt 时自动注入 content_description。

Show full SKILL.md (249 more words)Show less
Step 2c: 确认生成内容

图片类型和尺寸已在 Phase 0 中由用户选择的"设计什么 + 用在哪"自动确定。展示确认:

根据你的选择:
  设计类型: 社交媒体内容
  目标平台: Instagram
  → 自动选择: social_square (1080×1080)

内容描述: [需要用户补充,或根据网站内容自动生成]

如果用户未描述图片内容,追问:

选项说明
品牌宣传展示品牌形象、价值观
产品推广突出特定产品或服务
活动促销促销、打折、限时活动
内容营销博客、文章、教程配图
其他用户自定义描述

风格偏好微调?

选项说明
完全匹配网站风格 (Recommended)严格复现网站的视觉语言
稍作变化保留核心配色,允许创意发挥
仅用配色方案只使用颜色,其他自由发挥
需要手动调整风格参数让我修改具体的颜色、字体等

用户确认后进入 Phase 3。


Phase 3 — 生成图片
Step 3a: 相关素材搜索(可选)

当用户的内容需求涉及特定主题(如"科技产品"、"美食"、"旅行")时,可选执行:

  1. 从用户的设计需求中提取关键词
  2. 使用 WebSearch 搜索相关免费素材(Unsplash/Pexels)
  3. 选择与目标风格最匹配的 1-2 张素材
  4. 下载到 /tmp/style_assets/
  5. 在生成时作为参考图传入

展示已收集的素材给用户确认:

已提取/搜索到以下素材:
  1. [logo] apple-logo.png — 网站 Logo
  2. [hero] hero-banner.jpg — 网站首屏大图
  3. [search] tech-abstract.jpg — Unsplash 搜索: "technology abstract"

这些素材将用于辅助风格匹配。确认使用,还是需要调整?

此步骤为可选,不阻塞主流程。如果不需要额外素材,直接跳到 Step 3b。

Step 3b: 写入生成配置

根据用户确认的内容,构建配置 JSON:

bash
cat > /tmp/styled_image_config.json << 'CONFIG_JSON'
{
    "style_profile": {
        "source_url": "https://example.com",
        "colors": { ... },
        "typography": { ... },
        "design_traits": { ... },
        "imagery_style": { ... },
        "brand_personality": "...",
        "screenshot_path": "/tmp/website_style_screenshot.png"
    },
    "requests": [
        {
            "image_type": "hero_banner",
            "content_description": "A modern tech company homepage banner showcasing cloud computing services with abstract geometric shapes and circuit-like patterns"
        }
    ]
}
CONFIG_JSON

content_description 构建规则:

  • 结合用户选择的用途 + 用户提供的具体描述
  • 自动注入 Phase 2b 中 aesthetic 关键词对应的 prompt 指令
  • 如果用户只选了用途类型没给具体描述,根据网站内容和品牌个性自动生成
  • 描述应具体、可视化(描述画面内容而非抽象概念)
  • 包含具体的视觉元素(形状、物体、场景)而不仅仅是概念词
Step 3c: Dry run 预览
bash
cd ${CLAUDE_SKILL_DIR} && python3 scripts/generate_styled.py --from-json /tmp/styled_image_config.json --dry-run

Dry-run checklist:

  • 颜色 hex 值是否正确注入
  • 风格关键词是否匹配网站 aesthetic
  • aesthetic → prompt 映射是否已注入 content_description
  • 内容描述是否具体可视化
  • 尺寸信息是否包含在 prompt 中
  • 截图文件大小 < 5MB(超过则自动压缩到 1920px 宽)
  • reference_image_url 路径是否有效
Step 3d: 生成图片
bash
# 所有请求的图片:
cd ${CLAUDE_SKILL_DIR} && python3 scripts/generate_styled.py --from-json /tmp/styled_image_config.json -v

# 指定类型:
cd ${CLAUDE_SKILL_DIR} && python3 scripts/generate_styled.py --from-json /tmp/styled_image_config.json --types hero_banner,social_square -v

# 复用已有风格档案:
cd ${CLAUDE_SKILL_DIR} && python3 scripts/generate_styled.py --load-profile /path/to/style_profile.json --requests '[{"image_type":"hero_banner","content_description":"New product launch"}]' -v

生成流程:

  • 自动验证截图文件(大小 < 5MB,否则自动压缩)
  • 并发提交 API 任务(ThreadPoolExecutor,最多 8 并行)
  • 轮询等待完成(5s 间隔,指数退避至 15s,最长约 10min)
  • 生成图片到 output/styled/<slug>/
  • 后处理完成后自动清理中间文件(使用网站背景色填充)
  • 自动保存 style_profile.json 和 manifest.json 到输出目录

Phase 4 — 审查与迭代
  1. 读取每张生成的图片:使用 Read 工具查看 output/styled/<slug>/ 中的图片
  2. 展示结果:列出每张图片的路径、尺寸、类型
  3. 提供迭代选项:

对生成结果满意吗?

选项说明
满意,全部保留完成任务
重新生成部分图片选择要重新生成的图片
调整内容描述后重新生成修改画面内容要求
调整风格参数后重新生成微调颜色、美学等风格参数
增加新的图片类型额外生成其他类型的图片

根据用户选择进行迭代:

  • 重新生成:--types hero_banner 指定类型
  • 跳过后处理:--skip-postprocess
  • 调整风格:修改 /tmp/styled_image_config.json 中的 style_profile
  • 新增类型:在 requests 中追加新的图片请求
  • 复用风格:--load-profile output/styled/<slug>/style_profile.json

Error Handling

问题解决方案
网站无法访问 / JS 提取失败用截图 + 视觉分析替代(css_data = {}),或使用 WebFetch 作为备选
JS 提取返回空数据检查页面是否完全加载,可能需要等待或滚动触发懒加载
API 提交失败检查 config/api.yaml 中的 headers
Task FAILED简化 prompt,移除冲突指令,减少风格约束
Task TIMEOUT重试失败的图片类型 --types xxx
生成的风格不匹配增强 content_description 的具体性,或传入更好的截图参考
颜色提取不准手动调整风格档案中的颜色值,重新 dry-run 验证
截图太大 (>5MB)自动压缩到 1920px 宽,或手动缩小后重试
后处理出错使用 --skip-postprocess 保留原始图
用户上传截图而非 URLcss_data = {},仅依赖视觉分析构建风格档案
素材搜索无结果跳过素材搜索,直接用截图/风格档案生成

Notes

  • 网站截图作为 reference_image_url 传给 NANO-BANANA API,是最强的视觉锚点
  • 风格档案和 manifest 自动保存到 output/styled/<slug>/ 供复用
  • 所有脚本(api_client.py、postprocess.py、utils.py)自包含在 scripts/ 中
  • 支持 --load-profile 复用已保存的风格档案,跳过重新提取
  • Prompt 使用安全的字符串替换(非 .format()),防止用户输入中的 {key} 导致崩溃
  • 颜色聚类使用 HSL 排序确保确定性结果

© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 11 other files (scripts) in skills/nano-website-style-images of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • _meta.json
  • config/api.yaml
  • config/style_defaults.yaml
  • prompts/style_templates.yaml
  • requirements.txt
  • scripts/api_client.py
  • scripts/generate_styled.py
  • scripts/postprocess.py
  • scripts/style_extractor.py
  • scripts/style_prompt_engine.py
  • scripts/utils.py

Open the folder on GitHubat commit e5199b5

Compare with similar skills

Website Style Images next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Website Style Images compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Website Style Images this skillLeoYeAI/openclaw-master-skills2.2k—~4.1kAutomated safety check: PassMIT
CarouselsTheCraigHewitt/skills159—~2.3kAutomated safety check: PassMIT
Logo Generatorop7418/logo-generator-skill2.2k—~1.8kAutomated safety check: NotesNone
Web Asset Generatoralonw0/web-asset-generator5141 repos~6.6kAutomated safety check: PassMIT
Image Generationonyx-dot-app/onyx32k1 repos~1.7kAutomated safety check: PassCustom licence
Gemini Image Generatordair-ai/dair-academy-plugins6142 repos~3.5kAutomated safety check: NotesMIT

Similar skills

  • Carousels

    TheCraigHewitt/skills

    Turns a piece of Craig's content (an email, a YouTube script, an essay, or pasted text) into a polished image carousel publishable to both LinkedIn and Instagram from one set of 1080x1350 slides.

    159 GitHub stars~2.3k tokensUpdated 4 mo ago
    Media & CreativeAuto-check passed
  • Logo Generator

    op7418/logo-generator-skill

    Generate professional SVG logos and high-end showcase images.

    2.2k GitHub stars~1.8k tokensUpdated 5 mo ago
    Media & CreativeAuto-check: notes
  • Web Asset Generator

    alonw0/web-asset-generator

    Generate web assets including favicons, app icons (PWA), and social media meta images (Open Graph) for Facebook, Twitter, WhatsApp, and LinkedIn.

    514 GitHub starsUsed in 1 repo~6.6k tokens
    Media & CreativeAuto-check passed
  • Image Generation

    onyx-dot-app/onyx

    Generate or edit raster images (photos, illustrations, textures, sprites, mockups, logos, infographics) using the workspace's configured image-generation provider via onyx-cli image.

    32k GitHub starsUsed in 1 repo~1.7k tokens
    Media & CreativeAuto-check passed
  • Gemini Image Generator

    dair-ai/dair-academy-plugins

    Generates and edits images with Google's Gemini Nano Banana Pro model through the Gemini API, including photo edits and multi-image composition.

    614 GitHub starsUsed in 2 repos~3.5k tokens
    Media & CreativeAuto-check: notes
  • Logo Creator

    ReScienceLab/opc-skills

    Create logos using AI image generation. An agent skill from ReScienceLab/opc-skills.

    1.8k GitHub stars~1.5k tokensUpdated yesterday
    Media & CreativeAuto-check passed

More from LeoYeAI/openclaw-master-skills

All 1,200 skills in this repo
  • DevOps Pipeline Management

    LeoYeAI/openclaw-master-skills

    Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    LeoYeAI/openclaw-master-skills

    Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    LeoYeAI/openclaw-master-skills

    Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    LeoYeAI/openclaw-master-skills

    Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    LeoYeAI/openclaw-master-skills

    Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    LeoYeAI/openclaw-master-skills

    Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Works with

Questions about Website Style Images

What does Website Style Images do?

Generate images matching a website's visual style. An agent skill from LeoYeAI/openclaw-master-skills. Website Style Images is an agent skill from LeoYeAI/openclaw-master-skills. Generate images matching a website's visual style.

When should I use Website Style Images?

Website Style Images fits situations like: the user wants to: create images in the style of a website; match a websites aesthetic; generate branded images from a URL; create banners/social posts/hero images matching a sites design.

How do I install Website Style Images in Claude Code?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a claude-code`. Or copy the skill folder (skills/nano-website-style-images in LeoYeAI/openclaw-master-skills) into .claude/skills/website-style-images in your project. Claude Code loads it when a task matches its description.

How do I install Website Style Images in Codex?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a codex`. Or copy the skill folder (skills/nano-website-style-images in LeoYeAI/openclaw-master-skills) into .agents/skills/website-style-images in your project. Codex loads it when a task matches its description.

Can I use Website Style Images in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/website-style-images, .gemini/skills/website-style-images, .github/skills/website-style-images and .opencode/skills/website-style-images in your project.

What does Website Style Images need to run?

Going by SKILL.md and its folder, Website Style Images needs Python for the scripts in its folder, the command-line tools its instructions call (python3 and pip3) and credentials named NANO_BANANA_ACCESS_KEY and NANO_BANANA_SECRET_KEY. Our summary lists: Python 3; A credential in NANO_BANANA_ACCESS_KEY; A credential in NANO_BANANA_SECRET_KEY.

Does Website Style Images access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Website Style Images safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Website Style Images use?

Website Style Images is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Website Style Images use?

About 4.1k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Website Style Images?

Skills that share tags, products or a category with Website Style Images: Carousels (TheCraigHewitt/skills, 159 stars), Logo Generator (op7418/logo-generator-skill, 2.2k stars), Web Asset Generator (alonw0/web-asset-generator, 514 stars) and Image Generation (onyx-dot-app/onyx, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Website Style Images?

LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.

Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.