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.
Generate images matching a website's visual style. An agent skill from LeoYeAI/openclaw-master-skills.
$ npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills website-style-images --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "website-style-images" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-website-style-images into .claude/skills/website-style-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "website-style-images", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-website-style-imagesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills website-style-images --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/nano-website-style-images .agents/skills/website-style-images && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "website-style-images" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-website-style-images into .agents/skills/website-style-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "website-style-images", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills website-style-images --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/nano-website-style-images .cursor/skills/website-style-images && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "website-style-images" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-website-style-images into .cursor/skills/website-style-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "website-style-images", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/nano-website-style-images--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills website-style-images --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/nano-website-style-images .gemini/skills/website-style-images && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "website-style-images" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-website-style-images into .gemini/skills/website-style-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "website-style-images", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills website-style-imagesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/nano-website-style-images .github/skills/website-style-images && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "website-style-images" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-website-style-images into .github/skills/website-style-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "website-style-images", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill website-style-images -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills website-style-images --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/nano-website-style-images .opencode/skills/website-style-images && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "website-style-images" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/nano-website-style-images into .opencode/skills/website-style-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "website-style-images", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
website-style-imagesGenerate 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. 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
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.
Ships 6 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3pip3From the folder's file list and the shell code blocks in SKILL.md.
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.
Names these keys or tokens, usually read from environment variables:
NANO_BANANA_ACCESS_KEYNANO_BANANA_SECRET_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 732 words, ~4,142 tokens.
.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.根据目标网站的视觉风格(配色、字体、美学、情绪),生成匹配该风格的各类图片。
Set all 4 environment variables before use (all required):
export NANO_BANANA_ACCESS_KEY="your-access-key"
export NANO_BANANA_SECRET_KEY="your-secret-key"Also set the API URL (required):
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}"scripts/ 目录中pip3 install -r requirements.txt| ID | 名称 | 默认尺寸 | 适用场景 |
|---|---|---|---|
hero_banner | 网站横幅 | 1920×600 | 网站首屏/头部横幅 |
social_square | 社交方图 | 1080×1080 | Instagram、微信朋友圈 |
social_story | 社交竖图 | 1080×1920 | Instagram/抖音 Story |
social_landscape | 社交横图 | 1200×628 | Facebook/LinkedIn 分享 |
product_display | 产品展示 | 1200×1200 | 产品展示图 |
blog_header | 博客头图 | 1200×630 | 博客文章头图 |
ad_banner | 广告横幅 | 1200×628 | 数字广告 |
custom | 自定义 | 用户指定 | 其他用途 |
在任何提取之前,先和用户确认三个问题。
问题 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 0 问题 3 的选择,执行对应的提取流程。
使用 Chrome MCP navigate 打开目标网站,然后用 javascript_tool 注入以下脚本。
脚本使用元素面积加权颜色重要性,提取字体粗细、letter-spacing、line-height、渐变色值、阴影参数,并跳过不可见元素:
(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。
有 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_keywords | 3-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 字典。
使用 Chrome MCP javascript_tool 提取网站中的图片资源:
(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 辅助风格匹配。
使用 style_extractor.py 合并数据:
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:
{
"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"
}向用户展示 top 3 颜色 + 2 字体 + 3 aesthetic 关键词:
网站风格分析: [source]
配色: #1A1A2E (深海军蓝) · #E94560 (活力珊瑚) · #FFFFFF (白)
字体: SF Pro Display (标题) · SF Pro Text (正文)
美学: minimalist · corporate · premium
完整风格档案可按需查看。不同的 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。
图片类型和尺寸已在 Phase 0 中由用户选择的"设计什么 + 用在哪"自动确定。展示确认:
根据你的选择:
设计类型: 社交媒体内容
目标平台: Instagram
→ 自动选择: social_square (1080×1080)
内容描述: [需要用户补充,或根据网站内容自动生成]如果用户未描述图片内容,追问:
| 选项 | 说明 |
|---|---|
| 品牌宣传 | 展示品牌形象、价值观 |
| 产品推广 | 突出特定产品或服务 |
| 活动促销 | 促销、打折、限时活动 |
| 内容营销 | 博客、文章、教程配图 |
| 其他 | 用户自定义描述 |
风格偏好微调?
| 选项 | 说明 |
|---|---|
| 完全匹配网站风格 (Recommended) | 严格复现网站的视觉语言 |
| 稍作变化 | 保留核心配色,允许创意发挥 |
| 仅用配色方案 | 只使用颜色,其他自由发挥 |
| 需要手动调整风格参数 | 让我修改具体的颜色、字体等 |
用户确认后进入 Phase 3。
当用户的内容需求涉及特定主题(如"科技产品"、"美食"、"旅行")时,可选执行:
/tmp/style_assets/展示已收集的素材给用户确认:
已提取/搜索到以下素材:
1. [logo] apple-logo.png — 网站 Logo
2. [hero] hero-banner.jpg — 网站首屏大图
3. [search] tech-abstract.jpg — Unsplash 搜索: "technology abstract"
这些素材将用于辅助风格匹配。确认使用,还是需要调整?此步骤为可选,不阻塞主流程。如果不需要额外素材,直接跳到 Step 3b。
根据用户确认的内容,构建配置 JSON:
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_JSONcontent_description 构建规则:
cd ${CLAUDE_SKILL_DIR} && python3 scripts/generate_styled.py --from-json /tmp/styled_image_config.json --dry-runDry-run checklist:
# 所有请求的图片:
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生成流程:
output/styled/<slug>/style_profile.json 和 manifest.json 到输出目录output/styled/<slug>/ 中的图片对生成结果满意吗?
| 选项 | 说明 |
|---|---|
| 满意,全部保留 | 完成任务 |
| 重新生成部分图片 | 选择要重新生成的图片 |
| 调整内容描述后重新生成 | 修改画面内容要求 |
| 调整风格参数后重新生成 | 微调颜色、美学等风格参数 |
| 增加新的图片类型 | 额外生成其他类型的图片 |
根据用户选择进行迭代:
--types hero_banner 指定类型--skip-postprocess/tmp/styled_image_config.json 中的 style_profilerequests 中追加新的图片请求--load-profile output/styled/<slug>/style_profile.json| 问题 | 解决方案 |
|---|---|
| 网站无法访问 / 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 保留原始图 |
| 用户上传截图而非 URL | css_data = {},仅依赖视觉分析构建风格档案 |
| 素材搜索无结果 | 跳过素材搜索,直接用截图/风格档案生成 |
reference_image_url 传给 NANO-BANANA API,是最强的视觉锚点output/styled/<slug>/ 供复用api_client.py、postprocess.py、utils.py)自包含在 scripts/ 中--load-profile 复用已保存的风格档案,跳过重新提取.format()),防止用户输入中的 {key} 导致崩溃© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (scripts) in skills/nano-website-style-images of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Website Style Images this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.1k | Automated safety check: Pass | MIT | |
| CarouselsTheCraigHewitt/skills | 159 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Logo Generatorop7418/logo-generator-skill | 2.2k | — | ~1.8k | Automated safety check: Notes | None | |
| Web Asset Generatoralonw0/web-asset-generator | 514 | 1 repos | ~6.6k | Automated safety check: Pass | MIT | |
| Image Generationonyx-dot-app/onyx | 32k | 1 repos | ~1.7k | Automated safety check: Pass | Custom licence | |
| Gemini Image Generatordair-ai/dair-academy-plugins | 614 | 2 repos | ~3.5k | Automated safety check: Notes | MIT |
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.
op7418/logo-generator-skill
Generate professional SVG logos and high-end showcase images.
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.
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.
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.
ReScienceLab/opc-skills
Create logos using AI image generation. An agent skill from ReScienceLab/opc-skills.
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.
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.
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.
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.
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.
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.
Works with
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.