前言:设计师的 AI 助手
Figma 已成为设计师最常用的协作工具,但设计工作流中仍有大量重复性任务:导出切图、生成设计规范、标注间距、编写组件文档……OpenClaw 可以通过 Figma API 自动化这些工作,让设计师专注于创意本身。本文将介绍如何用 OpenClaw 打造 AI 辅助的设计师工作流。
一、Figma API 配置
1.1 获取 Figma Personal Access Token
在 Figma 中,点击左上角头像,进入 Settings 页面,滚动到 Personal access tokens 区域,生成一个新的 Token。将此 Token 配置到 OpenClaw:
{
"skills": {
"figma": {
"enabled": true,
"config": {
"accessToken": "${FIGMA_TOKEN}",
"defaultTeamId": "your_team_id",
"exportFormat": "png",
"exportScale": 2
}
}
}
}
1.2 常用 API 端点
Figma REST API 提供了丰富的端点:
- GET /v1/files/:file_key – 获取文件结构
- GET /v1/files/:file_key/nodes – 获取指定节点详情
- GET /v1/images/:file_key – 导出图片
- GET /v1/files/:file_key/components – 获取组件列表
- GET /v1/files/:file_key/styles – 获取样式信息
二、核心功能实现
2.1 设计规范自动生成
从 Figma 文件中提取颜色、字体、间距等设计规范,自动生成文档:
// skills/figma/spec-generator.js
module.exports = {
async generateDesignSpec(fileKey) {
const file = await this.getFile(fileKey);
const colors = this.extractColors(file.styles);
const typography = this.extractTypography(file.styles);
const spacing = this.extractSpacing(file.document);
return this.renderSpecMarkdown({ colors, typography, spacing });
},
extractColors(styles) {
return Object.values(styles)
.filter(s => s.styleType === 'FILL')
.map(s => ({
name: s.name,
values: s.fills.map(f => this.rgbaToHex(f.color, f.opacity))
}));
},
extractTypography(styles) {
return Object.values(styles)
.filter(s => s.styleType === 'TEXT')
.map(s => ({
name: s.name,
fontFamily: s.style.fontFamily,
fontSize: s.style.fontSize,
fontWeight: s.style.fontWeight,
lineHeight: s.style.lineHeightPx
}));
},
extractSpacing(node, depth) {
depth = depth || 0;
const result = [];
if (node.paddingLeft) result.push({ property: 'padding-left', value: node.paddingLeft });
if (node.itemSpacing) result.push({ property: 'item-spacing', value: node.itemSpacing });
if (node.children) {
for (const child of node.children) {
result.push(...this.extractSpacing(child, depth + 1));
}
}
return result;
},
renderSpecMarkdown(spec) {
let md = '# Design Specification\n\n';
md += '## Colors\n\n';
for (const c of spec.colors) {
md += '- **' + c.name + '**: ' + c.values.join(', ') + '\n';
}
md += '\n## Typography\n\n';
for (const t of spec.typography) {
md += '- **' + t.name + '**: ' + t.fontFamily + ' ' + t.fontSize + 'px / ' + t.lineHeight + 'px\n';
}
return md;
}
};
2.2 切图自动导出
设计师标注好切图后,OpenClaw 可以自动批量导出:
// skills/figma/export.js
module.exports = {
async exportAssets(fileKey, options) {
options = options || {};
const format = options.format || 'png';
const scale = options.scale || 2;
const file = await this.getFile(fileKey);
const exportNodes = this.findExportableNodes(file.document);
const results = [];
for (const node of exportNodes) {
const imageUrl = await this.exportImage(fileKey, node.id, format, scale);
results.push({ name: node.name, nodeId: node.id, url: imageUrl, format: format, scale: scale });
}
return results;
},
findExportableNodes(node) {
let nodes = [];
if (node.exportSettings && node.exportSettings.length > 0) {
nodes.push(node);
}
if (node.children) {
for (const child of node.children) {
nodes = nodes.concat(this.findExportableNodes(child));
}
}
return nodes;
},
async exportImage(fileKey, nodeId, format, scale) {
const url = 'https://api.figma.com/v1/images/' + fileKey +
'?ids=' + nodeId + '&format=' + format + '&scale=' + scale;
const res = await fetch(url, {
headers: { 'X-Figma-Token': process.env.FIGMA_TOKEN }
});
const data = await res.json();
return data.images[nodeId];
}
};
三、自然语言交互示例
用户:帮我生成设计规范文档
助手:正在分析 Figma 文件...
项目:Mobile App Redesign v3.2
已提取设计规范:
- 颜色变量:12 个
- 字体样式:8 个
- 间距系统:6 个档位
文档已生成并保存到:docs/design-spec.md
是否需要同时同步到 Notion?
用户:导出所有切图
助手:正在扫描可导出的节点...
找到 24 个可导出的资源
导出进度:
- icons/ (12个) - 已完成
- illustrations/ (6个) - 已完成
- components/ (6个) - 已完成
所有切图已导出到 assets/ 目录
格式:PNG @2x
用户:这个页面的设计有什么问题?
助手:分析了 "首页" 页面,发现以下潜在问题:
1. 标题区域行高不一致(32px vs 36px)
2. 按钮间距与设计规范不符(应为16px,实际为14px)
3. 次要文字颜色对比度不足(WCAG AA 未通过)
4. 卡片圆角不一致(部分12px,部分16px)
建议修正以上问题以保持设计一致性。
四、与开发团队协作
4.1 自动生成 CSS 变量
从 Figma 设计规范自动生成 CSS 变量文件:
:root {
/* Colors */
--color-primary: #4F46E5;
--color-secondary: #10B981;
--color-warning: #F59E0B;
--color-error: #EF4444;
--color-text-primary: #111827;
--color-text-secondary: #6B7280;
--color-bg-primary: #FFFFFF;
--color-bg-secondary: #F9FAFB;
/* Typography */
--font-heading: "Inter", sans-serif;
--font-body: "Inter", sans-serif;
--text-xs: 12px;
--text-sm: 14px;
--text-base: 16px;
--text-lg: 18px;
--text-xl: 20px;
--text-2xl: 24px;
/* Spacing */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-6: 24px;
--space-8: 32px;
}
4.2 设计变更通知
通过 Cron 监听 Figma 文件变更,自动通知开发团队:
{
"cron": [
{
"id": "figma-change-check",
"schedule": "0 9,14 * * 1-5",
"task": "检查 Figma 文件变更",
"actions": [
"对比文件版本差异",
"提取变更的组件和样式",
"生成变更摘要",
"通知前端开发团队"
]
}
]
}
五、AI 设计审查
OpenClaw 可以利用 AI 对设计稿进行自动审查,检查一致性和可访问性问题:
- 一致性检查:颜色、字体、间距是否符合设计规范
- 可访问性检查:文字对比度是否满足 WCAG 标准
- 组件复用:是否存在可以复用但未复用的组件
- 命名规范:图层和组件命名是否规范
六、安全与权限
- Figma Token 应仅授予必要的文件读取权限
- 导出的切图和设计规范应保存在受控目录中
- 设计变更通知应区分内部版本和外部版本
总结
通过 OpenClaw 与 Figma 的深度集成,设计师可以告别繁琐的手动工作,专注于创意设计。从自动生成设计规范、批量导出切图,到智能设计审查和变更通知,AI 助手让设计协作更高效、更一致。让 AI 处理重复劳动,让设计师回归设计本身。
