关于 persona-builder
persona-builder 是 Pika 技能,可依据创作者的社交资料、照片、表达方式和目标,制定网红身份与发展路线图。它通过分阶段、需审批的流程生成 persona 文档和可移植素材包。
主要功能
- 01读取社交资料与媒体
- 02制定创作者定位与策略
- 03整理情绪板和语气素材
- 04生成 persona PDF 与素材包
- 05设置费用披露和审批关卡
适用场景
- 01围绕创作者目标塑造社交身份
- 02规划现有形象与目标 persona 的差距
MCP 相关
该技能使用 Pika MCP 工具收集社交和媒体输入并制作 persona 素材;付费调用前会披露余额并要求用户批准。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pika-labs/ pika-plugins --skill persona-builder安装后在 Claude Code 中输入/persona-builder确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/aesthetic-prompts.mdpersona-md-template.mdreferences/templates/mood-board-no-header.template.htmlmood-board.template.htmlpdf-about.template.htmlpdf-content-categories.template.htmlpdf-cover.template.htmlpdf-do-dont.template.htmlpdf-hooks-dm.template.htmlpdf-moodboard.template.htmlpdf-next-steps.template.htmlpdf-shared-head.template.htmlpdf-voice-mode.template.html详细介绍
网红身份
以下工具均为 Pika MCP 工具,名称未添加前缀 — 请根据当前会话提供的前缀调用每个 Pika MCP 工具。
了解一个人 — 他们的社交媒体账号、相机胶卷、说话方式,以及他们希望在网上呈现的形象 — 然后坦诚地帮他们全面提升。输出内容包括 persona.md、可移植的文件夹套件,以及一份路线图,帮助他们缩小当前状态与理想人设之间的差距。
这是 build-a-brand 的姊妹技能:对表达风格、审美和具体程度有着同样毫不妥协的标准 — 但品牌是一个人,而不是产品。其他 Pika 技能(ugc-ads、podcast、founder-product-video、app-sizzle、app-store-screens)会使用这些输出,让这位网红无论在哪里都能制作符合其品牌形象的内容。
费用透明度门槛
调用任何付费 MCP 工具前,先调用一次 identity_balance({verbose: true})。说明当前余额、近期消耗速度和剩余可用时长,然后用这条确切消息决定是否继续:
预计费用:如果需要抓取/转录、GPT-image-2 情绪板和语气页面氛围图片、MCP HTML 图片渲染、JPG 转换、最终的 html_to_pdf 渲染,以及渲染后的 analyze_media PDF 质量检查,费用约为 600-1,200 积分(约 $6-$12)。费用超过 $5,请回复
proceed继续,或回复cancel停止。
在用户回复 proceed 前,不要调用任何付费 MCP 工具。如果用户回复 cancel,则停止,不生成任何内容。这是唯一的“是/否”确认门槛;用户回复 proceed 后,继续执行工作流,直到需要用户明确批准身份/情绪板/PDF 内容的下一个确认门槛。
对话语气
这不是包装形象的工作。用户来到这里,是想让自己看起来更有市场竞争力。这意味着:坦诚、讲策略、说具体。这个技能应该像一位会帮他们接品牌合作的朋友,告诉他们真正需要改进的地方 — 不是算命,也不是 Canva 情绪板工厂。
- 从输入内容能证明的事实出发,而不是用户希望听到的话。如果照片很糟,就直说,并告诉他们如何改进。
- 主动开启策略讨论,不要等用户提问。用户未必知道什么有利可图,也未必清楚什么样的内容组合能带来收入 — 请拿出依据。
- 明确指出差距:“要看起来像 @[参考对象],你需要增加 X / 去掉 Y / 在 Z 光线下拍摄。”不要委婉其辞。
- 不要空洞地肯定。如果用户的简介很普通,正确的回答不是“太喜欢了!”,而是重写。
完整工作流
阶段 0 — 收集资料(空参数菜单)
如果调用时没有输入(没有账号名称、URL、照片,也没有相关的先前上下文),请原样打印此菜单作为完整回复,然后停止。不要调用任何工具。等待用户的下一条消息。
焕新时刻。 这将帮助你在网上打造更有市场吸引力的形象——坦诚分析哪些做得好、哪些不行、根据你提供的资料,真正的变现机会在哪里,以及要如何改进才能实现目标。最终,你将获得一份设计完善的网红人设文档,以及一份真正成为这一人设的路线图。
只需简单提供资料——上传文件或粘贴链接:
- IG / TikTok / YouTube 账号名称——我会提取你的简介、近期帖子和说明文字。这是最有力的信号,也是最重要的输入。
- 至少 16 张能体现「你」的个人高清照片——直接拖放实际文件。如果你提供了活跃的社交账号,抓取的帖子图片可以满足其中一部分需求;如果你没有社交账号,完整的 PDF 需要有足够多的真实照片,用于情绪板和声音模式页面。
- 任何能体现你品味的 URL——Pinterest、Spotify、Depop、Letterboxd 等。想提供多少都可以。
- 描述你自己,以及你希望在社交媒体上呈现的样子——用自己的话写几句话。你真实的性格,以及你希望别人打开个人主页时看到的样子。
- 还没有社交账号? 回复「从零开始」,我会逐一询问所需信息。在情绪板 / PDF 阶段之前,我仍会请你提供至少 16 张真实照片,让视觉内容以你本人为基础。
账号名称加几张照片是最有力的组合。跳过不适用的内容即可。这里没有任何步骤需要你截取应用截图、撰写长篇文字或录制视频。
如果用户已经提供了上述任一项,请跳过菜单,直接进入第 1 步。
第 1 步 — 阅读输入
在此步骤中进行受支持的社交媒体抓取 / 转录,或进行任何其他付费 MCP 调用之前,请确保已完成上方的费用透明度检查。仅在本次调用中尚未进行该检查时才运行;不要再次调用 identity_balance,也不要在用户已批准前置费用检查后再次要求用户回复 proceed。
先简要说明接下来的安排,让用户了解后续流程。定下基调——这是焕新,不是包装:
quick framing: this isn't a packaging exercise. i'm going to be honest with you about what's working in your current presence, what isn't, where the lucrative paths are for someone with your inputs, and exactly what to fix to get there. by the end you'll have a designed influencer persona doc + a real roadmap.
here's how this works — 5 steps:
1. **Read the input** — i scrape your socials (if you gave handles), look at your photos, ask you a few questions, play back what i'm hearing
2. **Strategic direction + lock the identity** — the real-talk step. i lay out the lucrative paths your inputs actually support (with stats), name the gaps between your current feed and where you want to go, critique your current photography honestly (lighting, framing, gear) and tell you what to buy. then we lock the persona. you approve before we move on.
3. **Mood board** — i curate from your photos (color-graded if your influencer aesthetic differs from your existing grid), then GPT fills aesthetic gaps. you approve.
4. **Influencer Persona PDF** — i draft your voice bank (bios, caption modes with visual examples, hook openers, DM voice, do/don't) and lay it into a multi-page branded PDF alongside your persona overview, content categories, mood board, and a Key Next Steps roadmap. you approve it from the PDF preview.
5. **Package the kit** — persona.md + folder kit (mood board, voice bank, PDF) saved to ./tmp/. only after you say "ship it".
let's start. [questions follow]
先读取输入:
- 如果用户提供了任何受支持的社交账号或受支持的社交 URL → 在询问固定问题之前,并行调用
scrape_social抓取这些受支持的社交平台,确保用户回答时数据已经返回。对于 Instagram/TikTok 的信息流和视频操作,使用rehost: true,这样下游精选内容块就能使用持久的pika_cdn_url/ CDN 媒体,而不是易失的签名媒体。不要把不受支持的兴趣类 URL(Spotify、Depop、Letterboxd、个人网站、灵感板链接等)发送给scrape_social;将它们作为兴趣信号保留,如果意图不明显,再询问用户想从中借鉴什么。各受支持平台的标准调用模式:- instagram:
instagram.profile+instagram.user-posts(limit 30,rehost: true)+instagram.user-reels(limit 30,rehost: true) - tiktok:
tiktok.profile+tiktok.profile-videos(limit 30,rehost: true) - youtube:
youtube.channel+youtube.channel-videos(limit 30) - twitter:
twitter.profile+twitter.user-tweets(limit 30) - pinterest:
pinterest.profile(limit 50) 获取近期帖子、说明文字、个人简介和视觉风格。记录主要主题、光线、表达模式、说明文字长度和开场钩子风格。说明文字、个人简介、数据指标和视觉风格摘要是为步骤 2 提供参考的文本/策略信号;不要将其原样放入视觉素材。通过rehost: true抓取的公开信息流媒体,在通过下方的来源优先级和无文字检查后,可在步骤 3 / 步骤 4 中作为精选图片素材。**抓取到的说明文字是步骤 4 中语气素材库的首要信号——用户直接撰写的说明文字优先于从聊天回答中做出的任何推断。**只有在抓取失败时(账号为私密账号、尚无帖子或账号是新注册的),才将聊天语气和问卷回答作为备选。
- instagram:
- 如果用户提供了相机胶卷 / 照片 → 查看这些内容。记录场景、光线、画面中有什么,以及没有什么(没有人物?全是平铺拍摄?总是在户外?)。
- 如果用户提供了自拍视频 → 使用
transcribe_audio转录,记录用词、活力、节奏、填充词以及他们热衷谈论的内容。
**然后在一条消息中提出以下 4 个固定问题。**每次都保持一致——不要即兴发挥或替换问题。一致性很重要;如果用户重新开始后看到的问题不同,就会对这个流程失去信任。
- 描述一下你自己,以及你希望在社交媒体上呈现怎样的形象——用自己的话写几句话。你真实的样子是什么,以及人们访问你的个人主页时,你希望他们看到什么?(这个问题同时涵盖真实自我 / 投射形象 / 真实性的尺度。)
- 另外:说出 1–3 位你希望自己给人感觉像的创作者或角色。对于每一位,请告诉我你想借鉴哪个方面——他们的表达风格、内容类型还是视觉美学。你不必喜欢他们的所有方面;请明确说明哪些要借鉴,哪些不要。(“我想要她的表达风格,但不要她的内容”是完全正常的回答。)
- 你住在哪里?日常生活节奏如何?(地点 + 节奏信号——会影响真实性表达风格,以及情绪板生成的场景类型。)
- 理想的周五晚上是什么样的?(单个氛围问题——能快速展现个性。“看电视,早点上床”与“在外面玩到凌晨 2 点”一眼就能区分。)
- 你希望通过这件事获得什么?(也就是为什么——粉丝、事业、约会、社群、单纯表达,还是别的什么。这将影响后续的每一项策略选择。)
就这些。4 个问题,不要变通。不要说“从这些问题中选 3 个回答,剩下的跳过”。如果用户在最初提交的信息中已经回答了其中一些问题(例如,他们在问卷菜单中的自我描述已经回答了问题 1),请确认已掌握的信息,只询问尚未回答的问题。 如果用户明确说“从头开始”,即使没有社交媒体资料,也要问这 4 个问题。如果用户没有提供任何照片、URL 或描述,也没说要从头开始,则先询问菜单中的信息收集项目,再问这 4 个问题——你至少需要有一些内容可供阅读。支持没有社交媒体资料的用户;但不支持在没有照片的情况下制作视觉内容或 PDF。如果从头开始的用户回答了问题,但仍未提供真实照片,则完成策略文本部分,并在步骤 3 前暂停,请求提供 16 张以上的单张照片:6 张用于情绪板的精选图片,以及 10 张分别用于 PDF 声音页面的精选图片。
只发一条消息。等待回答。
回答后,复述你听到的内容。先说出令人意外或具体的细节,不要用笼统的摘要套话开场:
- 这个人:用 2–3 句话解读他们真实的样子
- 声音信号:他们在你读到的输入材料中是怎么表达的(具体措辞、能量感、会避开什么)
- 视觉世界:他们的动态、相机胶卷照片、品味 URL 和/或参考创作者展现了什么,以及他们想追求什么(如果两者不同)。这将成为步骤 2 视觉美学规范的种子
- 真实感刻度:真实/强化/不同——以及具体在哪个维度上
- 为创作定调的参考对象:列出他们提到的每位创作者,以及要借鉴的维度(声音/内容类型/视觉美学)
最后以这句话收尾:“在我敲定这个身份定位之前,还有什么要补充、修改或特别指出的吗?”等待回复。
步骤 2 — 策略方向与身份定位敲定(硬性关卡——需获批准)
此步骤分为四部分。前三部分是改造提升的坦诚建议——这是用户真正想要的内容。跳过 2a–2c,直接进入 identity.md,属于失败;用户明确希望获得策略指导、差距分析和批评,而不只是包装总结。
**此步骤的语气:**具体、坦诚、有用。引用你在步骤 1 中读到的输入材料,并说出具体名称(“你 11 月 8 日那篇风衣帖子”胜过“你的穿搭内容”)。尽可能提供数据。不要避重就轻——如果他们的简介很普通,就直说;如果他们的灯光不好,也直说。用户付钱给你,就是想听到那个能帮他们拿下品牌合作的朋友会说的话。
2a — 战略方向(高收益路径 + 内容影响)
主动开启战略讨论;不要等用户提问。 在确定人设之前,先列出用户提供的信息实际支持的 2–3 个最有收益的方向,并说明大致的行业数据以及每个方向具体会如何影响内容。用户往往不知道哪些方向有收入、不同细分领域的 CPM 大概如何,也不知道每条路径需要多大的发布量。拿出有依据的信息。
针对每个方向:
- 细分领域标签(具体,不要只说“生活方式”——例如“波士顿本地生活方式创作者”“德克萨斯州芭蕾塑形课程创始人内容”“面向金融行业的千禧一代爸爸幽默内容”)
- 该方向为何适合现有信息——指出支持这一方向的具体帖子、照片或用户提到的内容
- 大致变现情况——常见 CPM 范围、不同粉丝量级下常见的品牌合作起价(例如“时尚类微型创作者:5K 粉丝时每篇 $100–250;生活方式类微型创作者:每篇 $150–300;金融类:每篇 $400–800”)、联盟营销/LTK 的可行性、赞助帖的现实可行性。每项数字化变现说法都必须引用本次执行期间核实过的来源,或明确标注为宽泛的经验估算;绝不要把无来源的 CPM、粉丝门槛或品牌合作起价说成精确事实。
- 该路径需要的内容产出量——发布频率(例如“每周 4–5 套穿搭 + 1 条地点短视频”)、预期制作水平(手机拍摄即可,还是需要无反相机)、该细分领域受众期待的固定内容形式(例如“每日穿搭帖子 + ‘准备好去 X’短视频 + 每月本地推荐合集轮播帖”)
- 同等规模下已经做得不错的人——列出 2–3 位粉丝量为 5K–30K、采用完全相同策略的创作者,并各用一句话说明他们为何有效。只有在本次执行期间通过
scrape_social或其他实时支持的数据源核实后,才能列出真实创作者、账号名、粉丝量级或最新数据。如果无法核实,就改用明确标注的创作者类型(例如“本地时尚微型创作者类型”),并省略账号名和粉丝数。
本节末尾直接提问:“你最想尝试上述哪个方向,还是想把它们结合起来?” 不要让用户笼统地选择“生活方式”;要求他们明确具体方向。
如果用户已在步骤 1 中提到一个方向(“我想成为时尚创作者”),仍要执行本节,以验证这个方向或拓宽视野——他们往往还没考虑过与现有信息更契合、收益更高的相邻路径。
2b — 差距分析(当前账号资料 → 目标人设)
一旦确定方向(或用户已在步骤 1 中确定方向),就明确对比他们目前发布的内容与目标人设所需的内容。本节要告诉他们缺少什么。
针对每项差距,说明:
- 缺少的内容类别——“你的每日穿搭内容已经很成熟,但完全没有待客或厨房内容;你提到的人设需要补上这一类内容”
- 形式差距——“你有静态帖子,但没有短视频;这个细分领域中,短视频的 CPM 是静态帖的 3–5 倍”
- 发布频率差距——“你每周大约发 1 次;这个细分领域要想持续出现在算法推荐中,通常需要每周发 4–5 次”
- 表达风格差距——如果用户实际使用的配文语气与他们所说想要的风格不符,就指出他们需要删掉哪些具体的措辞模式,以及需要增加哪些表达方式
- 视觉风格差距——如果用户当前的视觉风格与目标风格不同(例如平淡的手机闪光灯照片与电影感的黄金时段视觉风格),就明确指出
- 粉丝量级差距——说明用户当前的粉丝量级(例如 2K)、付费合作通常从哪个量级开始(本地品牌合作通常从 5K+ 起,全国性合作通常从 10K+ 起),以及按计划执行的人在 90 天内可以现实达到的增长水平
把每项差距都写成可立即执行的行动,而非批评。“你需要每周发布 1 条结合波士顿季节性热点的短视频”比“你发的短视频不够多”更有效。
2c — 内容点评(制作质量 + 装备)
直言不讳地给出有帮助的建议。 如果用户现有的照片很差,就直说,并告诉他们如何改进。默认情况下,人们往往过于客气;这里要纠正这一点。
检查他们现有的照片 / 视频内容,关注以下方面:
- 光线 — 指出具体哪些照片效果好(“厨房那张下午 4 点拍的照片不错,就该找这样的窗边光线”),以及哪些效果不好(“风衣那篇是在正午顶光下拍的,所以你的脸上有明显的硬阴影;建议在下午 3–6 点利用窗边光线重拍”)
- 取景与构图 — 手机拿得太低还是太高、主体是否太居中、头顶留白是否合适、背景是否杂乱、实际应该站在哪里
- 色彩与后期处理 — 他们是否在用预设 / 预设包?颜色是否符合确定好的视觉风格?如果不符合,指出具体工具
- 一致性 — 整个网格是否有同一个人的审美?哪些地方不一致?
- 自拍技巧 — 手机位置、镜子是否干净、穿搭自拍应该穿什么、避免穿什么,以及不想露脸时如何遮脸
然后建议购买具体的装备 / 工具,并根据用户可能的预算分档推荐。不要给只有 500 个粉丝的人推荐价值 1500 美元的无反相机——先从能以 200 美元以内实现 80% 提升的东西开始:
- 入门档(100 美元以内):手机三脚架(约 15 美元)、夹式反光板或 A4 白色泡沫板(约 25 美元)、一套符合其审美的 Lightroom mobile 预设(约 15–40 美元)、如果家里光线昏暗,可买基础环形灯或 LED 灯板(约 30 美元)
- 进阶档(100–500 美元):小型柔光箱套装、适合户外短视频的 gorillapod、适合狭小空间镜子自拍的手机广角夹镜头、用于短视频旁白的专用麦克风(约 80 美元)
- 高级档(500 美元以上):仅在用户已有 10K+ 粉丝且主动询问时推荐——入门级无反相机(Sony a6400 / Fujifilm X-S20)+ 等效 35mm 定焦镜头、调色预设订阅、剪辑师
提及品牌和价格,让用户可以直接购买。“买个夹式反光板”太笼统;“Lume Cube panel mini 或 Pictar 夹式反光板,在 Amazon 上都约 25 美元”就能让他们找到购买入口。
2d — 敲定 identity.md
现在(在完成 2a–2c 且用户发表意见之后),起草人物设定摘要。这是用户的第一个正式成果——它必须让用户觉得你真的了解他们,也要让上面的战略性坦诚建议确实影响了最终结果,而不是写成泛泛的品牌文案。
identity.md 结构(在聊天中以 Markdown 区块形式提供,稍后再保存到磁盘):
# [@handle or first name] — Identity
## The real you
[2–3 paragraphs in plain language. Specific. References their actual stuff — the comfort show they named, the way they describe their friends, the thing they said about their high school self. Sounds like someone who paid attention, not a horoscope.]
## Your influencer identity
[2–3 paragraphs about the online projection. Calls out the authenticity dial explicitly:
"You're not pretending to be someone else — you're you with the volume on [dimension] turned up."
OR
"This is a character. Here's where the character starts and the real you ends."
Be specific about what's amplified, what's filtered, and why.]
## Visual aesthetic
**This is the spec Step 3's mood board has to render. Be detailed enough that someone else could build the board from this section without seeing the user.**
- **Palette:** [specific colors / named tones — "warm cream, cognac brown, dusty rose, deep navy" beats "neutrals"]
- **Lighting:** [warm window / overcast / golden hour / harsh flash / candlelight — which lighting dominates]
- **Settings:** [where shots take place — specific. "Brooklyn brownstones, marble-top coffee shops, kitchen counter at 10pm" beats "city lifestyle"]
- **Photography style:** [phone-camera POV, mirror selfies (faceless or face), 3/4 candids, overhead flatlay, etc. — which framings dominate]
- **Subjects in frame:** [hands holding things, full body, faces, food, books, the dog, the bar, etc.]
- **Forbidden visual elements:** [what would never appear — e.g. "no full-glam beauty shots", "no landscape paintings", "no studio-clean white backgrounds"]
- **Relationship to existing grid:** [if their existing photos already match this aesthetic, say so. If the aesthetic is a slight evolution from their grid, name exactly what shifts — e.g. "their grid is currently warm and slightly washed; the influencer aesthetic pushes deeper shadows + cooler highlights for a more cinematic read." Step 3 uses this to decide whether to apply light color-grading to her photos for cohesion.]
## Voice principles
**Sounds like:** [3 example sentences in their voice — short, specific, real]
**Never sounds like:** [3 example sentences they would never write — the cringe versions]
**Voice adjectives (3):** [adj], [adj], [adj]
**Forbidden words/phrases:** [3–6 actual phrases they'd want to avoid]
## Reference creators (with dimension + what to borrow)
- **[@handle or name]** — borrow their **[voice / content type / visual aesthetic]**. Specifically: [the actual thing — pacing, lighting, type of self-disclosure, etc.]
- ...
交付前检查是否过于泛泛:
- 这份人物设定能否原样套用到其他人身上?如果可以,就进一步明确具体细节。
- 视觉风格部分是否列出了具体颜色、光线和场景,还是只堆砌形容词?步骤 3 必须据此呈现视觉效果;仅说“温暖且简约”远远不够。
- 每个参考创作者条目是否注明了具体维度(表达风格 / 内容类型 / 视觉风格)以及要借鉴的具体内容?像“感觉像 @emmachamberlain”这样没有说明要学什么的模糊参考,属于失败情况。
在聊天中提供人物设定,然后明确询问:“这感觉像你吗?在我开始制作情绪板之前,有什么想要更强调、弱化或改写的地方吗?”
🛑 等待用户明确批准。 可以是“是”“这就是我”“就按这个来”“完美,开始做情绪板”。不能是“好”、沉默或“再多加点 X”(这是反馈——先整合反馈,再次询问)。批准关卡必须严格执行。
第 3 步 — 情绪板(严格关卡——必须获得批准)
在人物设定敲定后制作情绪板。情绪板必须符合已批准的第 2 步 identity.md 中的 Visual aesthetic 部分——而不是用来探索视觉风格。 在搜集或生成任何素材之前,重新阅读该部分。每个素材(精选 + 生成)都必须符合已确定的规格。
来源优先级——必须混合使用,全部由生成内容构成属于失败状态:
- 用户提供的单张全分辨率照片(相机胶卷中的照片、用户喜欢的照片、全分辨率文件)——最强的精选来源。将这些照片放入
mood-board/curated/。 1a. **仅提供账号名时,为视频内容较多/以 Reels 为主的账号启用公开动态备用方案。**如果用户提供了公开账号名,但没有另外提供照片文件,则可使用抓取的动态图片作为精选图块。对于图片帖子,使用最高质量的image_versions2.candidates[0].url。对于media_url为.mp4的视频帖子,不要使用临时的 IGvisual_media_url/带签名的封面 JPG 作为精选图块来源;不要修改任何带签名封面的查询参数,否则会导致URL signature mismatch,而且视频中段的封面通常带有烧录的字幕或标题叠层。只能使用 Step 1rehost: true抓取返回的持久化重新托管.mp4(pika_cdn_url/cdn.pika.art媒体;将其视为is_durable: true),并调用extract_frame(video_url: <durable_rehosted_mp4>, time_s: 0)。将提取的每一帧视为候选图块,而非已批准图块:放入之前,立即对该帧 URL 调用analyze_media,使用关于 OCR/可见文字/无文字的提示词。此来源检查必须在该帧成为情绪板图块、PDF 内容类别图块或声音页精选图块之前完成。如果第 0 帧包含文字、标题卡或烧录字幕,请弃用该 Reels,或尝试之后的关键帧(例如time_s: 1.5或time_s: 3),并在使用该后续关键帧之前运行相同的analyze_media无文字检查。如果没有持久化重新托管的.mp4,请使用rehost: true重试抓取;不要回退使用带签名的封面 URL。最终 PDF QA 只是此来源检查关卡之后的兜底步骤,绝不能作为首次文字检测步骤。 - **绝不从 IG 网格截图中裁剪。**网格截图中的图块宽度无法与整齐的像素比例对齐;自动裁剪会渗出边缘;结果很糟。这种方法已确认失败。如果用户提供网格截图,请改为向他们索要单张照片。
- **没有任何精选图块的情绪板即为失败。**如果既没有用户照片,也没有干净的公开动态精选帧,请先解决这一问题——绝不能用生成的替代图顶上。如果用户原本打算提供照片,但文件没有传到磁盘,请让他们重新上传。对于从零开始/没有社交媒体账号的用户,请暂停并在构建视觉素材前索要 16 张以上的单张照片:6 张情绪板精选图块,以及另外 10 张 PDF 声音页精选图块。
- 读取 Step 2 中的
Relationship to existing grid字段。如果锁定的美学风格与用户现有网格完全相同,直接放置精选图块。如果 Step 2 指出略有演变(例如“他们的网格色调温暖、褪色,而网红美学会采用更深的阴影和更冷的高光”),请在渲染前对 HTML 合成图应用轻微的 CSS 色彩处理——filter: contrast(...) saturate(...) brightness(...)、细微叠层或轻度混合模式处理。绝不要将用户的照片重新交给 gpt-image-2 处理——图像模型重新渲染会偏离人物/宠物/物体的身份特征,破坏“这确实是她”的锚点。如果差异太大,单靠 CSS 处理无法实现,那么应增加采用新美学风格的生成氛围图块,并减少未经处理的精选图块,而不是重新生成她的照片。 - 找出美学风格的覆盖缺口——锁定的 Step 2 美学风格中还有哪些部分尚未体现(具体场景、构图或光线条件)?
- 使用
generate_image(provider="gpt-image-2")填补缺口,仅用于社交内容氛围图(承重短语——促使 gpt-image-2 避免生成愿景板/壁纸风格;参见“承重短语”部分),提示词采用 Step 2 的美学风格(其色盘、光线、场景和摄影风格)。请参阅下方的硬性规则。生成的图块放入mood-board/generated/。 🛑 硬性规则:生成的图块要呈现社交内容的氛围,而不是氛围感愿景板的感觉。
面向网红身份的情绪板必须看起来像创作者的真实动态,而不是愿景板。
- 可以:手机摄影构图、随性的 3/4 角度、镜子自拍(生成时不露脸)、手持第一人称视角镜头(桌上的咖啡、腿上的书、酒吧里的饮料)、餐桌俯拍、试衣间穿搭平铺照、黄金时刻背影行走照、早午餐食物特写、烛光晚餐桌、逛复古商店、仰拍视角且背景有天空、幕后动手做事的手部镜头。
- 不可以:风景画、营造氛围的“感觉”图块、没有人物线索的日落港湾、苔藓微距、纯风景,以及任何看起来像桌面壁纸或艺术版画的内容。如果图块看起来像 2014 年 Tumblr 美学风格的画面——不合格。情绪板必须看起来像经过策划的 2024–2026 年社交动态。
生成图块的提示词必须始终指定构图(手机摄影第一人称视角、无露脸镜子自拍、随性的 3/4 角度、餐桌俯拍等)和瞬间(捕捉到的具体生活片刻),而不能只描述一种“感觉”。
提示词模式请参阅 references/aesthetic-prompts.md 中的“社交趋势构图”。
🛑 硬性规则:生成图块只呈现氛围,绝不呈现用户的真实主体。
- 用户的脸、身体、头发 → 只能使用用户的真实照片
- 用户的狗、猫、宠物、马 → 只能使用用户的真实照片
- 用户的伴侣、朋友、家人、孩子 → 只能使用用户的真实照片
- 用户的真实汽车、真实住宅、真实常用物品 → 只能使用用户的真实照片
生成图块呈现的内容包括:房间、天气、透过窗户的光线、硬木地板、鹅卵石路上的积雪、用户收藏的物品类型(复古皮革制品、黄铜手表),以及用户常去的场所类型(黄金时刻的城市天际线、林间小径)。绝不能生成用户真实拥有的人或物的虚假版本。**原因:**面部和动物的细节容易失真,而把某人的真实宠物狗生成成虚假版本,会显得诡异且冒犯。用户会告诉你:“那不是我的狗。”
**合成——填充模板,不要编写 CSS。**情绪板由固定模板 references/templates/mood-board.template.html 构建,并通过 html_to_png 渲染。绝不要让 gpt-image-2 渲染“情绪板网格”——它会臆造图块。**你只需提供数据:**恰好 12 行 .tile 数据(每行包含一个图片 URL 和该图片的 background-position 裁剪焦点)、品牌名称、副标题氛围词、字体组合和调色板色值。模板统一负责网格计算、白色标题栏和尺寸设置,因此不会再出现奶油色细条或网格错位的问题。肖像图块(默认;大多数相机胶卷输入)将 {{COLS}} 设为 6;横向图片较多时设为 4。恰好使用 12 个图块,这样带标题栏的情绪板和 PDF 无页眉全出血版本都能填满画布,不留空格。
**精选图片与生成图片的比例约为 50/50。**对于包含 12 个图块的情绪板,大致使用 6 张精选图片和 6 张生成图片。精选图片达到 8 张以上、生成图片只有 2–3 张的情绪板,看起来会像“把她相机胶卷里的照片直接倒进网格”,而不是经过设计。生成图片要把美学风格延展到她尚未拍摄过的品牌化场景中(早午餐餐桌、羊毛大衣穿搭自拍、鸡尾酒第一人称视角)。50/50 的组合会让情绪板既有设计感,又有真实生活的锚点。
字体系统——在此锁定,并沿用至第 4 步的 PDF。
选择一组符合第 2 步锁定的视觉美学形容词的字体组合(展示字体 + 正文字体)。不要条件反射地默认选用 Didot 或 Helvetica——品牌字体选错会让情绪板显得不协调,也会削弱 PDF 的效果。判断标准是字体个性是否符合美学形容词。可参考以下经验法则:
| 审美风格 | 展示字体(标题) | 正文字体(副标题、说明文字) |
|---|---|---|
| 静奢、优雅、精致 | Didot, Bodoni Moda | Inter, Helvetica Neue |
| 电影感、温馨海岸风、编辑风 | Cormorant Garamond, Playfair Display | Inter, Söhne |
| 极简、现代、简洁 | Inter Display, Helvetica Neue | Inter, Helvetica Neue |
| 活泼、复古、Y2K、趣味 | Recoleta, Bagnard, custom display | Inter, IBM Plex Sans |
| 温暖柔美、浪漫、轻柔 | Italiana, Cormorant Infant | Inter, Söhne |
| 编辑风、杂志风格 | Playfair Display, GT Sectra | Inter, Helvetica Neue |
| 大地色系、手作、有机 | Caudex, Recoleta Soft | Inter, IBM Plex Sans |
在 persona.md 的 Visual aesthetic 部分,将选定的字体组合保存为 fontDisplay + fontBody,以便 Step 4 PDF 使用这些字体。如果字体未安装在系统中(上面大多数字体都未安装,Helvetica 除外),请从 Google Fonts 获取,并将 {{FONT_IMPORT}} 填为完整的 <link rel="stylesheet" href="..."> 标签。
渲染情绪板。 填写模板占位符:
{{TILES}}— 每个图块对应一个<div class="tile" style="background-image:url('IMAGE_URL');background-position:POS"></div>。POS是每张图片的裁切焦点:上半身 OOTD 用50% 20%,俯拍厨房用50% 35%,居中用50% 50%。{{BRAND_NAME}}、{{SUBTITLE}}(记录的风格关键词,例如BOSTON · WOOL COATS · COCKTAIL BARS)。{{FONT_IMPORT}}(字体组合未安装在系统中时,填入 Google Fonts 的<link>)、{{FONT_DISPLAY}}、{{FONT_BODY}}、{{BG}}(调色板中最浅的色调)、{{FG}}、{{MUTED}}。
然后调用 html_to_png,设置 format: "png",并将 raster_options.viewport_px 设为 { width: 1920, height: 1224 }。如果返回 {task_id, status},请轮询 task_status({task_id}),直到任务结束,然后读取图片 URL。对于 PDF 的满版页面(Step 4 第 3 页),通过 references/templates/mood-board-no-header.template.html 以 { width: 1920, height: 1080 } 渲染相同的图块 — 该版本没有边距,因此 PDF 页面不会露出奶油色细边。
交付前的强制检查:
- 必须包含精选图块。 完全由生成内容组成的灵感板不合格。有效的精选图块包括用户提供的图片,或来自受支持社交账号的公开动态流中精选的清晰画面。如果无法将其中任一种放到灵感板上,解决门槛就是“疏通真正的精选来源”,而不是“没有也照样交付”。
- 不得重新生成真实人物或动物。 重读上面的硬性规则。用户的脸、宠物、伴侣、朋友——绝不能生成。生成他们身处的氛围——可以。
- 任何图块上都不能带有烘焙进图片的文字。 gpt-image-2 提示词必须包含无文字保护条款——追加
"NO text anywhere in image"(这是关键短语——否则 gpt-image-2 会在瓶子、围巾、书籍上烘焙出虚假的品牌标签;参见“关键短语”部分)。对于仅从账号内容获取、源自短视频的精选图块,使用已持久托管.mp4的第 0 帧;如果短视频画面仍显示烧录进去的字幕或标题叠层,就将其舍弃,不要把带文字的画面放上灵感板。 - 避免图库感测试。 如果灵感板看起来像图库照片(修饰度一致、色调统一、影棚般完美、毫无真实生活中的不完美)——不合格。2024–2026 年的潮流美学活力 = 有真实感的快照 > 广告大片般的光鲜质感。用户精选图块锚定“真实感”;生成图块应与之匹配,而不是变得更光滑精致。
- 在保持风格一致的同时让色彩有所变化。 色彩统一没问题;但如果整块灵感板只有一种色调(“全是棕色”/“全是鼠尾草绿”/“全是米色”),就会显得沉闷。即使是暖柯涅克色调的风格,也可以加入暖奶油色、灰粉色、深海军蓝、鼠尾草绿——任何能自然共存于他们生活中的颜色。
- 任何包含人物的生成图块都要注意人物构成的多样性。 每个提示词都要注明一种族裔*(这是关键的操作规则——否则 gpt-image-2 默认会生成肤色较浅的人物;参见“关键短语”部分)*。(注意:根据上面的硬性规则,包含人物的生成图块应该很少——只能是场景中的陌生人,绝不能是用户本人。)人物构成多样性的提示词模式参见
references/aesthetic-prompts.md。 - 放大查看拼图。 打开 PNG。确认没有图块重叠、宽高比异常或内容错位。图块边缘应整齐。
- 避免模板化检查。 灵感板应该让人感觉像这个人本人,而不是某个单词概括的审美预设(不要是“清纯女孩米色风”,也不要是“黑暗学院风”或“田园风”,除非用户自己提到了这种审美)。如果你能用一个 TikTok 审美标签概括灵感板——就要进一步突出具体的个人特色。
在聊天中交付:“这是你的灵感板——[PNG 链接]。精选图块来自[来源];我用生成图块填补了[注明的空缺]。这像你的视觉世界吗?”
🛑 等待用户明确批准后再继续。
第 4 步——网红人设 PDF(硬性门槛——需要批准)
交付物必须是名为 [Name]'s Influencer Persona 的多页品牌化 PDF,而不是内联 Markdown 块。绝不要把这个文件称为“媒体资料包”——用户来这里是为了定义自己的人设,还不是为了向合作伙伴推介;称其为媒体资料包还为时过早,也会削弱形象升级的定位。PDF 应将声音库内容编排成一份设计精良的文档,并包含人设概述、内容类别、已批准的灵感板,以及第 2 步战略对话中制定的“关键后续步骤”路线图。用户通过批准 PDF 来批准声音库。
PDF 的用途: 这是一份个人资料,用来呈现用户在网络上的形象——他们发布什么内容、说话风格如何、信息流呈现什么样子,以及真正成为这一人设所需采取的具体后续步骤。它必须设计精良——字体有力、层级清晰、留白充足,并符合整体审美。粗制滥造的 PDF 会削弱整套资料的效果。
4a — 起草语气库内容
先生成语气库文案(与旧版技能内联生成的内容相同)。将其保存为 ./tmp/[handle]-influencer-kit/voice-bank.md,供下游技能使用。内容包括:
- 个人简介(3 个版本): IG 主简介(简短标语)、IG 备用简介(更长、更具体)、TikTok / 日常风格。
- 文案模式(5 种): 开场钩子、故事、随手自拍、袒露心声、推广。每种模式 = 一个使用场景标签(“适用于……”)+ 2 条展现不同风格的示例文案(例如,一条较短、一条稍长)。
- 开场钩子(5 条): 用于 Story / Reel / TikTok 开头的句子。
- 私信 + 评论语气: 回复赞美、婉拒品牌推广邀约、回复黑粉(或“不会回应”)、默认表情符号搭配。
- 该做与不该做(各 5 条): 针对个人特点,而非泛泛而谈(“使用具体地点名称”优于“保持规律发布”)。
文案本身的质量标准:
- 每条文案都要以第 1 步抓取的 caption 为素材——句子节奏、词汇、表情符号习惯、反复出现的短语、开场风格。仅在抓取失败时,才使用聊天语气作为后备。
- 每条文案都要通过反泛化测试(它是否可能属于其他人?如果是,就重写)。
- 每条文案都要符合禁止使用 AI 创作者语气的清单(不得出现“apparently i [did thing] now”、用破折号插入括号内容来制造诙谐效果、使用加号连接的“[x] + [y]”列表、“fake errand”、极简诗意列表、“I'm just a girl who…”)。
- 身份设定中的禁用词不得出现在任何示例文案中。
- 每种模式中的 2 条文案要展现真正的变化。
4b — 将内容排入 PDF
PDF 规格:
- 页面尺寸: 16:9 横向,每页 1920×1080。
- 页数: 最多正好 12 页,每页聚焦一个要点。工具包不得超过 12 页:必需的
analyze_mediaPDF QA 流程使用all_pages: true,该同步流程最多支持 12 页 PDF。 - 字体: 使用第 3 步确定的
fontDisplay+fontBody组合。不得使用第三种字体,也不得混用不同语体。 - 配色: 使用第 2 步的视觉风格配色。页面背景默认使用最浅色调;其他配色用作强调色。 页面顺序(目标):
- 封面 — 使用展示字体显示名称(字号很大,120–180pt),副标题使用字距加宽的正文字体大写字母,一张主视觉图片(全幅或大幅裁切),小号“Influencer Persona · [year]”标签 (绝不要写“Media Kit”)
- 关于 / 身份 — 根据
identity.md综合撰写 1–2 段文字(真实的你 + 网红身份的你,明确说明真实性尺度)。侧边配图:1–3 张精选照片 + 一个小型统计网格(所在地 / 细分领域 / 状态 / 风格) - 情绪板 — 全幅铺满 — 将已批准的情绪板无边缘地铺满页面。填充
references/templates/mood-board-no-header.template.html预渲染;模板负责无标题栏网格的计算:6 列 × 320w × 2 行 × 540h = 1920×1080,恰好填满,无间距。图片块直接相接,中间不能有奶油色空隙,否则 PDF 页面边缘和行间会出现 2–4px 的奶油色细缝。带标题栏的情绪板(含边距 + 标题)是单独保存的磁盘文件mood-board.png;无边缘版本为mood-board-no-header.png,仅用于 PDF。 - 内容类别 — 以 2×2 网格排布 4 张卡片,每张卡片 = 图片 + 类别名称 + 一句话描述 + 3–4 种示例帖子类型。如果有抓取数据,类别应根据用户实际抓取的信息流得出:统计用户抓取的 30 条帖子文案,按主题 / 格式分组,选出数量最多的四类。如果没有抓取数据 / 尚无社交媒体内容,则将页面标为 拟定内容类别,并根据用户的回答、品味链接、参考创作者和真实照片得出四张卡片;不要声称这些类别反映了现有信息流的发布频率。示例:面向美国东北部沿海生活方式创作者,可选穿搭与造型 / 波士顿生活方式 / 家居与食谱 / 品牌合作;面向健身创作者,可选健身训练 / 食谱 / 从训练到食谱 / 品牌合作;面向音乐人,可选巡演与旅行 / 工作室 / 真实生活 / 品牌合作。使用具体的用户专属内容(例如“《胡桃夹子》、节日集市、Snowport”,而不是“城市活动内容”)。这比通用的色卡页面更有用。不要使用纯色卡页面或纹理材质卡页面——这两种设计都显得无聊;纹理版本尤其像“全是布料”,无法告诉别人这位创作者实际创作了什么。
内容类别布局位于 references/templates/pdf-content-categories.template.html(图片为 300×400,卡片使用 grid-template-columns: 300px 1fr — 已内置)。如果有抓取数据,将 {{CONTENT_CATEGORIES_TITLE}} 填为 Content Categories;如果没有抓取数据 / 尚无社交媒体内容,则填为 Proposed Content Categories。填写 4 张卡片的图片 / 名称 / 描述 / 帖子类型 + 每张卡片的 {{CARD_N_POS}} 裁切焦点(50% 20% 上半身,50% 35% 厨房俯拍,50% 50% 居中)。不要编写卡片 CSS。
5–9. 语气模式 — 每种文案模式各一页(引子、故事、随手自拍、袒露心声、宣传)。布局:左半部分放文字(模式名称 + “适用场景”说明 + 2 条示例文案),右半部分放 2×2 网格的 4 张图片块。
语气页面布局位于 references/templates/pdf-voice-mode.template.html — 一个模板重复用于全部 5 种模式。防止内容溢出页面的带内边距网格(四周各 80px 等距内边距,列宽为 800/160/800,2×2 网格)已内置。填写 {{MODE_NAME}} / {{USE_WHEN}} / 2 条文案 / 4 个图片块 URL(+ 可选的每块图片裁切设置)。不要重新推导网格 CSS。
10. 开场钩子 + 私信语气 — 一侧列出编号开场白,另一侧提供私信示例
11. 该做与不该做 — 两列并排展示
12. 关键后续步骤 — 路线图页面(取代旧版“参考资料 + 联系方式”页面;绝不要重新添加联系卡片)。采用 2 列网格,放置 4–6 张卡片;每张卡片 = 编号 + 章节标签(例如“01 · 灯光与取景”)+ 一行标题 + 2–3 句具体行动。内容直接来自 Step 2 的策略对话——包括 2a 中选定的高收益方向、2b 中指出的差距,以及 2c 中的设备建议。每张卡片都必须是可执行的具体行动,并包含明确的数字、品牌或行为——不能写“改进你的内容”。示例卡片(来自 gamar___b 示例套件):“别再对着刺眼的顶灯拍摄——买一个手机三脚架($15)+ 夹式反光板($25)”、“目前 80% 是 OOTD;目标是在 4 类内容中分别占比 40/25/20/15”、“90 天达到 5K:改善灯光 + 每周发布 4–5 次 + 每周发布 1 条与季节节点相关的 Reels”。
- 后续步骤布局位于
references/templates/pdf-next-steps.template.html——明确设置的.next-grid { height: 720px }可同时避免第 13 页空白和 300px 的空白区(Chromium 在没有明确高度时会折叠1fr行;超过 740px 则会溢出并多出一页)。填写 4–6 张卡片(编号 / 标签 / 标题 / 2–3 句);少于 6 张时,删除末尾多余的卡片块。不要重新推导这段 CSS。 语音模式页面图像——示例: - 每个语音模式页面恰好使用 4 张瓷砖,按上方的 2×2 网格排列。 网格为 800×920px、间距为 16px 时,页面缩放后的每个瓷砖单元格为 392×452px。将单元格填满,使用
width: 100%; height: 100%; background-size: cover;,并为每个瓷砖调整background-position;不要强制使用单独的 3:4 裁剪,以免溢出网格。 - 每页各使用 2 张精选图片和 2 张新生成的图片。 精选图片 = 从信息流抓取的、质量高于情绪板中图片的图像(来自不同帖子)。对于只有账号名、视频内容较多或以 Reels 为主的账号,可将
.mp4media_url帖子中,通过extract_frame(video_url: <durable_rehosted_mp4>, time_s: 0)获取的干净输出帧作为精选信息流图片候选;不要使用经过修改的visual_media_url签名封面图。将任何源自 Reel 的帧放入语音页面或内容类别卡片之前,都要对候选帧调用analyze_media,并使用 OCR/可见文字/无文字提示词。若帧中叠加了烧录字幕或标题,则予以剔除;若尝试使用后续关键帧,放入页面前也要对该帧执行同样的analyze_media无文字检查。如果还没有信息流或社交媒体内容,则改用不同的用户相机胶卷照片。如果没有精选用户照片或干净的公开信息流精选帧,则不要制作 PDF;暂停并请求真实照片。 - 语音页面上的瓷砖必须与情绪板不同。 情绪板呈现的是视觉世界;语音页面则用新图像展现语气。重复使用情绪板瓷砖会让整体呈现变得平淡。
- 针对不同模式灵活选择图像,使其符合模式意图:
- Hook → 大胆吸睛的 OOTD/电影感穿搭行走镜头
- Story → 叙事性场景(厨房、家庭内容、行走场景)
- Casual Selfie → 必须使用用户真实照片中的自拍;如果用户没有提供自拍照片,则使用不露脸的通用自拍风格生成图——镜子自拍时用手机完全遮住脸、裁切的穿搭/身体细节、后脑勺 3/4 角度、手遮住脸。不要出现可见的生成面孔。不要使用抽象氛围图。
- Vulnerable → 安静时刻的画面——未整理的床铺、蜡烛、日记本、葡萄酒与烛光
- Promo → 桌上产品、品牌合作风格的平铺摆拍、用户自己的品牌合作帖子
- 精选照片(包含用户真实面孔/宠物/伴侣)须原样使用——绝不能用 AI 修改。可以使用第 3 步中的轻微 CSS 色彩处理,但不能通过 gpt-image-2 完整重新生成。
- 对于生成的自拍瓷砖,绝不要生成用户的面孔——生成不露脸的镜子自拍视角(
"hand obscuring face"、"phone obscuring face"、"back-of-head 3/4")(这些措辞至关重要——缺少它们时,gpt-image-2 会凭空生成用户的面孔,破坏“这确实是她”的真实感锚点;参见“关键措辞”部分),让图像呈现自拍风格,同时不伪造身份。 - gpt-image-2 内容政策回退方案: 如果生成自拍风格的提示词因“mirror selfie”“selfie”或“phone obscuring face”等词触发政策过滤器而被拒绝,则用符合政策的改写方式重试一次。删掉“selfie”一词;改写为手持手机拍摄、以身体为主体的画面、裁切的穿搭/身体细节,或用手持手机遮住脸的画面。不要重试相同提示词,也不要重复使用被拒绝的措辞。回退方案仍须确保没有可见的生成面孔,且不得凭空生成用户的面孔。
4c — 设计原则(不可妥协)
- 字体层级。 页面标题和品牌名称使用展示字体;副标题、说明文字和正文使用正文字体。所有页面采用一致的字号比例(例如,120 / 64 / 32 / 18 / 13 pt)。不得使用第三种字体系列。
- 留白是一项设计特性。 不要让内容铺满整个页面。留出宽裕的边距(外侧 80–120px)。
- 每页一个视觉焦点。 每页只设置一个视觉焦点——标题 + 视觉元素,或说明文字 + 照片,不要让 8 个元素争相吸引注意力。
- 严格控制配色。 全程使用已确定的 Visual aesthetic 调色板。不要引入新颜色。
- 不要编造数据。 不要捏造并未发生的粉丝数、互动率或品牌合作。如果包含统计数据部分,请标注推断项。
4d — 构建方法
- 使用页面模板进行组装——不要编写 HTML/CSS。
shared_head=references/templates/pdf-shared-head.template.html(包含调色板/字体变量及全部页面 CSS;填入其中的{{FONT_IMPORT}}/{{FONT_DISPLAY}}/{{FONT_BODY}}/{{BG}}/{{FG}}/{{ACCENT}}/{{MUTED}}标记)。body_pages[]= 按顺序填充的各页面模板:pdf-cover→pdf-about→pdf-moodboard→pdf-content-categories→pdf-voice-mode×5(每种模式各一页)→pdf-hooks-dm→pdf-do-dont→pdf-next-steps。每个正文片段仅包含标记;worker 会将shared_head注入每一页,并行渲染后再合并。 - 每张幻灯片使用一条
@page规则(1920×1080 横向,@page 无边距)。 - 通过填写
{{FONT_IMPORT}}来嵌入字体,内容为一个 Google Fonts<link rel="stylesheet" href="...">标签;该标记会插入到共享<style>块之前。 - 图片使用 HTTPS URL 引用——对于本地图片,先调用
upload_asset获取 CDN URL,再在 HTML 中引用该 URL。 - 🛑 关键要求:向
html_to_pdf显式传入pdf_options.paper_size。 仅靠@page { size: 1920px 1080px }CSS 规则并不足够——如果省略pdf_options.paper_size,html_to_pdf默认使用 US Letter(792×612 points,宽高比为 1.294);这样一来,按 1920×1080 设计的 HTML 会被缩放并嵌入 Letter 页面,上下出现巨大的白边。务必传入:"pdf_options": { "paper_size": {"width": 1920, "height": 1080, "unit": "px"}, "margins": {"top": 0, "right": 0, "bottom": 0, "left": 0, "unit": "px"} }html_to_pdf默认使用异步模式。如果响应为{task_id, status},请循环紧密轮询task_status({task_id}),直至状态变为completed、failed或cancelled;若状态为completed,请先从任务结果中读取 PDF URL,再继续操作。将已完成的html_to_pdf/task_status结果保存在备注中;其服务端结构化元数据(page_count,以及存在时的pages[])是超时回退方案中唯一可移植的页数证据。每次渲染后,调用analyze_media,将渲染后的 PDF 作为application/pdf分析,并设置all_pages: true。要求它检查所有页面是否采用 16:9 横向版式、没有 US Letter 留白、没有巨大白边、没有空白尾页,也没有破坏视觉层级的页面。如果图像密集型 PDF 导致all_pages: true超时,请使用第 4e 步的逐页 QA + 服务端结果页数 /pdf_options.paper_size回退方案,再判断是否可以继续渲染。如果发现 Letter 留白或白边,请使用上述显式pdf_options.paper_size重新渲染。 - 将生成的 PDF 保存为
./tmp/[handle]-influencer-kit/influencer-persona.pdf(不要命名为media-kit.pdf)。
🛑 PDF 大小上限:html_to_pdf 会拒绝超过 50 MB 的输出。 gpt-image-2 生成的 PNG 每张为 1–3 MB;每套资料约使用 15–20 张图片时,直接嵌入 PNG 可能导致首次渲染超过上限。**最终渲染 PDF 前,请通过 MCP 缩小较大的生成图片,不要使用本地图片库:**将每个大图 URL 包装在仅包含一张图片的 HTML/CSS 框架中,并调用 html_to_png,设置 format: "jpg",将 raster_options.viewport_px 限制为最长边不超过 1400,并设置 raster_options.jpeg_quality: 85。如果响应为 {task_id, status},请轮询 task_status({task_id}) 直至任务结束,并在 PDF HTML 中使用完成任务返回的 JPG URL。
规范的生成图块 URL 流程(仅限 MCP):
- 使用
generate_image(provider="gpt-image-2")生成每张氛围图块。 - 对于将嵌入 PDF 的每张生成 PNG,通过
html_to_png转码并缩小尺寸:将源 URL 作为满幅背景图放入一个小型 HTML 框架,并以 85 的质量渲染format: "jpg"。 - 在临时笔记中构建明确的
asset_url_map:原始生成 URL → 最终 JPG URL。将最终 JPG URL 插入body_pages片段。 - 渲染前,在最终 HTML/源笔记中搜索原始
gpt-image-PNG URL;情绪板满幅图可以保留 PNG,但语气页面中的生成图块应使用最终 JPG URL。 - 使用
body_pages、shared_head和上文明确指定的pdf_options.paper_size调用html_to_pdf。 - 按此规格制作的 12 页套件应远低于 50 MB。PDF 若达到 40–55 MB,说明跳过了 MCP JPG 转换步骤,或 HTML 仍引用原始生成 PNG。若 AI 图块看起来仍像“素材库图片”,问题就在于构图本身——请转到步骤 4d.5,使用重新生成提示词公式。
🛑 Cloudflare R2 / upload_asset PUT 注意事项:
- 预签名 URL 会在 300s 后过期。 若依次执行
curl PUT上传 10 个以上文件,且每个文件耗时 8–12s,最后几个 URL 可能会超出有效期。始终并行执行 PUT,使用(curl ... &)子 shell 并配合wait。 - 子 shell PUT 可能会悄悄丢失
Content-Type标头——文件虽然上传成功,但 R2 会将其存为text/htmlMIME 类型,导致 html_to_pdf 因“MIME type 'text/html' is not in the allowlist.”而拒绝该图像。缓解措施:每批 PUT 后,使用curl -s -I <url> | grep content-type验证,并对类型错误的文件重新执行 PUT。 - 若看到 403/ExpiredRequest,请立即重新生成 URL 并重新执行 PUT。 不要尝试延长已过期 URL 的有效期。
4d.5 — 克服 AI 痕迹(问题出在构图)
gpt-image-2 的输出有两种明显的 AI 痕迹:
- 摄影风格——光线过于完美,表面一尘不染,没有真实生活中的瑕疵。轻微的 CSS 处理有助于让图片与周围的版面风格一致。
- 构图——物品摆放得过于规整,主体居中,取景像杂志产品大片,没有现实生活中的杂乱感。生成后无法修复。 必须在提示词层面解决。
AI 构图陷阱(尤其是在促销 / 品牌合作图片块中):
- 三瓶护肤品摆在大理石台面上,周围有牡丹和迷迭香 = 库存图库风格的平铺照片。这就是 AI 痕迹。
- 香水瓶放在折叠的丝巾上,周围飘落花瓣 = 产品主视觉大片。这就是 AI 痕迹。
- 肉桂面团擀得完美,旁边配有黄油 + 红糖,分别放在配套的碗里 = 美食博客图库风格。这就是 AI 痕迹。
解决方法——提示词应描述真实生活场景,而非精心布置的摆拍:
- 护肤品:「手机镜头拍摄的镜中自拍细节照,一位泛化人物在普通浴室里拿着一瓶产品,手机完全挡住脸,后方有牙刷杯和随意搭放的毛巾。不要拍成精心布置的平铺照片。」
- 香水:「特写镜头拍摄一只正喷香水的普通手腕,另一只手中拿着的香水瓶以柔焦呈现。背景:普通而杂乱的梳妆台——梳子、化妆品、冰咖啡。不要拍成产品主视觉大片。」
- 肉桂面团:「普通人的双手在大理石台面上擀面团,一条灰玫瑰色亚麻毛巾有一半垂落在台面边缘,黄油和糖分别放在不成套的小碗里,构图偏离中心。不要拍成完美的俯拍图库平铺照。」
克服 AI 痕迹的提示词公式:
[手持 / 动作进行中的动词] + [略显杂乱的真实环境] + [局部入镜的无露脸人物] + [不完美 / 偏离中心的构图] +
"NOT a [styled flat lay / product hero shot / stock food photo]"
末尾的 "NOT a styled flat lay / product hero shot / stock food photo" 是整个模式中起关键作用的锚点——没有它,gpt-image-2 会回到主体居中的产品构图,后续 CSS 处理也无法挽救。完整内容请参阅 Load-bearing phrases 部分。
HTML/CSS 处理(生成后、合成 / PDF 之前): 使用 HTML 渲染层,让生成的图片块与用户真实照片的风格一致:
- 仅做轻微的
filter调整:适度调整对比度、饱和度、亮度或暖度。 - 可选叠加层:通过 CSS 伪元素添加非常低不透明度的噪点纹理或暗角。
- 随意裁剪:为每个图片块设置
object-position,避免主体总是居中。 - 绝不要通过图像模型修改用户的真实主体。用户的真实照片必须忠实于原始素材。
4e — 交付前的强制检查
- 通过 MCP 逐页检查渲染结果。 对最终 PDF URL 调用
analyze_media,指定application/pdf和all_pages: true,并要求逐页进行 QA:确认每一页都能以 16:9 横向格式正常渲染,没有空白页、没有 US Letter 白边留白、没有令人困惑或不符合审美的页面、没有层级结构混乱,也没有可见的图像或裁切问题。如果发现任何问题,修复 HTML/素材并重新渲染后再交付。- 仅在图像密集型 PDF 超时/超出栅格化预算时使用回退方案:
all_pages: true仍是强制要求的首次 QA 调用。如果该全页调用超时,或仅因多页 PDF 栅格化预算耗尽而失败,不要仅因这项汇总失败就中止流程。首先根据 MCP/服务端证据验证结构:已完成的html_to_pdf或task_status结果必须报告page_count: 12(若存在pages[],其长度也必须为 12),渲染请求必须恰好包含 12 个body_pages,且提交的pdf_options.paper_size必须为{width: 1920, height: 1080, unit: "px"},页边距为零。将服务端渲染结果与请求视为 MediaBox/页面尺寸契约;不要运行本地 PDF 检查或使用本地 PDF 工具/库。如果服务端结果未提供page_count,则回退方案尚未得到验证:使用更小的 JPG 素材重新渲染,或停止并报告pdf_structural_metadata_unavailable。确认结构无误后,通过analyze_media(media=<pdf_url>, application/pdf, page: <n>)对第 1 页至第 12 页逐页进行 MCP QA,并对每一页提出相同的视觉 QA 问题。任何逐页视觉缺陷仍会阻止交付,必须重新渲染。
- 仅在图像密集型 PDF 超时/超出栅格化预算时使用回退方案:
- 再次检查所有说明文字,确保没有 AI 腔调,然后再将其放入 PDF。
- 真实照片完整性——用户的脸/宠物/伴侣只能使用精选的原始照片(或仅做轻微调色),绝不能使用 AI 生成的图像。
- 字体排版一致性——每一页使用相同的展示字体与正文字体组合。不得意外替换字体。
- 任何拼贴图块上都不得有烘焙进去的文字(沿用步骤 3 的要求)。检查生成的、精选的、公共信息流中的以及由短视频截取的图块;如果某个画面带有烧录进去的说明文字/标题叠加层或任何其他可见文字,请替换并重新渲染后再交付。对于由短视频截取的图块,放置前请确认构建说明中包含每个候选画面在素材选取时通过
analyze_media得出的 OCR/无文字结果;最终 PDF QA 是素材选取后的兜底检查,而不是第一道文字检查关卡。 - 配色必须符合规范——不得出现擅自添加的颜色。
- PDF 大小必须低于 50 MB——如果
html_to_pdf返回“File too large”错误,说明跳过了 MCP PNG→JPG 转换步骤(4d)。 - 语气页面的图像必须符合相应模式——Selfie 页面确实展示自拍;Vulnerable 页面确实展示安静时刻的图像。不得“所有内容都用抽象氛围图”。
- 语气页面的拼贴图块不能是情绪板图块。 只能使用新鲜图像。
在聊天中交付: PDF 路径 + 一行说明。询问:“批准交付这套素材,还是在最终定稿前需要替换什么?”
🛑 等待明确批准后再进入步骤 5。
第 5 步 — 打包套件(硬性关卡 — 仅在用户明确表示可以交付后)
🛑 停。这是硬性关卡,不是可选建议。
关卡逻辑与 build-a-brand 第 4 步相同。用户说「可以交付」/「已批准」/「开始」/「就这么定」之前,不要开始打包。单说「我很喜欢」含义不明确——请确认。
交付第 4 步成果时的最后询问格式: 结尾写上「准备好就此定稿并交付套件了吗?还是想先调整什么?」然后停止并等待。不要暂存套件目录。不要移动文件。用户明确批准后,身份设定才算通过。
套件结构:
./tmp/[handle]-influencer-kit/
├── influencer-persona.pdf # HEADLINE artifact — the designed Influencer Persona PDF (never named "media-kit.pdf")
├── mood-board.png # approved composite board (~1920×1224 with title header)
├── mood-board-no-header.png # full-bleed variant used in the PDF (1920×1080, no title band)
├── persona.md # comprehensive identity spec (contract for downstream skills) — formerly brand.md, do NOT recreate as brand.md
├── identity.md # "who you are" vs "who your influencer is" + strategic direction + gap analysis + content critique — long-form
├── voice-bank.md # bios, captions (with context labels + 2 per mode), hooks, DMs, do/don't — what the PDF was built from
├── next-steps.md # Key Next Steps roadmap from Step 2a strategic direction, Step 2b gap analysis, and Step 2c content critique / gear recs; mirrored as a standalone file for downstream content calendar skills
├── images/ # 🛑 LOAD-BEARING: every image that appears in the PDF, packaged together
│ │ # the user receives a self-contained reference of all the visual assets without
│ │ # having to dig through mood-board/ and build/ subfolders. shipped at the same
│ │ # level as the PDF so it's obvious. populate with copies (not symlinks) of:
│ ├── tile_01.jpg … tile_06.jpg # 6 mood-board curated tiles used in the composite
│ ├── voice_01.jpg … voice_10.jpg # 10 voice-page curated tiles used in voice grids + categories page
│ ├── v_hook_1.jpg … v_promo_2.jpg # generated voice-page tiles after MCP JPG conversion
│ ├── mood-board.png # title-banded version (matches root-level file)
│ └── mood-board-no-header.png # full-bleed version embedded in PDF page 3 (matches root-level file)
├── mood-board/ # raw source assets (kept for re-generation, not for end-user browsing)
│ ├── curated/ # individual full-res user photos
│ ├── voice-curated/ # 10 tiles pulled from feed for the voice pages (2 per mode, distinct from mood-board tiles)
│ └── generated/ # raw atmosphere tile URLs generated for mood board + voice pages
├── build/ # build-time sources — keep for re-renders
│ ├── mood-board.html # title-banded mood-board HTML rendered by html_to_png
│ ├── mood-board-no-header.html # full-bleed mood-board HTML rendered by html_to_png
│ ├── asset-url-map.md # raw generated URL → MCP JPG URL map used by the final PDF
│ └── influencer-persona.html # source notes for shared_head + body_pages (never named "media-kit.html")
└── README.md # how to feed this kit to other skills
必须包含 images/。 第 5 步打包套件时,将 PDF 中实际使用的所有图片复制到 ./images/,作为面向用户的素材目录。mood-board/ 和 build/ 文件夹保留,用于重新生成和调试——其中包含原始素材、渲染用 HTML 和 URL 映射,浏览起来容易让人困惑。用户的直观理解是「我想要一个文件夹,里面放着最终用在套件中的照片」;images/ 就是这个文件夹。请复制文件,不要使用符号链接(zip 和 Google Drive 都能妥善处理副本;符号链接在这两种情况下都会失效)。
不随套件交付示例帖子。 这个技能的早期版本包含图片和文案配对组成的目录。该设计已删除——语气库中的文案模式示例已经展示了如何在具体语境中体现语气,而加入图片和文案配对只会增加工作量,并不会交付明显更好的成果。需要体现用户本人形象的下游技能,应将用户精选的照片用作运行时参考;此技能不会生成用户的伪造形象。
persona.md 结构 — 参见 references/persona-md-template.md。必须包含:
- 快速参考区块(账号名、细分领域、3 个词概括的语气、3 个词概括的美学风格、真实性调节、字体组合)
- 完整身份设定(真实的你 + 网红形象的你,并明确说明调节程度)
- 战略方向 — 第 2a 步选定的路径(细分领域标签、契合原因、变现概况、内容负荷、当前表现出色的人)
- 差距分析 — 当前状态 → 目标人设,缺少的内容(内容类别、形式、发布频率、语气、美学风格、粉丝层级)
- 内容点评 + 装备建议 — 第 2c 步提出的制作质量建议,包括具体推荐的装备/工具
- 视觉美学(配色、灯光、场景、摄影风格、主体、禁忌、与现有主页网格的关系、字体:fontDisplay + fontBody)
- 语气(听起来像什么/绝不是什么样/形容词/禁忌)
- 简介文案变体
- 文案模式
- 开场钩子
- 私信 + 评论区语气
- 应做与不应做
- 参考创作者(包含维度 + 值得借鉴之处)
- 关键后续步骤 — 与 PDF 最后一页展示的 4–6 张卡片相同;此部分是规范来源,PDF 页面应从中读取
- 如何与其他技能配合使用 — 说明其他 Pika 技能(
ugc-ads、podcast、founder-product-video、app-sizzle、app-store-screens)如何读取此套件。例如:「ugc-ads:从 voice-bank.md 的钩子文案中提取语气;从 mood-board/curated/ 中的精选照片提取形象参考;视觉美学部分的形容词决定场景/灯光;任何屏幕文字都使用已确定的字体组合。」
README.md — 1 页指南:
- 套件包含哪些内容
- 如何将
persona.md粘贴到其他 Pika 技能的提示词中 - 哪个文件供哪个技能使用(表格)
- 注意:套件不包含内容日历;它提供的是身份设定 + 焕新路线图,而不是发布计划。
保存位置: ./tmp/[handle]-influencer-kit/。根据全局规则,所有生成的交付内容都放在 ./tmp/,绝不放在 ~/Desktop。请告知用户路径,方便他们前往查看。
最终交付消息:
- 套件文件夹路径
persona.md快速参考区块的内嵌预览- 用 1 行说明下一步如何使用:「将
persona.md粘贴到任何 Pika 技能提示词的开头,即可获得符合品牌风格的输出。」
核心原则
- 这个人就是创作简报。 先阅读眼前已有的信息(社交媒体内容、照片、他们在聊天中的表达方式),再提问。不要问你已经能从输入中找到答案的问题。
- 描述一个具体的人,而不是一个小众标签。 不要写“生活方式创作者”——要描述真实的这个人,包括他们真正喜欢的舒适剧集,以及他们高中时的真实模样。
- 真实 > 精致。 用户提供了真实照片时,真实照片永远优于 AI 生成的照片。GPT-image-2 只用于填补情绪板在氛围呈现上的空缺,绝不重新生成用户的真实人物。
- 每项输出都要避免套路化。 视觉美学测试、文案测试、该做与不该做测试:这能不能套用到其他任何人身上?如果能,就重写。
- 明确说明真实感调节幅度。 persona.md 必须写明哪些特质经过了强化,哪些符合真实的自我。隐藏调节幅度会让身份显得不真诚。
- 渲染并阅读每一份文本素材。 打开文件,以陌生人的视角阅读。如果文案看起来能出现在任意一个网红主页上,就重写。
- 审批关卡必须严格把关。 三个关卡(身份 → 情绪板 → 语气 → 发布)。创作方向 ≠ 审批通过。
- 输出到
./tmp/,不要输出到~/Desktop(遵循全局规则)。 - 生成任何图像时,始终使用
provider="gpt-image-2"(遵循全局规则)。
质量标准——不可妥协
反套路测试
交付任何内容前,先问:这个身份能不能原样套用到另一个创作者身上? 如果能,就还没完成。
强有力的创作者品牌 = 具体的人 + 具体的观点 + 第 3 步确实能够呈现的具体视觉美学。 薄弱的创作者品牌 = 氛围感 + 形容词 + “真实 + 有抱负 + 以社群为中心”。
文案标准
好的创作者文案是什么样的:
- 有真实的观点:“有声书也算阅读。不服来辩。”
- 点出真实的瞬间:“我第三次在办公室的工位上哭了”
- 信任读者:不解释过度,不说“作为一个一直以来都……的人”
- 有时会自相矛盾(真人就是这样)
糟糕的创作者文案是什么样的(绝对不要这样写):
- “活出真实的自己 ✨”
- “踏上……之旅”
- “分享我对……的热爱”
- “作为一名 [身份],我相信……”
- 任何看起来像 Canva 引言卡片模板的内容
美学标准
情绪板必须让人感受到这个人的特质。 如果用户没有明确说出某种美学风格,情绪板却标注为“清新女孩风米色”或“暗黑学院风”,那就是失败。情绪板应该很难用一个 TikTok 美学风格词来概括;它应该展现一个具体人物的视觉世界。
语音规范
- 每条示例配文都必须通过朗读测试。读一遍。如果听起来不像真人说的,就重写。
- 身份设定中的禁用词绝不能出现在任何示例中。
- 脆弱的一面可以展现;刻意表演脆弱不行。如果脆弱模式的配文读起来像是为了吸引互动而写的备忘录应用截图文案,就重写。
🛑 硬性规则:绝不能使用 AI 创作者腔。 这是最常见的失败模式。AI 腔会模仿“随性的创作者式俏皮话”,每次都套用相同的句式。你为用户撰写的任何示例文案中,都禁止使用以下句式:
- “apparently i [做了某事] / moved / became [某种人] now” — 假装自我发现
- 用破折号插入俏皮话 — “i moved to boston — apparently — to wear coats”
- 用加号连接“[某事物] + [相关事物]”列表 — “one drink + a fake errand”
- 刻意编造、实则千篇一律的古怪细节 — “fake errand”、“fake date”、“the third time i [某事]”、“the [universe/algorithm] knew”
- “I'm just a girl who...” / “I'm not [极端情况] but [普通情况]” 句式
- “real ones know” / “we don't talk about [某事]” / “iykyk” / “no thoughts just [某事]”
- 表面上自嘲、实则自我推销 — “apparently I'm a wool-coat person now”
- 清单式极简诗句 — “two drinks. one walk. no thoughts.”
- 没有铺垫,结尾却故作会心一笑的观察口吻
测试方法: 把示例配文大声读出来。如果你觉得任何创作者都能原样发布,且完全不违和,那就是 AI 腔,不是这位用户的声音。重写。
改进方法: 用户抓取到的配文就是他们的声音。直接从你在步骤 1 读到的帖子中提取用词、句子节奏和表达能量。如果抓取失败,或账号配文很少,就参考用户对 4 个标准问题的回答,以及他们在聊天中的表达。persona.md 的“听起来像”部分应尽可能使用用户的直接引语——优先引用他们的配文,其次引用他们在聊天中的表达,而不是编造“创作者风格”的近似文案。如果他们实际的表达平实直接,品牌声音就应平实直接;不要擅自添加他们没有要求的“俏皮感”。如果他们明确要求“更有趣 / 少点冷淡”,就通过更具体的真实生活观察来增加趣味性,绝不能使用以上禁用句式。
引擎选择:gpt-image-2
所有生成任务默认使用 gpt-image-2,并设置 quality: "medium":
- 最擅长遵循包含不同角色多样性的提示词。
- 最能遵守禁止出现文字的要求(情绪板拼贴块尤其重要)。
- 原生支持默认的 6×2 情绪板拼贴布局所需的 9:16 竖版比例;如果使用备用的 4×3 布局,则使用 4:3 横版比例。
避免使用 nano-banana-pro(会在图像中生成杂志风格文字)。只有用户明确要求制作 2K/4K 印刷级图像时,才使用 seedream。
运行时间预期
提前告知用户大致总耗时。
| 阶段 | 耗时 | 备注 |
|---|---|---|
| 阶段 0 → 步骤 1(信息收集 + 问答 + 社交内容抓取) | 5–15 min | 由用户掌控节奏;一批问题;抓取任务并行运行 |
| 步骤 2(身份摘要) | 2–4 min | 全部为文本;用户阅读并批准 |
| 步骤 3(情绪板:字体选择 + 筛选 + GPT 补图 + 合成) | 6–10 min | 使用 gpt-image-2 生成图像,并通过 html_to_png 渲染 HTML/CSS 合成图 |
| 步骤 4(Influencer Persona PDF:声音初稿 + 10 张新生成拼贴块 + 10 张筛选出的拼贴块 + HTML 布局 + MCP JPG 转换 + html_to_pdf 渲染) | 12–20 min | 最耗时的步骤。约 10 次 gpt-image-2 生成任务并行运行,筛选图像,通过 MCP 渲染图像,渲染 HTML 和 PDF,并进行 JPG 转换以确保文件小于 50 MB 上限。 |
| 步骤 5(打包工具包) | 2–4 min | 组装文件 + README |
总计:实际耗时约 30–60 分钟,不包括等待用户回复的时间。
承重短语
用于 gpt-image-2 提示词的逐字锚点(或维系整个流程的程序性规则)。简化附近的文字时,不要改述或删去这些内容——它们是经过验证的行为依赖,并非写作风格。本文件其他位置的每个条目都会以内联形式引用,格式为 (load-bearing — …; see Load-bearing phrases section)。
构图锚点(修正 AI 痕迹)
"NOT a styled flat lay / product hero shot / stock food photo"— 附加到每条 Promo 模式的图块提示词,以及任何包含置于表面上的物体的提示词中。缺少它时,gpt-image-2 会退回到居中的产品构图,之后的 CSS 处理也无法补救。第 4d.5 步提示词公式中有引用。"generic bathroom"/"generic cluttered vanity"/"slightly cluttered nightstand"— 环境上下文锚点,可让模型从影棚布景构图转向有生活气息的情境构图,同时不虚构用户真实的家或身体。与上面的负面锚点搭配使用。第 4d.5 步的示例中有引用。
身份保留锚点(自拍/面部内容)
"faceless"、"hand obscuring face"、"phone obscuring face"、"back-of-head 3/4"— 所有自拍模式生成都必须使用这些承重锚点。缺少其中任何一个,gpt-image-2 都会虚构用户的脸,破坏“这确实是她本人”的锚点(第 3 步中的硬性规则)。第 4b 步的语气图像和第 3 步的硬性规则中有引用。如果 gpt-image-2 因内容政策原因拒绝原始措辞,在删掉“selfie”一词,并将其改写为用手持手机拍摄、由手持手机遮住面部的身体取景照片后,重试一次;不要重复提交被拒绝的提示词。
图像内容防护规则
"NO text anywhere in image"— 每个生成的图块都必须包含,无一例外。缺少它时,gpt-image-2 会在瓶子、围巾、书籍和日记页上生成伪造的品牌标签。第 3 步必做检查 #3 和第 4d.5 步示例中有引用。"social-content atmosphere only"— 用于情绪板生成的框定语。它会引导 gpt-image-2 避开愿景板/壁纸/艺术印刷品的感觉,转向创作者信息流的感觉。第 3 步来源优先级 #6 中有引用。
程序性锚点
- 为每条含面部的提示词指定一种具体族裔 — 否则 gpt-image-2 默认生成较浅的肤色。应在整组内容中有所变化。第 3 步必做检查 #6 中有引用。
- 在将生成的 PNG 嵌入 PDF 前,先通过
html_to_png进行渲染 — MCP 的 JPG 转换能让最终 PDF 控制在 50 MB 上限内,还能让 CSS 滤镜/叠加效果与生成图块附近的真实照片风格相匹配。这是文件大小和呈现方面的规范;无法补救糟糕的构图。
语气锚点(说明文字)
- AI 创作者语气禁用清单 — “apparently i [做了某事] now”、用破折号括起来的诙谐插语、用加号连接的“[x] + [y]”列表、“fake errand”、“I'm just a girl who…”、“real ones know”、“iykyk”、“no thoughts just [事物]”、清单式极简诗意。每条示例说明文字都要依据此清单进行检查。清单全文位于 Quality Standards § Voice Standards § HARD RULE: Never write in AI-creator-voice。请将该清单视为承重内容——新增一种说明文字模式的示例却不根据此清单重新检查,是语气库悄然退化的首要原因。
维护
编辑此技能时:如果修改了内联引用这些短语的部分,请保留短语原样,不要改动。如果要修改某个短语,请先在本节中修改,再同步更新所有内联引用,并在提交说明中写明原因。
故障模式
| 症状 | 原因 | 修复方法 |
|---|---|---|
| 身份定位读起来很普通/似乎谁都适用 | 跳过了步骤 2 中要求具体化的环节;默认写成了一堆形容词 | 重写时加入真实观点、真实时刻,以及用户真正喜欢的舒适剧集。重新进行反平庸测试。 |
| 情绪板像是一键套用的单词美学预设 | GPT-image-2 提示词引用了美学标签(“clean girl”“dark academia”) | 从提示词中删去美学标签。提示具体的视觉特质(温暖的窗边光线、桌上的纸张、喝了一半的饮料等),不要提示元标签。 |
| 情绪板全部由生成图构成,没有精选图片块 | 用户提供的图片没有保存到磁盘(在聊天中粘贴的截图没有文件路径);技能没能解决文件路径问题,而是妥协并用 GPT 生成的替代图顶上 | 先解决文件路径问题。请用户将文件保存到 ./tmp/[handle]/grid.png(或类似位置),或者直接从 Finder 拖放实际文件,而不是粘贴截图。不要用生成的替代图取代用户真实生活中的事物。 |
| 生成了用户真实对象的假版本(他们的狗、他们的脸、他们的车) | 把用户的真实对象当成“用 GPT 填补”的空缺 | 硬性规则:绝不要生成用户的脸、宠物、伴侣、朋友、家人或反复出现的具体物品。这些只能来自他们的照片。GPT 生成氛围——房间、光线、天气、环境以及某类物品。用户会告诉你“那不是我的狗”,而且他们说得对。 |
| 情绪板看起来像库存图库/iStockphoto,密度过高 | 图片块太多(24 个以上)、精修程度一致、色调一致、像影棚拍摄般干净 | 严格使用 12 个图片块,尺寸为 1920×1080。色彩可以在符合身份定位的范围内变化。真实感快照优于广告大片般干净的画面。用户精选图片块定下“真实感”的基调;生成图片块要匹配这种质感,绝不能过度修饰。 |
| 情绪板的配色收缩成一种颜色(例如“只有棕色”) | 每条生成提示词都指定了相同的主色调 | 配色协调没问题,但单一色调会显得乏味。即便是温暖干邑色调的身份定位,也可以在用户生活中确实共存的地方加入奶油色、鼠尾草绿、灰粉色、深海军蓝。变化光线和场景,而不只是变化主体。 |
| 示例文案听起来像创作者模板填充内容 | 用的是“创作者口吻”,而不是这位创作者本人的口吻 | 重新阅读用户实际抓取到的文案和个性问答。从中提取措辞、表达能量和句子节奏,再据此重写。 |
scrape_social 返回“not found” | 账号名拼写错误或平台不对(给了 TikTok 账号名,却以为是 IG) | 与用户确认账号名,修正后重试。 |
将品味相关 URL 传给 scrape_social 后失败 | Spotify / Depop / Letterboxd / 个人网站属于品味信号,不是 scrape_social 支持的平台 | 不要对不受支持的品味相关 URL 调用 scrape_social。记录 URL 暗示的内容;如果不明确,询问用户想从中借鉴哪个方面。 |
scrape_social 返回“private account” | 账号是私密账号 | 请用户暂时将账号设为公开,或在聊天中粘贴 5–10 条近期文案。如果做不到,请标注语气库是根据聊天回答推断而来,并谨慎撰写文案示例。 |
scrape_social 被限流 | 平台对工作进程进行了限流 | 等待 60s 后重试一次。如果仍然被限流,则改为手动粘贴文案。 |
scrape_social 返回了帖子,但没有文案文本 | 账号只有照片/Reels,没有文案内容 | 使用简介和聊天中的语气作为语气信号。在 persona.md 中注明无法获取文案,因此其他技能知道语气是推断得出的。 |
尝试使用 Reels 封面时出现 URL signature mismatch | 使用或修改了临时 IG visual_media_url/已签名的封面 URL,而不是持久视频资源;已签名封面 URL 的查询参数必须保持原样,且不是可靠的精选图片块来源 | 对仅提供账号名的 Reels 账号,精选图片块不要使用已签名的封面。改用可持久访问的托管 .mp4 media_url(例如 cdn.pika.art),并调用 extract_frame(video_url: <durable_rehosted_mp4>, time_s: 0) 来创建图片块。 |
| 从 Reel 提取的精选图片块带有烘焙进去的说明文字/标题叠层 | 将提取的 Reel 帧视为已获批准,跳过了素材采集时的 analyze_media OCR/无文字检查,或者抽取了创作者文字出现后的片段中间帧 | 从可持久访问的托管 .mp4 提取第 0 帧/time_s: 0,然后在放置前对候选帧调用 analyze_media。如果第 0 帧中有可见文字、标题卡或嵌入式说明文字,则舍弃该 Reel,或尝试更晚的关键帧,并在使用前对其进行同样的 analyze_media 无文字检查。情绪板和语气页的图片块上不得有文字;最终 PDF 质量检查只是最后的补救措施。 |
| 用户说“再多一点 X”,但没有批准 | 将创作方向当成了批准 | 纳入这一方向,重新生成相关成品,然后再次请求批准。不要跳过这一关。 |
| 情绪板上有明显未对齐/重叠的图片块 | HTML/CSS 网格尺寸或 object-position 值有误 | 重新检查图片块尺寸和网格间距。使用 html_to_png 重新渲染。不要交付对齐错误的情绪板。 |
| 生成的角色默认是白人/浅肤色 | 未在提示词中指定族裔时 gpt-image-2 的默认行为 | 对每条有人脸的提示词明确指定一种族裔,并在整组中有所变化。参见 references/aesthetic-prompts.md 中的模式。 |
persona.md 未明确说明真实性调节档位 | 把“真实/强化/不同”当成了私下决定,而不是公开规范 | persona.md 必须明确写出这一点。下游的其他技能会读取此文件,因此需要知道哪些方面经过强化。 |
| 技能跳过了策略讨论,直接进入身份定位定稿 | 把步骤 2 当成只是“起草 identity.md”,而不是由四部分组成的坦诚交流环节 | 步骤 2 分为四个部分(2a 策略方向、2b 差距分析、2c 内容点评 + 设备、2d 身份定位定稿)。跳过 2a–2c 是最常见的失败模式——用户来这里是为了坦诚交流,而不是包装。 |
| Influencer Persona PDF 中任何位置标注了“Media Kit” | 用户说要移除时,仍沿用了旧命名 | 封面眉题写“Influencer Persona · [year]”,PDF 文件名为 influencer-persona.pdf,HTML 文件名为 influencer-persona.html。整个套件中都不应出现“Media Kit”。如果发现,请重命名。 |
| 语气页的 2×2 网格溢出页面右侧或底部 | 使用了 position: absolute 并手动调偏移量,或使用了不对称内边距(例如 100px 120px) | 四边均使用 80px 的相等内边距;采用 flex/grid 布局,并明确设置 800×920px 网格容器,每个图片块设置 width:100% / height:100%。参见步骤 4 中页面序列的关键布局规则。 |
| 关键后续步骤页的卡片下方有 300+ px 的空白区域 | 网格行根据内容自动调整大小;flex 容器中多余的高度没有传递到各行 | 设置 .next-grid { height: 720px; grid-template-rows: 1fr 1fr 1fr; },让 3 行在明确的高度范围内均匀分布。参见步骤 4 中最后一页的页面序列关键规则。 |
| 套件中交付了联系人卡片/“let's work together”页面 | 沿用了旧版的参考资料与联系信息末页 | 最后一页应为关键后续步骤,而不是联系人卡片。在这项技能中,用户要定义的是自己的身份定位,而不是品牌合作联系表单。 |
| 内容类别卡片照片裁掉了主体的下巴,或把错误的对象放在中心 | 4 张卡片统一使用 background-position: center | 每张卡片都应单独设置 background-position(例如半身照使用 50% 20%,俯拍厨房画面使用 50% 35%,主体居中的照片使用 50% 50%)。图片容器应为 300×400,而不是 240×320。 |
| PDF 每页顶部和底部都有巨大的白边 | 调用 html_to_pdf 时忘了传入 pdf_options.paper_size——仅有 @page CSS 规则还不够;工具默认使用 US Letter(792×612,宽高比 1.29),而 1920×1080 HTML 会被嵌入其中,形成留白 | 始终传入 pdf_options: { paper_size: {width: 1920, height: 1080, unit: "px"}, margins: {top:0, right:0, bottom:0, left:0, unit:"px"} }。渲染后,将 PDF 作为 application/pdf 调用 analyze_media,并设置 all_pages: true,要求它标记白边留白或任何非 16:9 的页面。 |
对图片密集的最终 PDF 使用 analyze_media(all_pages: true) 超时 | 多页 PDF 栅格化耗尽了预算,Gemini 尚未处理完所有页面 | 只有在有可移植证据时,才使用步骤 4e 的备用方案:html_to_pdf / task_status 结果中的 page_count: 12(若存在,pages[] 长度也为 12)、原始 body_pages.length === 12,以及明确设置的 1920×1080 pdf_options.paper_size。然后对第 1 页到第 12 页分别使用 page: <n> 运行 analyze_media。如果缺少 page_count,则以较小尺寸重新渲染,或停止并返回 pdf_structural_metadata_unavailable;不要使用本地 PDF 工具/库。 |
| 渲染后的 PDF 中,语气页 AI 图片块看起来仍像库存图库 | 提示词构图像库存图库,或者最终 body_pages 仍引用原始生成的 PNG,而不是经 MCP 转换的 JPG URL | 使用更有生活气息的场景提示词重新生成。然后更新 asset_url_map,替换 body_pages 中的原始生成 URL,并在重新渲染前检查源备注中是否残留过时的原始生成 URL。 |
最终套件交付时没有 images/ 文件夹 | 认为现有的 mood-board/ 和 build/ 子文件夹已经足够 | 在步骤 5 打包时,创建 ./images/ 并复制 PDF 中实际使用的每张图片(精选图片块、经 MCP 转换的生成图片块、情绪板变体)。用户期望有一个能集中浏览“套件中的所有照片”的文件夹;原始资源文件夹不能替代它。 |
| 用户尚未明确批准,套件就已交付 | 把“我很喜欢”或“再多一点 X”误认为可以交付 | 只有明确批准才算数。如果意思不明确,就再次确认。这个关卡存在的原因是套件会将每项决定定稿。 |
html_to_pdf 返回“File too large”(>50 MB) | 以完整分辨率嵌入了 gpt-image-2 输出的 PNG。10–20 张 PNG,每张 1–3 MB,很容易超过上限。 | 必须:在最终渲染前,通过 html_to_png 将大型 PNG 图像输入转换为 JPG q85。工作流参见步骤 4d。对于 12 页的套件,最终文件应远低于 50 MB。 |
| 纹理色样/颜色色样调色板页看起来“全是布料”或“全都很无聊” | 试图用材质纹理(羊绒、牡丹、丝绸、皮革、天鹅绒、桉树)让“视觉美学”页更有趣,但这些纹理最后看起来都像同一种布料质感——它们无法告诉品牌合作伙伴创作者实际会创作什么内容。 | 将“视觉美学”页替换为内容类别页(第 4 页)。使用 2×2 网格展示 4 张卡片,每张卡片包含图片 + 类别名称 + 1 行描述 + 3–4 种帖子类型示例。类别应根据用户的实际动态内容得出。这才是品牌合作伙伴想看的内容。 |
| 语气页的图片与模式不匹配(例如自拍页上出现氛围风景) | 把语气页当成“任意美学图片”,而不是能展示该模式的图片 | 如果模式是“随性自拍”,就展示真实自拍(镜子自拍、四分之三角度的后脑勺、手机遮挡脸部)。如果是“脆弱坦诚”,就展示安静时刻的画面(没整理的床、蜡烛、日记本)。图片要符合模式意图——这正是展示特定情境中语气的全部意义。 |
| 语气页重复使用了情绪板图片块 | 为节省生成成本而默认使用情绪板图片 | 语气页需要全新图片——从抓取结果中选用不同的帖子(使用其他 image_versions2.candidates[0].url 索引)并生成全新的图片块。情绪板展现视觉世界;语气页则要在全新的情境中展示语气。 |
| PDF 第 3 页上的情绪板周围有大片空白奶油色背景 | 使用了 mood-board.png(带标题栏)并设置了 background-size: contain | 预先渲染一个 mood-board-no-header.png 变体(1920×1080,仅包含图片块网格,不带标题),并使用 background-size: cover 以满版方式嵌入。带标题栏的版本继续作为单独的磁盘成品。 |
| 满版情绪板页面的左右边缘(或行间)可见细细的奶油色条 | 无标题版本 HTML 沿用了标准外边距/留白 | 无标题版本必须使用零外边距、零间距,并让图片块尺寸精确铺满 1920×1080。独立保存的磁盘版 mood-board.png 保留间距和标题。 |
| 经过 CSS 处理后,AI 图片块仍然有 AI 感 | AI 痕迹来自构图,而不仅仅是摄影风格——展示处理无法重做构图。常见例子:大理石上的护肤品平铺照和牡丹、丝巾上的香水、摆放得完美无瑕的肉桂面团。 | 使用将物品置于真实生活场景中的提示词重新生成——手持拍摄 + 实际杂乱环境 + 局部入镜且看不见脸的人 + “NOT a styled flat lay / product hero shot.” 提示词公式和 Promo 模式示例参见步骤 4d.5。 |
| gpt-image-2 因内容政策拒绝生成自拍风格提示词 | 提示词用了“mirror selfie”“selfie”或“phone obscuring face”等有风险的词 | 使用符合政策的措辞重试一次:删掉“selfie”这个词,改为描述手持手机构图的镜头或手持手机遮住脸部,并确保看不到生成的人脸。不要重复被拒绝的提示词。 |
| html_to_pdf 因“MIME type 'text/html' is not in the allowlist”拒绝图像资源 | 在 upload_asset 之后,某个并行子 shell 中的 curl PUT 悄悄丢弃了 Content-Type: image/jpeg 标头;R2 将 JPG 存储为 text/html MIME 类型 | 每批 PUT 之后,使用 curl -s -I <url> | grep content-type 验证,并重新 PUT MIME 类型错误的资源。也可以顺序 PUT(但注意 5 分钟 URL TTL——见下一行)。 |
| Cloudflare R2 在 PUT 时返回 403 ExpiredRequest | 预签名 URL 的 TTL 为 300s。若顺序执行 curl PUT,每个文件耗时 8–12s,那么连续上传 10 个以上文件就会让最后几个 URL 超出有效期。 | 使用 (curl ... &) 子 shell + wait 并行运行 PUT。在一个紧凑周期内完成签发和 PUT。如果遇到 403,就重新签发;不要尝试延长已过期的 URL。 |