# autoclaw

Adopt this skill: https://proskills.md/skills/other/yibian2018-autoclaw

Page: https://proskills.md/skills/other/yibian2018-autoclaw
This document is the public skill bundle for that page. It contains SKILL.md and every helper file the catalog carries. No login is required.

## File: SKILL.md
size: 6196
upstream: https://github.com/yibian2018/autoclaw/blob/HEAD/SKILL.md

````text
---
summary: "Figma 图片导出工具"
description: "从 Figma 设计文件快速导出图片，支持单个/批量导出、指定格式尺寸、自动创建文件夹"
trigger:
  - "导出 figma"
  - "figma 导出图片"
  - "导出设计稿"
  - "figma export"
  - "批量导出 figma"
  - "figma 批量导出"
---

# Figma 图片导出 Skill

快速从 Figma 设计文件导出图片到本地。

## 核心功能

✅ **单个节点导出** - 导出指定节点为图片  
✅ **批量导出** - 一次导出多个节点  
✅ **格式支持** - PNG、JPG、SVG、PDF  
✅ **尺寸控制** - 0.5x、1x、2x、3x、4x  
✅ **智能保存** - 自动创建文件夹、智能命名  
✅ **URL 解析** - 自动从 Figma URL 提取 file_key 和 node_id  

## 使用方式

### 1. 单个节点导出

**用户说**：
> 把这个 Figma 节点导出为 2x PNG 图片：https://www.figma.com/file/ABC123/Design?node-id=123:456

**助手自动**：
1. 从 URL 提取 file_key 和 node_id
2. 调用 Figma API 导出
3. 下载图片到指定位置
4. 返回文件路径

### 2. 批量导出

**用户说**：
> 把这个文件的 3 个页面都导出为 1x PNG，保存到下载文件夹的"项目名"文件夹

**助手自动**：
1. 获取文件结构，识别所有页面节点
2. 批量调用导出 API
3. 创建目标文件夹
4. 下载所有图片并命名
5. 返回文件列表

### 3. 指定格式和尺寸

**用户说**：
> 导出这个节点为 SVG 格式，保存到桌面

**用户说**：
> 导出这个设计为 3x PNG，用于 Retina 屏幕

## 导出流程

```
用户请求 → URL解析 → 获取文件信息 → 导出图片 → 下载保存 → 返回结果
```

### 步骤详解

#### 1. URL 解析
```python
# 从 Figma URL 提取关键信息
file_key = extract_file_key("https://www.figma.com/file/ABC123/Design")
# → "ABC123"

node_id = extract_node_id("https://www.figma.com/file/ABC123?node-id=123:456")
# → "123:456"
```

#### 2. 获取节点信息（可选）
```python
# 如果需要批量导出或查看文件结构
file_data = api.get_file(file_key)
# 遍历节点树，找出所有 FRAME 或 GROUP
```

#### 3. 导出图片
```python
# 调用 Figma Images API
result = api.export_image(
    file_key="ABC123",
    node_ids=["123:456", "789:012"],
    format="png",
    scale=2.0
)
# 返回图片 URL 映射
```

#### 4. 下载保存
```python
# 下载图片到指定位置
for node_id, url in result['images'].items():
    download_image(url, f"~/Downloads/{filename}.png")
```

## 参数说明

### 格式 (format)
- `png` - PNG 格式（默认，支持透明）
- `jpg` - JPEG 格式（文件更小）
- `svg` - SVG 矢量格式（可缩放）
- `pdf` - PDF 格式（适合打印）

### 尺寸 (scale)
- `0.5` - 0.5x（缩小一半）
- `1.0` - 1x（默认，原始尺寸）
- `2.0` - 2x（Retina 屏幕）
- `3.0` - 3x（高清屏幕）
- `4.0` - 4x（超高清）

### 保存位置
- `~/Downloads/` - 下载文件夹（默认）
- `~/Desktop/` - 桌面
- 自定义路径 - 用户指定

## 实际案例

### 案例 1：导出单个设计稿

**用户**：
> 导出这个设计为 1x PNG：https://www.figma.com/file/ABC123/Design?node-id=18-358

**助手执行**：
```bash
# 1. 提取信息
file_key: "ABC123"
node_id: "18:358"

# 2. 调用 API
python3 figma_api.py export "ABC123" "18:358" png 1

# 3. 下载图片
curl -o ~/Downloads/设计稿.png "<image_url>"

# 4. 返回结果
✅ 已导出到: ~/Downloads/设计稿.png (1.3 MB)
```

