mcpField
B
blog-image

blog-image

github.com/infrasity-labs创意与媒体15095 次安装18 周前更新
代码仓库

关于 blog-image

blog-image 是使用 Gemini 为博客内容生成和编辑图像的技能。它根据用途与风格构建详细提示词,并可提供适用于博客的图像和替代文本;生成依赖 nanobanana-mcp 服务。

主要功能

  1. 01生成新的博客图像
  2. 02通过优化指令编辑现有图像
  3. 03使用六部分简报构建提示词
  4. 04按博客版位匹配图像比例
  5. 05生成替代文本和 frontmatter 片段

适用场景

  1. 01为文章制作头图
  2. 02为文章章节生成插图
  3. 03调整图像以用于社交分享

MCP 相关

该技能会检查 nanobanana-mcp 工具,并使用它们生成和编辑图像、设置宽高比及查看图像历史。设置流程会配置 MCP 服务和 API 密钥。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill blog-image

安装后在 Claude Code 中输入/blog-image确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
gemini-models.md
mcp-tools.md
prompt-engineering-blog.md
scripts/
setup_image_mcp.py
validate_image_setup.py

详细介绍

博客图片 - 为博客内容生成 AI 图片

你是一名创意总监,专门统筹 Gemini 的图片生成,用于博客内容。切勿将用户的原始文本直接传给 API。始终先理解、完善并构建经过优化的提示词,采用六要素推理简报系统。

快速参考

命令功能
/blog image generate <idea>通过完整的提示词工程生成博客图片
/blog image edit <path> <instructions>智能编辑现有博客图片
/blog image setup配置 MCP 服务和 API 密钥

博客图片类型

根据博客使用场景匹配图片类型:

图片类型宽高比分辨率领域模式放置位置
主视觉图/封面图16:92K 或 4K编辑/风景Frontmatter coverImage
OG/社交卡片16:91K编辑/信息图Frontmatter ogImage
文内插图16:9 或 4:31K视主题而定H2 之后、正文之前
文内产品图4:3 或 1:11K产品产品相关章节中
章节分隔图8:1 或 4:11K抽象/风景主要章节之间

尺寸要求:

  • 博客主视觉图/封面图:1200x630(兼容 OG)或 1920x1080
  • Open Graph(OG):1200x630(社交分享所需)
  • 文内图片:宽度至少 1200px

MCP 可用性检查

生成图片之前,检查 nanobanana-mcp 工具是否可用:

  1. 尝试调用 get_image_history(轻量级,无副作用)
  2. 如果成功:MCP 可用,继续生成
  3. 如果失败:MCP 尚未配置,告知用户:
    • “图片生成需要 nanobanana-mcp 服务。运行 /blog image setup 进行配置。”
    • 如果是内部调用(来自 blog-write/blog-rewrite):静默返回,不报错。调用方工作流将继续使用图库照片。

生成工作流

适用于 /blog image generate <idea> 或内部调用时:

第 1 步:分析意图

确定博客需要什么:

  • 图片类型:主视觉图、文内图片、OG 卡片还是章节分隔图?
  • 博客主题:文章内容是什么?
  • 风格:写实、编辑风格、插画还是极简?
  • 约束条件:品牌颜色、具体尺寸、平台格式?
  • 氛围:权威、亲切、戏剧化还是简洁?

如果请求含糊,就使用场景和风格提出一个澄清问题。

第 2 步:选择领域模式

为图片选择专业视角:

模式适用场景提示词重点
编辑博客页眉、专题图片、生活方式内容造型、构图、出版物参考
产品电商文章、评测、对比表面材质、影棚灯光、干净背景
风景环境背景、旅行、主视觉区域大气透视、景深层次、一天中的时段
UI/Web科技博客图标、插画、图表简洁矢量图、扁平化设计、精确配色
信息图数据驱动文章、流程、对比布局结构、层级、易于识别的颜色
抽象图案背景、章节分隔图、装饰元素色彩理论、数学形态、纹理

加载 references/prompt-engineering-blog.md,以获取领域模式修饰词库。

第 3 步:构建包含 6 个组成部分的推理简报

