Skip to main content

image-gen

AI 图像生成助手,支持文生图和图生图,对接 OpenRouter / 阿里云百炼 / 火山方舟 / Google Gemini。 内置 API Key 加密管理:Key 以 AES 加密存入 WPS 笔记,解密密钥由「设备ID + 笔记ID + provider」现场派生,本机无需存储额外文件。 触发词:"帮我生图""文生图""图生图""用 AI 画一张""生成一张图""根据这张图生成""垫图生图""用 Flux 生图""用 Gemini 生图"。 与 wpsnote-cli gen-image 的区别:本 Skill 支持图生图、多服务商选择、更高质量模型,是内置生图的升级替代方案。

소스 정보

저장소
wpsnote/wpsnote-skills
최근 소스 활동
2026년 4월 2일 15:59
감지된 SKILL.md 언어
중국어
스타
184
포크
10

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
image-gen
description
AI 图像生成助手,支持文生图和图生图,对接 OpenRouter / 阿里云百炼 / 火山方舟 / Google Gemini。 内置 API Key 加密管理:Key 以 AES 加密存入 WPS 笔记,解密密钥由「设备ID + 笔记ID + provider」现场派生,本机无需存储额外文件。 触发词:"帮我生图""文生图""图生图""用 AI 画一张""生成一张图""根据这张图生成""垫图生图""用 Flux 生图""用 Gemini 生图"。 与 wpsnote-cli gen-image 的区别:本 Skill 支持图生图、多服务商选择、更高质量模型,是内置生图的升级替代方案。
metadata
{"version":"2.0.0","category":"content-creation","tags":["image","gen-image","flux","gemini","dashscope","openrouter"],"dependencies":["wps-note"],"scripts":["comm_script/image_gen.py"]}
# Image Gen — AI 图像生成 支持文生图 + 图生图,自动管理 API Key,生成结果可直接插入 WPS 笔记。 --- ## 铁律 - **API Key 不得在对话中输出**,无论任何情况 - `encrypt-key` 子命令输出的 `ciphertext_b64` 可以展示(这是密文,不是真实 Key) - 告警文案必须完整展示,不可省略 - **模型名称不允许修改,不允许用户自定义**。每个 provider 只有唯一一个确认可用的模型,AI 必须严格使用下表中的值,不得根据用户描述、偏好或自行推断填写其他模型名——任何其他模型名均视为幻觉: | provider | 唯一可用模型(硬编码,不可改动) | |----------|-----------------------------| | openrouter | `google/gemini-3.1-flash-image-preview` | | dashscope(百炼) | `qwen-image-2.0-pro` | | ark(即梦) | `doubao-seedream-5-0-260128` | | gemini | `gemini-3-pro-image-preview` | 用户只能选择用哪个 **provider**,模型由 AI 根据上表自动填入,任何情况下不接受覆盖。 --- ## 核心流程 ``` 确认需求 → 确定 provider + model → 获取/解密 Key → 执行生图 → 询问是否插入笔记 ``` --- ## Step 1:确认生图需求 询问: ``` 请告诉我: 1. 生图描述(prompt)是什么? 2. 有参考图吗?(有 → 图生图;没有 → 文生图) 3. 比例偏好?(1:1 / 16:9 / 9:16 / 4:3 / 3:4,默认 1:1) ``` - **无参考图** → 文生图,全部 provider 可用 - **有参考图** → 图生图,仅 openrouter(本地文件)/ gemini(本地文件)/ ark即梦(公网 URL)支持;百炼不支持图生图 --- ## Step 2:确定 Provider 让用户从以下四个 provider 中选一个,模型由 AI 自动填入(见铁律): | provider | 特点 | 适合场景 | |----------|------|---------| | openrouter | 走代理,文生图 + 图生图(本地文件垫图) | 代理环境,需要图生图 | | dashscope(百炼) | 国内直连,仅文生图 | 国内网络,纯文生图 | | ark(即梦) | 国内直连,文生图 + 图生图(垫图须公网 URL) | 国内网络,需要图生图 | | gemini | 走代理,文生图 + 图生图(本地文件垫图) | 代理环境,Google 直连 | 用户未指定时,根据是否有代理、是否需要图生图主动推荐。 > openrouter / gemini 国内需要代理,询问用户是否提供 `--proxy`。 --- ## Step 3:获取 Key ### 3.1 先搜笔记 `search_notes` 搜索 `图像生成 Key`,找到后 `read_note` 读取,在表格中找 provider 对应行,取出 `ciphertext_b64` 和 `note_id`。 找到密文 → 直接进入 **Step 4**(note 模式,脚本自动解密)。 找不到笔记或对应行 → 进入 **Step 3.2**。 ### 3.2 向用户索取 Key ``` 我需要 {provider} 的 API Key 才能继续。 获取地址:{平台 URL} 请直接粘贴你的 Key: ``` | provider | Key 获取地址 | |----------|------------| | openrouter | https://openrouter.ai/workspaces/default/keys | | dashscope | https://bailian.console.aliyun.com/cn-beijing?tab=model#/api-key | | ark | https://console.volcengine.com/ark/ | | gemini | https://aistudio.google.com/app/api-keys | 收到 Key 后询问是否保存(见 Step 3.3)。 ### 3.3 询问是否保存 Key **必须完整展示以下告警:** --- > ⚠️ **安全风险告知(请认真阅读)** > > 如果你选择保存,Key 将以 **AES 加密**后存入 WPS 笔记: > - 加密密钥由「**本机设备 ID + 笔记 ID + provider**」现场派生,本机无需存储额外文件 > - **WPS 笔记不会获取你的 Key 内容**,密文在其他设备上无法解密 > - ⚠️ 如果你添加了**第三方 MCP 插件**,该插件可读取笔记内容(含密文) > - ⚠️ 换设备后,同一密文无法解密,需重新保存 > > **是否保存?** > A. 保存(我已知悉风险) > B. 不保存(本次临时使用) --- **选择保存**: 1. 检查 `图像生成 Key` 笔记是否存在,不存在则 `create_note` 新建(标题 `图像生成 Key`,加 `#图像生成` 标签) 2. 执行加密: ```bash python3 comm_script/image_gen.py encrypt-key \ --note-id "{笔记 note_id}" \ --provider "{provider}" \ --key "{用户提供的Key}" ``` 3. 从输出中取 `ciphertext_b64`,整表替换写入笔记(新增或替换对应 provider 行): ```xml <table> <tr> <td><p><strong>provider</strong></p></td> <td><p><strong>ciphertext_b64</strong></p></td> <td><p><strong>更新时间</strong></p></td> </tr> <tr> <td><p>{provider}</p></td> <td><p>{ciphertext_b64}</p></td> <td><p>{当前日期}</p></td> </tr> </table> ``` 4. 对话只说:「Key 已加密保存到笔记《图像生成 Key》,下次自动读取。」 **选择不保存**:Key 仅本次使用,直接进入 Step 4,`--key` 直接传字符串。 --- ## Step 4:执行生图 ### note 模式(已有保存的 Key) ```bash python3 comm_script/image_gen.py \ --provider "{provider}" \ --model "{model}" \ --key "note:{note_id}" \ --ciphertext "{ciphertext_b64}" \ --prompt "{prompt}" \ [--image "{参考图路径或URL}"] \ [--proxy "{代理地址}"] \ --aspect "{比例}" \ [--size "{分辨率}"] \ --out "./output" ``` ### 临时模式(本次直接使用) ```bash python3 comm_script/image_gen.py \ --provider "{provider}" \ --model "{model}" \ --key "{用户提供的Key}" \ --prompt "{prompt}" \ [--image "{参考图路径或URL}"] \ [--proxy "{代理地址}"] \ --aspect "{比例}" \ --out "./output" ``` 执行前告知:「正在调用 {provider} 生成图片,预计 30-120 秒…」 生图完成后,从 `[saved] {路径}` 行获得本地图片路径。 --- ## Step 5:询问是否插入笔记 ``` 图片已生成:{路径} 需要插入到 WPS 笔记吗? A. 插入当前打开的笔记 B. 插入指定笔记(请告诉我标题) C. 不用,本地保存就行 ``` 选择插入时,执行以下步骤: **1. 获取目标笔记的 anchor_id(必须先做)** ```bash wpsnote-cli outline --note_id "{note_id}" --json ``` 取 `blocks` 数组最后一个元素的 `id` 作为 `anchor_id`。 **2. 插入图片(优先 CLI)** ```bash wpsnote-cli insert-image \ --note_id "{note_id}" \ --anchor_id "{最后一个block的id}" \ --position "after" \ --src "{图片本地路径或URL}" \ --json ``` 返回 `block_id` 表示插入成功。 **3. 降级:CLI 失败则用 MCP** ``` insert_image({ note_id: "{note_id}", anchor_id: "{anchor_id}", position: "after", src: "{url或本地路径}" }) ``` > ⚠️ `insert-image` 要求目标笔记**当前在 WPS 编辑器中打开**,否则报 `INTERNAL_ERROR`。如果报错,提示用户在 WPS 中打开该笔记后重试。 --- ## Step 6:删除 Key 用户说「删除 Key」「清除保存的 Key」「换一个 Key」时: 1. 搜索 `图像生成 Key` 笔记,整表替换删除对应 provider 行 2. 告知:「{provider} 的密文已从笔记中删除。下次生图需重新提供 Key。」 > 无需清理本机文件(note 模式本机本就无存储)。 --- ## 常见问题处理 | 场景 | 处理方式 | |------|---------| | 解密失败(换了设备) | 提示"换设备后密文不可用,请重新执行保存流程" | | openrouter / gemini 连接超时 | 提示"国内需要代理,请提供代理地址" | | 百炼传了参考图 | 自动忽略,告知"百炼不支持图生图" | | 火山方舟垫图是本地文件 | 提示"须为公网 URL" | | 依赖未安装 | 提示 `pip install httpx cryptography` |
GitHub에서 보기