### 案例 2：批量导出多个页面

**用户**：
> 把这个文件的 3 个页面都导出为 1x PNG，保存到"项目设计"文件夹

**助手执行**：
```bash
# 1. 获取文件结构
python3 figma_api.py get_file "ABC123"
# 识别出 3 个顶层 GROUP

# 2. 批量导出
python3 figma_api.py export "ABC123" "18:358,18:359,18:360" png 1

# 3. 创建文件夹
mkdir -p ~/Downloads/项目设计

# 4. 下载所有图片
curl -o ~/Downloads/项目设计/页面1.png "<url1>"
curl -o ~/Downloads/项目设计/页面2.png "<url2>"
curl -o ~/Downloads/项目设计/页面3.png "<url3>"

# 5. 返回结果
✅ 已导出 3 个文件到: ~/Downloads/项目设计/
```

### 案例 3：导出高清图片

**用户**：
> 导出这个图标为 4x PNG，用于应用图标

**助手执行**：
```bash
# 导出 4x 高清图片
python3 figma_api.py export "ABC123" "45:678" png 4

✅ 已导出 4x 高清图片: ~/Downloads/图标@4x.png (2.5 MB)
```

## 错误处理

### 常见错误

| 错误 | 原因 | 解决方案 |
|------|------|----------|
| `403 Forbidden` | Token 无权限访问该文件 | 检查文件权限或联系文件所有者 |
| `404 Not Found` | 文件或节点不存在 | 确认 URL 正确，检查文件是否被删除 |
| `429 Rate Limit` | API 调用过于频繁 | 等待 1 分钟后重试 |
| `网络错误` | 无法连接到 Figma API | 检查网络连接，重试 |

### 错误提示示例

```
❌ 导出失败：权限不足

该文件不公开，你的 Token 没有访问权限。

解决方案：
1. 联系文件所有者请求访问权限
2. 确认文件 URL 是否正确
3. 检查 Token 是否有效
```

## 最佳实践

### 1. 批量导出优化
```python
# ✅ 推荐：一次性导出多个节点
api.export_image(file_key, ["node1", "node2", "node3"])

# ❌ 不推荐：多次单独导出（容易触发 Rate Limit）
for node in nodes:
    api.export_image(file_key, [node])
```

### 2. 智能命名
```python
# 根据节点名称自动命名
filename = f"{node_name}_{format}_{scale}x.png"
# → "首页设计_png_2x.png"
```

### 3. 文件夹组织
```
~/Downloads/
  └── 项目名称/
      ├── 首页-方案一.png
      ├── 首页-方案二.png
      └── 详情页.png
```

## 依赖工具

- **figma_api.py** - Figma API Python 客户端
- **curl** - HTTP 下载工具
- **figma_token** - 存储在 `TOOLS.md`

## 配置

无需额外配置，Token 已存储在 `TOOLS.md`：
```
Figma → YOUR_FIGMA_TOKEN_HERE
```

## 相关 Skill

- **figma-api** - 完整的 Figma API 集成（查看文件、评论、团队等）
- **feishu-send-file** - 导出后发送到飞书

---

**版本**: 1.0.0  
**创建时间**: 2026-04-20  
**作者**: UU 🦞
````

## File: README.md
upstream: https://github.com/yibian2018/autoclaw/blob/HEAD/README.md

````text
# Figma 图片导出 Skill 🎨

🦞 **专为 Figma 设计稿导出生成** - 一键导出，智能保存

## 为什么需要这个 Skill？

设计稿导出是最常见的 Figma 操作，但每次都要：
1. 打开 Figma
2. 选择节点
3. 设置导出格式
4. 手动下载
5. 整理文件

**有了这个 Skill，只需要一句话**：
```
"导出这个 Figma 文件的所有页面为 1x PNG"
```

助手会自动：
✅ 提取文件信息  
✅ 获取所有页面  
✅ 批量导出图片  
✅ 创建文件夹  
✅ 智能命名  
✅ 返回文件路径  

## 快速开始

### 1. 导出单个节点
```
用户：导出这个 Figma 链接为 1x PNG
     https://www.figma.com/file/ABC123/Design?node-id=18-358

助手：✅ 已导出到: ~/Downloads/figma-export-18-358.png (1.3 MB)
```

