Community图像github.com

builtnotboosted/image-generation

使用任何图像模型(例如 Google Gemini 图像模型 “Nano Banana”)生成成品社交媒体图片——包含静态图、轮播幻灯片、短视频封面、YouTube 缩略图、文章缩略图、本地列表卡片以及动态静态图。将标题融入场景而非后期粘贴,确保文字位于个人主页网格安全区内,将真人肖像锁定为其参考照片,生成精确的平台尺寸,并编写替代文本。当用户需要“为这篇文章配图”、“创建缩略图”、“给我的视频做个封面”、“设计一个轮播”、“让这个静态图动起来”、“图像模型不支持 4:5”、“标题在网格中被裁剪”或内容包需要视觉素材时使用。

image-generation 是什么?

该技能是一个全面的 AI 图像生成工具,专为社交媒体和内容创作者设计。其核心方法论是将标题直接“烘烤”到场景中,由图像模型原生渲染,而不是用代码后期粘贴文字,从而避免廉价模板感。它拥有完整的生产流水线:从根据品牌档案(品牌档案.md)选择场景、处理真人肖像(通过参考照片锁定面容),到精确控制宽高比、处理动画静态图(用单独的文本层制作循环 MP4),以及最终检查尺寸和生成替代文本。该技能支持多种输出格式(静态图、轮播、短片封面、长视频封面、动画静态图),并严格遵循 lockstep 工作流:每次生成和重试都必须对最终文件进行完整审查(拼写、标题层级、网格安全区、肖像相似度、尺寸和品牌合规性)。当没有图像模型可用,或需要纯文字排版(如引用卡片或数据卡片)时,它会优雅地降级到 HTML/Playwright 渲染路径。该技能可应用于 Claude Code、Cursor 等 AI 编码代理,通过脚本化检查和参考文件确保高度的可靠性和品牌一致性。

兼容平台~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/builtnotboosted/built-not-boosted-skills/tree/HEAD/plugins/built-not-boosted/skills/image-generation

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

图像生成

此技能将一条消息的内容转换成符合每个平台精确尺寸的成品图像文件。它掌控整个生产方式:场景如何选择、标题如何融入画面、真人面孔如何保持真实、宽高比如何控制、文件如何检查以及替代文本如何编写。它将品牌常量(调色板、字体、标志规则、肖像规则)的决策权交给 brand/brand-profile.md,将标题文字交给 writing 技能,将内置于视频编辑中的封面交给 video-editing 技能,并将最终交付前的独立检查交给 review-loop 技能。

权限顺序:brand-profile.md 在品牌常量和合规性文字上拥有最终决定权;此技能掌控生产方式。

开始之前

  1. 找到营销工作目录(默认为 marketing/)。如果没有,用一句话说明,并提供运行 brand-setup 技能的选项;如果用户想要继续,只需询问调色板(两到三个十六进制颜色代码)、一个标题字体以及是否涉及真人。
  2. 从 brand/brand-profile.md 中读取:## 视觉标识(调色板、字体、标志使用、图像风格)、## 肖像(参考图像路径和规则)、## 平台(图片将分发到哪里)、## 合规性(图像中必须或不得出现的任何内容)、## 边界 和 ## 工具(可用的图像模型)。
  3. 在锁定任何标题措辞之前,先阅读 brand/voice-learnings.md:标题是文案,文案应该听起来像那个人。
  4. 阅读 brand/performance-learnings.md,了解该账户关于哪些图像能获得更高曝光的学习成果。
  5. 在作品的文件夹 content/<yyyy-mm-dd>-<slug>/ 中工作。图像存放在其中的 images/ 子文件夹中。
  6. 在制作前明确格式:纯静态图、轮播、短视频封面、长视频封面或动态静态图。如果没有人指定,选择最简单且合适的一个,并用一句话说明原因。