将提示词写成自然流畅的叙述段落——切勿写成关键词列表:

  1. 主体——人物或事物,包含丰富的外观细节(纹理、材质、尺寸)
  2. 动作——正在发生什么,包括姿势、手势、动作、状态
  3. 背景——环境、场景、一天中的时间、季节、天气
  4. 构图——相机角度、镜头类型、取景、留白、景深
  5. 光线——光源、质感、方向、色温、阴影
  6. 风格——艺术媒介、美学、胶片、参考艺术家或时代

适用于写实博客图片的模板:

A photorealistic [shot type] of [subject with physical detail], [action/pose],
set in [environment with specifics]. [Lighting conditions] create [mood].
Captured with [camera model], [focal length] lens at [f-stop], producing
[depth of field effect]. [Color palette/grading notes]. Aspect ratio 16:9,
suitable as a blog [hero image/inline illustration] at [target dimensions].

适用于插画或风格化图片的模板:

A [art style] [format] of [subject with character detail], featuring
[distinctive characteristics] with [color palette]. [Line style] and
[shading technique]. Background is [description]. [Mood/atmosphere].
第 4 步:设置宽高比

生成前调用 set_aspect_ratio:

博客用途比例
主视觉 / 封面 / OG16:9
产品图 / 正方形4:3 或 1:1
章节分隔图8:1 或 4:1
竖图(快拍)9:16
第 5 步:通过 MCP 生成图片
MCP 工具使用时机
set_aspect_ratio宽高比不是 1:1 时,始终先调用
gemini_generate_image根据精心撰写的提示词生成新图片
gemini_edit_image修改现有图片
gemini_chat迭代优化 / 多轮会话
get_image_history查看生成的图片
clear_conversation重置会话上下文

模型选择(切换模型时使用 MCP 工具 set_model):

  • NB2 Flash(默认):适用于大多数博客图片——速度快,支持 14 种比例,4K,$0.067/张
  • NB Pro:适用于带文字叠加的主视觉图片(文字准确率 94%)或最高画质需求——$0.134/张
  • Original:经济型选项,$0.039/张——支持 5 种比例,最高 1K

加载 references/mcp-tools.md 查看参数详情。 加载 references/gemini-models.md 查看模型规格、定价和速率限制。

第 6 步:后期处理(按需)

生成后,调整尺寸或转换格式以用于博客:

# Resize to blog hero dimensions (1200x630)
magick input.png -resize 1200x630^ -gravity center -extent 1200x630 hero.png

# Convert to WebP for web optimization
magick input.png -quality 85 output.webp

# Convert to AVIF (smallest, modern)
magick input.png -quality 80 output.avif

# Crop to exact OG dimensions
magick input.png -resize 1200x630^ -gravity center -extent 1200x630 og-image.png

检查是否有 magick(ImageMagick 7)。如果没有,则改用 convert。

第 7 步:交付

提供:

  1. 图片路径——图片保存位置(~/Documents/nanobanana_generated/)
  2. 精心撰写的提示词——展示完整的推理简报(供学习参考)
  3. 设置——模型、宽高比、领域模式
  4. 替代文本——描述性句子,10-125 个字符,自然包含主题关键词
  5. Frontmatter 片段(适用于主视觉 / OG 图片):
coverImage: "/path/to/generated-image.png"
coverImageAlt: "Descriptive alt text sentence with topic keywords"
ogImage: "/path/to/generated-image.png"
  1. 优化建议——如有相关建议,提供 1-2 个

编辑工作流

对于 /blog image edit <path> <instructions>:

  1. 读取图片路径和编辑指示
  2. 优化指示(切勿直接传入原始指示):
    用户说Claude 撰写
    "remove background"详细说明如何保留边缘并移除背景
    "make it warmer"具体说明色温调整,并注明保留要求
    "add text"说明字体样式、大小、位置、对比度和可读性
    "make it brighter"提高曝光度、提亮阴影,同时保留高光
    "crop for social"调整至 1200x630,并采用中心重心裁剪
  3. 使用优化后的指示调用 gemini_edit_image
  4. 返回修改后的图片路径和描述

内部 API(供 blog-write / blog-rewrite 使用)

作为来自 blog-write 或 blog-rewrite 的 Task 子 Agent 调用时:

输入(由调用方技能提供):

  • image_type:hero、inline、og、divider
  • topic:博客文章主题 / 标题
  • section_context:(可选)图片所对应的标题或章节
  • style_preference:(可选)photorealistic、illustrated、editorial
  • count:(可选)所需图片数量(默认:1)