### 2. 批量导出
```
用户：把这个文件的 3 个页面都导出为 PNG，保存到"项目设计"文件夹

助手：✅ 已导出 3 个文件到: ~/Downloads/项目设计/
     - 首页设计.png (1.5 MB)
     - 详情页.png (1.2 MB)
     - 个人中心.png (1.8 MB)
```

### 3. 高清导出
```
用户：导出为 2x Retina 图片

助手：✅ 已导出 2x 高清图片: ~/Downloads/设计稿@2x.png (3.2 MB)
```

## 主要功能

### 📦 批量导出
一次导出多个节点，自动创建文件夹整理

### 🎯 智能识别
自动识别文件中的所有 Frame 和 Group

### 📐 格式支持
- PNG - 支持透明，通用格式
- JPG - 文件更小，适合照片
- SVG - 矢量图，可缩放
- PDF - 适合打印和文档

### 🔍 尺寸控制
- 0.5x - 缩小预览
- 1x - 原始尺寸（默认）
- 2x - Retina 屏幕
- 3x - 高清屏幕
- 4x - 超高清

### 🗂️ 智能保存
- 自动创建文件夹
- 根据节点名称智能命名
- 支持自定义保存位置

## 使用场景

### 场景 1：设计交付
```
用户：把这个设计稿的所有页面导出为 2x PNG，准备交付给开发

助手：[自动识别所有页面并导出]
     ✅ 已导出 8 个页面到: ~/Downloads/设计交付-20260420/
```

### 场景 2：快速预览
```
用户：导出这个设计为 0.5x PNG，发给我看看

助手：✅ 已导出缩小版: ~/Downloads/预览.png (0.5 MB)
```

### 场景 3：图标导出
```
用户：把所有图标导出为 SVG 格式

助手：✅ 已导出 24 个图标到: ~/Downloads/图标集/
```

### 场景 4：打印准备
```
用户：导出为 PDF 格式，用于打印

助手：✅ 已导出 PDF: ~/Downloads/设计稿.pdf (2.1 MB)
```

## 高级用法

### 命令行工具

```bash
# 导出单个节点
python3 export_helper.py single "<figma_url>" --format png --scale 1

# 批量导出
python3 export_helper.py batch "<figma_url>" --nodes "id1,id2,id3"

# 导出所有页面
python3 export_helper.py all "<figma_url>" --folder "项目名称"
```

### Python API

```python
from export_helper import FigmaExporter

exporter = FigmaExporter()

# 导出单个
result = exporter.export_single(
    url="<figma_url>",
    format="png",
    scale=2.0
)

# 批量导出
result = exporter.export_batch(
    url="<figma_url>",
    node_ids=["18:358", "18:359"],
    folder_name="项目设计"
)

# 导出所有页面
result = exporter.export_all_frames(
    url="<figma_url>",
    format="png",
    scale=1.0
)
```

## 与其他 Skill 配合

### 1. 导出后发送到飞书
```
用户：导出这个设计，然后发到飞书群里

助手：[导出图片]
     [发送到飞书]
     ✅ 已导出并发送到飞书群
```

### 2. 导出后上传到云盘
```
用户：导出并上传到云盘

助手：[导出图片]
     [上传到云盘]
     ✅ 已上传，分享链接：...
```

## 故障排除

### Q: 提示"权限不足"？
A: 该文件不公开，需要文件所有者授权。检查文件权限设置。

### Q: 导出失败？
A: 
1. 检查网络连接
2. 确认 URL 正确
3. 检查节点是否存在
4. 查看是否触发 Rate Limit（等待 1 分钟）

### Q: 文件太大？
A: 
1. 使用 JPG 格式（文件更小）
2. 降低导出尺寸（如 0.5x）
3. 分批导出

## 最佳实践

✅ **批量导出** - 一次导出多个节点，减少 API 调用  
✅ **合理命名** - 使用有意义的文件名  
✅ **文件夹整理** - 为项目创建专门文件夹  
✅ **格式选择** - 根据用途选择合适格式  
✅ **尺寸控制** - 根据显示设备选择倍率  

## 相关资源

- [SKILL.md](./SKILL.md) - 完整文档
- [QUICK_REF.md](./QUICK_REF.md) - 快速参考
- [export_helper.py](./export_helper.py) - 导出工具
- [Figma API 文档](https://www.figma.com/developers/api)

---

**版本**: 1.0.0  
**作者**: UU 🦞  
**创建时间**: 2026-04-20
````