标准

  1. 标题由图像模型渲染到场景中,绝不用代码后期粘贴。 要求模型将标题和副标题作为画面的一部分进行渲染,像设计师那样进行光照和布局。原因:之后用 PIL、Canva 样式的覆盖层或 HTML 添加的文字会与照片处于不同的图层,看起来像廉价的模板,这是人们拒绝 AI 图像最常见的原因。图像模型现在擅长处理简短的显示文字;让它来完成这项工作。
  2. 标题是主角。 大号、粗体、紧凑的字体,大约占可视高度的 40%,且不得少于三分之一,两到三行短句,一个重音词使用强调色。如果读起来像说明文字,那就是失败。原因:网格和时间流是在手机上以缩略图大小来评判的,只有大标题才能脱颖而出。
  3. 所有文字位于网格安全区域内。 画布的居中 1:1 正方形,每边再向内缩进 7% 到 8%,标题上方留出空间,底部 12% 区域不放置重要内容。原因:个人主页网格、链接预览和信息流内的裁剪会切掉边缘。打开 references/grid-safe-zone.md 查看每种格式的具体数值。
  4. 每张图像都是一个针对该消息构建的、独特的、逼真的场景。 一个人在真实的地方做一些事,或一个强烈的视觉隐喻,采用自然色彩并少量使用品牌强调色。永远不要只是改变文字,就使用同一背景的同一肖像。唯一的例外是有意为之的周更系列,它可以有意重复其布局。
  5. 真人保持真实。 当真人出现时,他们的面孔必须来自其参考照片,并使用他们真实的年龄和体型。绝不能捏造一张脸,也绝不能直接发布参考照片本身。
  6. 精确尺寸,已核实。 每个文件都必须达到 references/asset-sizes.md 中规定的精确像素尺寸,并且其尺寸必须经过检查,而非假定。
  7. 绝不在代码中粗暴改变形状。 不要通过填充、加黑边、镜像、拉伸或合成的方式强制改变生成的图像的宽高比。代之以使用宽高比锚点(见下文)重新生成。原因:填充的图像会留有看起来不完整的死空间,一眼就能看出。
  8. 每张图像一行替代文本。 对场景和烘焙标题的简单描述,不包含标签、链接或推销用语。

操作方法

1. 决定画面(每次都全新创作)

  1. 用一句话概括该帖子唯一的核心理念。
  2. 决定情感基调:令人安心、聪明、冷静、有趣、愉悦或温和的警示。默认为温暖。绝不渲染末日情绪。
  3. 构思一个承载该理念的视觉创意:一个人在真实的时刻(在繁忙的街道上打电话、在厨房桌上喝咖啡、开箱),或一个易于理解的隐喻(店铺前的安全网、链条上断裂的一环、画了圈的日历日期)。
  4. 撰写标题(理想情况下是 2 到 5 个词,最多不超过三行短句)和一个可选的一行副标题。首先给出平实、直白的标题,说明这是什么;然后提供一个更巧妙的钩子作为标注的备选方案。原因:平实的标题通常在清晰度和搜索方面更优,并且人们在有选择时会倾向于它们。
  5. 从一开始就规划好标题的留白区域,通常是在网格安全区域内的较暗的天空、墙壁或阴影区域。

2. 生成包含标题的场景

编写一个提示词,同时描述场景、光线、构图和文字。精确拼写标题,用引号括起来,指出哪个词是强调色,要求在预留区域使用“巨大、粗体、紧凑、海报级别”的字体,并保持副标题足够短以免换行。保持底部非常清晰。

干扰防护,因为图像模型在可预见的方面会失败:

  • 换行的副标题通常会在换行处出现单词重复(“第一个第一个”)。保持在一行内。
  • 小的固定文字(名称、用户名、网址)经常拼写错误。如果品牌使用了小的名称标签,之后通过脚本添加该元素(scripts/cover_from_frame.py --wordmark 展示了方法),而不是要求模型生成它。
  • 长标题会缩小和混乱。更少的词,更大的字号。

打开 references/prompting-and-aspect.md 查看提示词结构、宽高比技巧和 Gemini 示例。简而言之:如果你的工具暴露了宽高比设置,请使用它;如果它只返回正方形,则编辑到目标比例的空白画布上(scripts/aspect_scaffold.py),并且绝不要同时传递一个正方形的参考图像。

3. 肖像锁定(任何包含真人的图像)

在会话中创作第一个以面孔为主导的图像之前,阅读 references/likeness-lock.md。简而言之:

  • 从 brand/reference-images/ 中的参考照片构建:将一张干净的正脸头像编辑到场景中,而不是用文字描述这个人,并提供两到三张紧密的面部裁剪图(不是整个场景的自拍照,其背景会干扰)作为身份参考。先将旋转的侧拍手机照片摆正。
  • 对照一张提供的彩色照片逐项检查结果(头发颜色、发型、面部毛发、脸型与体型、眼镜、年龄)。绝不要用另一张 AI 图像来判断相似度。
  • 预留大约三到四次诚实的重试。如果仍然不像,将该作品重建为一个无面场景(隐喻加标题)。如果那也行不通,则暂停并说明。错误的面孔比没有图像更糟糕。
  • 绝不能直接发布或裁剪参考照片到图像中。它们仅作为身份参考。

4. 基于真实帧的视频封面

