虾稿设计
使用 visual-rag MCP 工具生成设计图片。
MCP 服务地址:https://syncopated-retractively-anitra.ngrok-free.dev/mcp
若工具不可用或域名失效,告知用户联系小邹获取新地址。
标准流程
所有模型都应优先使用语义搜索路径。 关键词搜索仅在语义搜索无结果时作为兜底。
Step 1:ensure_services
确认服务在线,必须第一步调用。
Step 2:search_templates(语义搜索,首选)
search_templates(query, usage_type="cover", n=8, include_thumbnails=True)
用固定的 Query 模板构造查询,匹配效果最佳:
格式:[cover/content/poster] 语义:[为{目标受众}做{格式},传达{核心主张},整体{情绪/风格}]
| 参数 | 说明 | 示例 |
|---|---|---|
| 格式 | 用途分类 | cover=小红书封面,content=正文配图,poster=手机海报 |
| 目标受众 | 谁会看这张图 | 内容创作者、职场新人、减脂博主… |
| 核心主张 | 图片想传达什么 | "AI工具让创作提速10倍"、"3步搞定职场沟通" |
| 情绪/风格 | 整体调性 | 冲击力强/清新轻松/喜庆热烈/克制专业… |
示例:
❌ 弱:
"减脂封面"✅ 强:"格式:cover 语义:为减脂打卡博主做封面,传达夏日减脂计划,整体清新轻松、带清单结构"
usage_type 参数与 query 中的"格式"保持一致,作为硬过滤(只搜对应类型的模板)。n 建议设为 8。
有视觉能力的模型:看缩略图合图,根据视觉风格直接选。
纯文本模型:传 include_thumbnails=False,根据 brief / visual_tags / layout_structure 等字段判断匹配度选模板 ID。
无结果时:改用 list_templates(keyword, include_thumbnails=True/False) 关键词兜底。关键词须命中模板描述中实际存在的词(如"插画""手绘""喜庆"),不能用语义词("减脂"无效)。
Step 3:get_template_spec(template_id)
获取选定模板的槽位详情(uuid、role、max_chars、max_per_line、line_break、hint、current)。
⚠ template_id 是纯整数,不带 t 前缀。正确:template_id=689,错误:template_id="t689"
Step 4:填写槽位内容
有视觉能力的模型:可根据需求适度发挥,但不得超出 max_chars / max_per_line 限制。
无视觉能力的模型:严格遵守以下规则,这是唯一的质量保障手段:
list_line_count: N→ 必须填满 恰好 N 条,不能多也不能少,少填会出现大片空白max_per_line→ 每行字数绝对不超过此值,参考current示例的字数节奏max_chars→ 总字数不超过上限line_break: true→ 手动加\n换行,不靠自动折行must_edit: true的槽位必须填写,其余保留原值不做修改- 不擅自改变内容结构,模板设计什么格式就填什么格式
槽位来源字段(⚠ 必须遵守):每个槽位的 来源 字段定义了内容来源类型:
| 来源值 | 含义 | 规则 |
|---|---|---|
⚠ 必须来自真实用户信息,不能编造 | 账号名、品牌名、期号、日期等 | 必须追问用户获取,不能使用示例值、不能编造 |
可根据需求创作 | 标题、正文、语录等 | 可基于用户需求自由创作 |
装饰文字,可保留默认 | 装饰性英文、设计元素等 | 可保留原值,或按主题替换 |
填写指引 字段提供了具体的填写说明,填写前必须阅读。
若用户未提供真实信息(账号名、品牌名、期号等),先追问再填写,或保留原值,绝不编造。
Step 5:generate_poster(template_id, slots, adjustments?)
渲染并返回两张图:render(成品)+ inspect(UUID 标注图)。
⚠ slots 是字典,格式为 {"uuid": "填入文字"}。
正确:slots={"4b4c414680a0": "减脂打卡"}
错误:slots=[{"uuid": "4b4c414680a0", "value": "减脂打卡"}]
⚠ 渲染完成后返回的下载链接路径是 /files/文件名,不要自行拼接路径。
Step 6:验收(渲染完成后必须检查)
generate_poster 返回结果包含:
- render 图(成品)
- inspect 图(色码标注:🔴已确认问题 🟡疑似 🟢正常 ⬜装饰/非必填)
- 📊 质检报告(文字,随文本一起返回)
- 🔴 高危裁图(有确认问题时自动附加)
验收流程:
-
先读质检报告:
- 🔴 确认问题 → 必须处理(文字溢出/元素缺失),通常需缩短文字后重渲
- 🟡 疑似问题 → 调用
get_slot_crops放大查看后决定是否处理 - ✅ 全部正常 → 继续视觉检查
-
看 render 图(有视觉能力时):
- 装饰贴纸是否遮挡文字
- 列表是否有大片空白(槽位未填满)
- 整体视觉效果是否达标
-
处理 🟡 疑似问题(按需):
get_slot_crops(render_path="/path/t708_xxx_render.png", uuids=["uuid1", "uuid2"]) -
定位布局问题:看 inspect 图,左上角 UUID 前8位对应 adjustments 中的 id
⚠ 批量生成时,每张图必须独立验收,不能因为第1张通过就认为其余都正确。
调整元素位置(inspect 图定位后):
adjustments=[{"id": "uuid前8位", "style": {"transform": "translateX(80px)"}}]
支持:transform / display: none / opacity / fontSize / top / left
无视觉能力的模型:依赖质检报告文字,严格处理 🔴 问题;从源头(Step 4 字数控制)规避 🟡。
原则
- 内容优先:内容多换高密度模板,不删减用户内容
- 给成品:有视觉能力的模型自行调整到满意后再展示;无视觉模型严格填槽后直接交付
- 渲染完成后展示 render 图,并提供响应中返回的下载链接(不自行构造文件名)