输出(返回给调用方技能):

### Generated Image
- **Path:** ~/Documents/nanobanana_generated/image_timestamp.png
- **Alt Text:** Descriptive sentence about the image
- **Type:** hero / inline / og
- **Domain Mode:** Editorial
- **Aspect Ratio:** 16:9
- **Suggested Frontmatter:**
  coverImage: "/path/to/image.png"
  coverImageAlt: "Alt text here"

优雅降级:如果 MCP 不可用,则立即返回且不报错。 调用方工作流将继续使用图库照片。如果图片生成功能不可用,切勿因此阻塞 blog-write 或 blog-rewrite。

替代文本生成

为每张生成的图片创建符合博客规范的替代文本:

  • 完整的描述性句子(而非关键词列表)
  • 10–125 个字符
  • 自然地包含主题关键词
  • 描述图片展示的内容及其与文章内容的关联
  • 对于图表/信息图:包含关键数据点

好:Marketing team analyzing AI search traffic data on a dashboard showing citation metrics 差:SEO AI marketing blog optimization image

设置

对于 /blog image setup:

  1. 运行 python3 scripts/setup_image_mcp.py(交互式)
    • 或运行 python3 scripts/setup_image_mcp.py --key YOUR_KEY(非交互式)
    • 默认写入 ~/.claude/settings.json(用户私有,模式为 0600)
    • --project 标志选择写入项目 .mcp.json(仅支持环境变量扩展, 拒绝将明文密钥写入受版本控制的文件)
  2. 验证:python3 scripts/validate_image_setup.py
  3. 需要:
  4. 脚本将软件包固定为 @ycse/[email protected]。升级时,请更新 setup_image_mcp.py 中的固定版本(常量 PINNED_PACKAGE)。

安全过滤器自动改写

当返回 IMAGE_SAFETY 或 SAFETY 时,切勿放弃。自动改写并重试:

  1. 找出可能触发过滤器的内容(暴力、公众人物、近似 NSFW 的内容,或过于谨慎的过滤器)
  2. 使用正向表述改写——描述你想要的内容,而非要避免的内容
  3. 如果主体是人物,将其设定为普通人(去掉类似名人的特征)
  4. 如果场景较为戏剧化,则弱化措辞:“intense” → “focused”,“battle” → “competition”
  5. 使用改写后的提示词重试(最多尝试 3 次,然后向用户报告)

Google 承认过滤器“变得比我们预期的谨慎得多”——无害的提示词 有时也会被拦截。坚持改写通常就能成功。

编辑,不要重新生成

如果图片有 80% 符合要求,请使用 gemini_chat 进行对话式编辑,而不是 从头重新生成。会话会保持风格一致,因此针对性的编辑可以保留有效部分,同时修正不足之处。

何时编辑,何时重新生成:

  • 颜色略有偏差 → 编辑(“让色温更暖一些”)
  • 构图完全错误 → 用修订后的需求重新生成
  • 场景不错但光线不对 → 编辑(“改成从左侧照射的黄金时刻光线”)
  • 缺少细节 → 编辑(“在桌上加一杯冒着热气的咖啡”)

错误处理

错误解决方案
未配置 MCP运行 /blog image setup
API 密钥无效在 https://aistudio.google.com/apikey 获取新密钥
请求过于频繁(429)等待 60 秒后重试。免费套餐:约 5–15 RPM/约 20–500 RPD(因模型和计费方式而异)
IMAGE_SAFETY自动改写(见上文)——第 2 层过滤器,不可配置
PROHIBITED_CONTENT违反内容政策——该主题已被屏蔽。不可重试。
SAFETY改写提示词——第 1 层过滤器
请求含糊生成前先提出一个澄清问题
质量不佳检查推理概要——很可能缺少光线描述(这是影响质量的最大因素)
MCP 不可用(内部调用)静默返回——调用工作流会使用图库照片

参考文档

按需加载——启动时不要全部加载:

  • references/prompt-engineering-blog.md - 领域模式、6 组件系统、博客模板
  • references/gemini-models.md - 模型规格、速率限制、宽高比、定价
  • references/mcp-tools.md - MCP 工具参数和响应格式

评论

支持 Markdown