当该人拍摄了面对镜头说话的演讲视频时,封面是从该视频的真实帧中构建的,而不是用生成的肖像。面孔是真实的,封面与视频匹配。这是唯一一个在照片上设计标题覆盖层是正确选择的地方,因为它是在给一张真实的照片加标题,正如缩略图设计师所做的那样。

  1. 提取候选帧(ffmpeg -ss <t>)或让脚本在时间范围内找到最清晰的面部帧,并选择一张有眼神交流、表情温暖(不是在说话中间)、焦点清晰且没有内置字幕的帧。
  2. 运行 scripts/cover_from_frame.py(查看其 --help):它会将封面裁剪到目标尺寸,添加柔和的遮罩,在网格安全区域内自动适配主标题(包含一个强调词和下划线),可选的副标题条和可选的名称标签,然后检查每个文本框是否在安全区内。
  3. 匹配视频的形状:9:16 的短视频获得一个 1080x1920 的 9:16 封面,文字在中央正方形内;16:9 的长视频获得一个 1280x720 的封面。如果正在使用 video-editing 技能进行编辑,它自己的封面步骤会在编辑内部完成此操作。

5. 动态静态图(“禁止覆盖层”的唯一例外)

动态静态图是一个 4 到 6 秒的循环 MP4,它填满一个静态位置,并被大多数信息流视为视频。文本必须作为一个单独的图层来移动,因此在这里,并且仅在这里,设计好的动态文字位于生成的场景之上。它遵循同样的标准:真实的场景、主标题、品牌颜色、网格安全放置,以及完整标题在帧 0 即可见,因为信息流从其第一帧就展示视频的海报。打开 references/animated-statics.md 了解何时使用、scripts/animate_render.js 的配置、音频素材权限规则以及审查要点。

6. 没有可用图像模型:HTML 路径

如果没有连接图像模型,或者作品是纯文字排版(逐字引用卡片、数据卡片、文本幻灯片轮播、个人主页横幅),则使用 HTML 和 CSS 进行设计,并使用 Playwright 渲染。需要遵循的规则:视口是真实的输出尺寸,没有 CSS 缩放变换,截图前加载字体,然后检查 PNG 的尺寸。打开 references/html-fallback.md 并使用 scripts/render_html.js。当需要逐字复制推荐语时,引用卡片也是一个正确的选择,因为生成的文本可能会发生偏差。

7. 完成、保存和描述

  1. 按照每个目标平台的精确尺寸完成(references/asset-sizes.md)。4:5 的主版本通常服务于 Instagram、Facebook、LinkedIn 和 Threads;只有所有文本都位于中央正方形内时,才通过中心裁剪得出 1:1 版本,否则生成一个单独的方形版本。
  2. 运行 python3 scripts/check_image.py <file> --expect WxH --grid 来确认尺寸并生成一个网格预览表(以缩略图大小显示中心正方形和 3:4 裁剪,并绘制出安全框)。
  3. 保存到 content/<yyyy-mm-dd>-<slug>/images/,文件名表明其用途(<slug>-feed-4x5.png,<slug>-cover-9x16.png)。
  4. 将每张图像的一行替代文本写入作品的 PACKAGE.md,例如: “一位面粉扑鼻的围裙女士,将面包店门上的招牌翻到“营业中”,标题“上学高峰前营业”横跨顶部。” 轮播的每张幻灯片都有自己的行。视频封面不需要替代文本。
  5. 将最终的提示词(以及任何重试记录)保存在作品文件夹中,以便未来的重试可以从有效的地方开始。

发布前的检查(审查循环)

每次生成和每次重试都是一张新图像,因此它需要对已保存的文件进行全面检查,打开并查看,而不是仅根据提示词判断:

  • 标题、副标题以及任何压印标签中每个单词的拼写;没有重复的单词。
  • 标题主导地位:突出、最先被阅读、在个人主页网格缩略图尺寸下清晰可见。
  • 网格安全:所有文本位于中心正方形内并留有余量;没有内容触及边缘;没有内容在底部条带中。对于任何视频,判断第一帧。
  • 肖像相似度(以面孔为主导的作品):对照提供的彩色照片的评估标准。不确定即视为失败。
  • 形状:真实尺寸与目标匹配;没有填充或拉伸。
  • 品牌:来自配置文件的调色板和字体,少量使用强调色,自然色彩。
  • 独特性:不是该账户最近几张图像的近似复制。
  • 真实性与合规性:图像中的任何数字或声明都要追溯到来源;出现 ## 合规性 中要求的标签;没有出现 ## 边界 中的任何内容。

如果失败,修复原因并重新生成,然后以相同方式判断新文件。然后将这组图像交给 review-loop 技能进行独立检查。如果一个作品无法干净地完成,保留提示词,说明失败原因并暂停。绝不要发布替身面孔或粘贴文字的降级方案。

调整适配

  • 没有真人出镜? 跳过肖像锁定,专注于场景和隐喻;标准的其余部分不变。
  • 产品业务? 将产品视为“面孔”:使用真实的产品照片作为参考,以便模型保持其形状、标签和颜色的真实。
  • 不同的图像模型? 方法保持不变。只有 references/prompting-and-aspect.md 中的机制会改变(宽高比如何设置,是否接受参考图像)。
  • 系列格式(每周汇总、每周小技巧):为该系列固定一个布局,然后在系列之间改变其他所有内容。
  • 受监管行业: 检查 ## 合规性 中必须出现在图像上或绝对不能出现的内容(数字、保证、推荐)。当有疑问时,将声明保留在图像之外,放在有免责声明的说明文字中。
  • 你自己的经验教训: 当用户拒绝或替换图像时,将内容和原因记录在 brand/performance-learnings.md(视觉教训)或 brand/voice-learnings.md(标题措辞)中,以便下一张图像更接近目标。

此技能涉及的文件

文件何时打开它
references/asset-sizes.md完成任何文件时;检查平台的当前尺寸
references/grid-safe-zone.md在任何格式上放置文本时
references/prompting-and-aspect.md编写提示词、处理宽高比问题、使用 Gemini 时
references/likeness-lock.md任何包含真人的图像
references/animated-statics.md制作填满静态位置的循环 MP4 时
references/html-fallback.md没有可用的图像模型,或处理纯文字排版时
scripts/aspect_scaffold.py为基于编辑的工具创建目标比例的空白画布
scripts/cover_from_frame.py从真实视频帧构建封面
scripts/animate_render.js渲染动态静态图
scripts/render_html.js渲染 HTML 输出

…

[为翻译而截断]

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

builtnotboosted/review-loop

The quality gate every piece of content passes before it is filed, scheduled or posted. Runs a self-critique, then an independent review by a fresh subagent that sees only the finished work and the criteria (never the builder's reasoning), then fix and re-judge until there is a clean pass. Covers what to do when a piece can't pass unattended (hold, flag, ship the rest). Use when someone says "review this", "check this before it goes out", "QA the pack", "is this ready to post", "get a second pair of eyes on this", "proofread the captions", or when any other Built Not Boosted skill hands work over for checks.

builtnotboosted/scheduling

Gets finished posts into a social media scheduler (or posted by hand) safely. Queue-only with explicit timezone offsets, live dedup against scheduled and already-published posts, media readiness checks, correct post types (shorts, reels, carousels, first comments, manual-posting reminders), alt text, a link gate that sends copy back for a rewrite rather than stripping it, and confirmation before anything goes live. Writes and keeps a scheduling manifest for each pack. Works with any scheduler; Publer is the worked example. Use when someone says "schedule this", "queue these posts", "put this in Publer", "book in this week's content", "post this on Tuesday at 7", "move that post", "what's already scheduled", or hands over a finished content pack to go out.

builtnotboosted/video-editing

Edits filmed talking-head footage into release-ready vertical shorts (1080x1920) and 16:9 YouTube long-forms with ffmpeg and Whisper. Keeps exactly one clean read of every script line (no stumbles, restarts or double reads), never leaves a flat single shot (punch-ins, reframes, B-roll, motion graphics), captions from the finished audio, normalises loudness to -14 LUFS, makes a real-frame cover and runs a QA gate that re-transcribes the render and refuses delivery until it passes. Syncs extra cameras by sound and writes YouTube chapters. Use when someone says "edit my video", "cut this clip", "remove my retakes", "edit out the fluffs", "add captions to my video", "make a short from this footage", "sync my two cameras", "make a thumbnail from my video", or hands over raw footage and a script.

builtnotboosted/video-scripting

Writes video scripts that sound like the person who will say them, for shorts (Reels, TikTok, YouTube Shorts) and long-form YouTube. Warm hook rather than a shout, who-am-I and follow early, a retention shape that delays the answer, a soft earned close, length that follows the story, real-problem substance, reactive scripts for news and data releases. Output is teleprompter-ready (think-breaks, shot reminders) with short edit notes for the video-editing skill. Use when someone says "write me a script", "script a reel about", "I need a short on", "plan a YouTube video", "turn this post into a video", "react to today's news on video", "what should I say on camera", or before a filming session.

相关技能