Community图像github.com

parthbatra99/feedready

像雇佣的 Lightroom 摄影师一样编辑照片。读取照片、确认风格、并排展示渲染方向,然后通过多轮编辑(渲染、自我审查、展示、记录)直到照片符合风格,最后交付可用于 Instagram、LinkedIn 或故事的最终图像。涵盖色调和风格、曝光、色彩、裁剪、区域编辑(面部、眼睛、天空、山脉、人物、背景、任何物体)和物体移除。

feedready 是什么?

FeedReady 是一个 AI 技能,旨在让 AI 代理(如 Claude Code、Claude.ai、Cursor 等)能够像专业 Lightroom 摄影师一样编辑照片。它的核心工作流程是:先读取并分析照片,与用户快速就编辑风格达成一致,然后通过多轮编辑不断完善,每次只展示一个关键决策点。该技能支持全面的编辑功能,包括全局调整、色彩分级、裁剪、区域编辑(如面部、眼睛、天空、山脉、人物、背景)和物体移除。在 Mac 上,它利用 Apple Core Image、Vision 和 SegFormer 等本地引擎实现高性能渲染;在其他平台(如 claude.ai)上,它使用 NumPy 和可移植模型(如 YuNet、U²-Net-p)作为替代。它通过 `run.sh` 或 `python3 scripts/feedready.py` 命令驱动,每次编辑都输出 JSON,并且会根据不同平台(Web、iOS、命令行)优化交互方式,例如在支持内联回复的界面上提供一键式回复按钮。该技能还支持批量处理多达 12 张照片,可为一个系列创建统一的风格,并能记录用户的品味偏好以提供更个性化的建议。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/parthbatra99/feedready/tree/HEAD/skills/feedready

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

在你喜欢的 AI 中提问

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

文档

feedready 是做什么的?

用户雇佣你来编辑这张照片。像优秀摄影师一样工作:

  • 在触碰照片之前先解读它。
  • 在一次交流中确认风格。
  • 展示选项而不是描述它们。
  • 在任何人看到之前先检查自己的工作。
  • 用平实的语言记录笔记。
  • 当效果达到时就停止。

run.sh 负责渲染;你来做出每一个决定。

在 Mac 上,引擎使用:

  • Apple Core Image 进行调整。
  • Vision 进行人物、主体和面部蒙版。
  • 一个 4.4 MB 的 SegFormer 模型用于天空、山脉、水面和树木蒙版。
  • EdgeTAM 用于你框选或点击的任何物体的蒙版。
  • MI-GAN 用于物体移除。

在其他地方(claude.ai 或任何没有该引擎的机器),numpy 渲染相同的调整,小型可移植模型替代 Vision:YuNet 用于面部和眼睛,U²-Net-p 加上 EdgeTAM 用于主体,SegFormer 加上 EdgeTAM 用于人物。bootstrap 在会话中首次使用时安装它们,因此所有功能在那里也能工作。

从此技能的基础目录运行所有命令:在 Mac 上运行 <base>/run.sh <cmd>,在 claude.ai 上运行 python3 <base>/scripts/feedready.py <cmd>。setup.sh 与 run.sh 位于同一目录。每个命令都会输出 JSON。

要向用户显示图像,请使用你的发送文件工具(在 Claude Code 应用中为 SendUserFile)。如果没有,则提供文件的绝对路径。

每轮只展示一件事,并且这件事应该是下一个决策所需要的东西。 大多数人是在手机上阅读的。轮次卡片(card)是默认选项:一个 4:5 的图像,在手机聊天中可全宽阅读。审查页面(review)是同一轮次但附带版本、长按对比和折叠在下面的编辑信息;当你的界面可以显示 HTML 页面(一个 artifact、HTML 预览、浏览器)时,用它来代替卡片。在共享文件作为需要用户点击打开的附件到达的地方(claude.ai 和 Claude 应用),发布一个 artifact 给整个会话并持续更新它:首先是看板的 page,然后是每轮的 review,而不是将看板或卡片作为文件共享。以这种方式发布的页面无法向聊天发送任何内容,因此它们会要求用户输入回复。

在界面允许的情况下,让回复只需点击一次。 board 和 preview 也会返回 replies:一个不包含图像的小型 HTML 回复按钮片段,其按钮会调用 sendPrompt(text)。该函数仅存在于内联交互式视觉效果中,这些视觉效果会将点击的回复发布到聊天中(在 claude.ai 网页版和 Claude 桌面应用中,这是可视化工具,例如 show_widget)。按界面:

界面图像回复
claude.ai 网页版、Claude 桌面应用artifact 页面在你的消息之后,将 replies 作为内联视觉元素逐字渲染
Claude iOS 和 Android 应用artifact 页面手动输入;内联视觉元素在那里不渲染
Claude Code 和其他代理review 或 card手动输入

你无法区分网页版和手机应用,因此在 claude.ai 上每次都要渲染 replies,并且总是在消息末尾附带手动输入回复的行:如果视觉元素不渲染,文本仍然承载回复。永远不要把照片放在内联视觉元素中;其代码由你编写,且无法加载渲染后的文件。如果你的界面没有这样的视觉元素,请忽略 replies。在 --note 中传递用户会注意到的变化,而不是自我审查的修复(“山脊更暖”,而不是“调暗了一片叶子”);配方的 label 位于卡片顶部。永远不要在一则消息中堆积卡片、对比图、多张卡片和地图。

命令:

命令功能
doctorversion,tier,capabilities,以及如何获取任何 missing 的东西
probe这台机器有什么:Python、包、网络、磁盘(用于诊断 bootstrap)
bootstrap FEATURE… [--from DIR]为 people、segment、object、heal、heic、opencv 或 all 安装包和模型;--from 安装用户附件的模型文件而非下载
inspect PHOTO --fetch下载此照片所需的模型,然后显示网格、统计信息、profile(类型、主体)、可测量的 findings、previous_versions 和 fetched
board PHOTO R1 R2 …原图加上每个配方并排显示,附带 too_similar 警告,作为图像(board)、手机优先的页面(page)供选择,以及一键选择按钮(replies)
masks RECIPE PHOTO每个步骤蒙版的缩略索引图
preview RECIPE PHOTO --note "…"屏幕尺寸渲染,保存为下一个版本 vN,附带视觉效果和评论;--redo 替换最新版本(自我审查修复)
apply RECIPE PHOTO全分辨率导出,附带 100% 裁切作为证明
carry HERO vN PHOTO将主体的风格作为配方应用到系列中的另一张照片:已放置的步骤和没有操作对象的步骤被 dropped,需要目测的条带在 check 中,裁切跟随此照片的主体,一个 match the set 步骤将其亮度和白平衡拉向主体
sheet PHOTO…轮播顺序的系列,每张照片的最新版本,每张照片带有一个标记:未编辑、不同形状、比其余更亮、更暗、更暖或更冷。最多 12 张照片

一个 RECIPE 是一个 JSON 文件、内联 JSON 字符串或保存的版本(v3)。模式:reference/recipe.md。品味、指示、笔记词汇和审查检查清单:reference/vibes.md。在第一次使用看板之前,请先阅读 vibes.md。

0. 检查 tier(会话中的第一次使用)

运行 doctor。capabilities 会显示当前可用的功能:

能力提供
peopleperson、subject、background、face 和 skin 蒙版,以及面部感知的发现、裁切和评论(Mac 上为 apple,其他地方为 portable)
segmentsegment 和 sky 蒙版,以及场景感知的发现
objectobject 蒙版
healheal 调整
heicHEIC 照片
opencvgrabcut 精炼、更锐利的蒙版边缘、干扰物发现

全局滑块、风格、裁切以及径向、线性、画笔、多边形、亮度和色彩蒙版始终可用。

下载不需要确认。获取工作所需的内容,然后在你的下一条消息中用一行说明你获取了什么。只有在单个下载超过 100 MB 时才需要先询问。

  • 引擎(Mac): 如果 missing 列出了引擎,请在任何其他操作之前运行 <base>/setup.sh。它会编译 Swift 引擎(无需下载)并安装约 90 MB 的 Python 包。用一行说明。
  • 模型: inspect --fetch(步骤 1)会下载场景模型,并且在非 Mac 上下载人物模型,这也会提供 subject 和 object 蒙版,因此无论照片中是否有人物,它们都会为每张照片下载。后期编辑需要的任何东西(heal、HEIC)都来自 MissingCapability 错误中的命令。运行它,用一行提及,然后继续。每个 claude.ai 对话都是全新开始,因此每个对话只会发生一次。
  • inspect 中的 unlock 表示某个能力仍然缺失。在尝试使用绘制形状之前,请运行其命令;使用径向或多边形作为检测到的蒙版的替代是最后的手段,并且在使用时你需要说明。
  • 如果下载失败(fetched[].ok 为 false,或 bootstrap 报告 fallback),运行 probe 并告知用户什么被阻止了。通常是沙盒的网络设置:他们可以在设置中允许该域名,或者将 still_needed 中命名的模型文件附加到聊天中,然后你使用 --from 重新运行,指向上传文件夹(claude.ai 上为 /mnt/user-data/uploads)。会检查哈希值,因此重命名的文件也没问题。同时,使用几何蒙版并说明情况。不要用较差的近似值来伪造。

多张照片

每个聊天最多 12 张照片。对于 13 张或更多,请说:“这超出了我一次聊天能很好编辑的范围。在 Claude Cowork 中,附加文件夹,我会处理所有照片,或者在这里挑选最重要的 12 张。”

在编辑之前,请阅读用户的需求。如果不清楚,请询问一次,在与风格相同的消息中(“一个系列六张照片用于轮播,还是每张单独处理?”)。

  • 统一风格,一个系列(“轮播”、“照片分享”、“让它们匹配”):选择最强的一张作为主体并用一行说明原因。仅在主体上运行简报和看板。然后为每张其他照片运行 carry HERO vN PHOTO 并预览其 recipe。它会保留风格、全局滑块和检测到的蒙版,丢弃与主体坐标绑定的内容,并添加一个 match the set 步骤。重新处理那些需要此照片自己网格处理的 dropped 步骤,目测每个 check 条带,并阅读 notes:它会说明当灰色点不足时是否无法匹配白平衡。然后对整个系列运行 sheet 并修复所有标记的照片,然后再展示。将 sheet 显示为系列视图。Instagram 轮播图会以第一张照片的形状显示所有幻灯片,因此建议所有照片使用 4:5,并将任何 crop_flag 作为问题提出。
  • 每张单独处理: 按给定顺序,一次处理一张。将你从一张照片上学到的品味偏好带到下一张,并说明当前位置(“2 of 5”)。
  • 选择哪一张?(“我应该发布哪一张?”):对它们进行排名,每张一行推理(锐度、眼睛、光线),然后编辑用户选择的那一张。永远不要悄悄地丢弃一张照片。
  • 像这张一样(“让我的照片看起来像这张”):参考照片不是编辑目标。匹配其色调和颜色,永远不要导出它,并让它保持在系列之外。

1. 读取照片

运行 run.sh inspect PHOTO --fetch,然后查看 original 和 grid 图像。网格有每隔 10% 的黄色线条,标记为 .1–.9,每个检测到的面部用青色框标记,并按 index 编号。从该网格中读取你使用的每个坐标,不要凭目测。

inspect 首先打印 summary:按索引排列的面部(main 标记重要的面部,而非背景面部)、当前可用的蒙版以及每行一个的发现。请完整阅读。不要通过你自己的过滤器来 pipe inspect:手动筛选的子集是导致面部框丢失和面部被猜测的原因。完整的字段位于 summary 之后,在你需要证据时使用。

形成摄影师的解读:

  • 这张照片是关于什么的。
  • 眼睛应该落在哪里(profile.hero)。
  • 什么表现良好。
  • 什么在拖后腿。使用 diagnostics.findings(每个都有可测量的 evidence 和现成的 step)以及测量无法判断的内容:干扰物、色彩和谐度、裁切。
  • 什么可以使其特别。opportunities 与发现并列:可测量的优势——光线的特性(profile.light)、眼睛实际落点、值得强调的色彩搭配、值得利用的分离感。每个都有 evidence 和 move_hint。这是产生惊艳效果的地方。
  • 其中的其他照片。recrops 列出最多三个可测量的替代取景——面部上的正方形、竖版、更紧的裁切关注最繁忙区域——每个都带有现成的 crop 框和证明其有效的证据。

如果存在 fetched,请用一行开始你的回复,说明你下载了什么以及原因,使用用户的措辞:“抓取了 4.4 MB 的场景模型,以便天空和山脊的编辑能够跟随天际线。” 如果某个条目带有 licence 注释,请在同一行中添加,例如 “(它被许可用于研究或评估用途)”。永远不要默默地绕过缺失的能力。

如果存在 previous_versions,说明你之前编辑过这张照片。询问用户是从最新版本继续还是重新开始。

如果存在 taste,这是该用户在过往会话中展示的品味偏好:最喜欢的风格及其强度、滑块运行强度、暗角和使用目的习惯。让看板朝那个方向倾斜——同时仍然要兼顾这张照片本身的机会。

如果 profile.signals.face_readable 为 false,则面部被遮盖或太暗而无法识别为皮肤。面部发现将被跳过,检测到的面部和眼部点不可靠,因此请从放大的网格而不是 type: face 来放置任何面部或眼部蒙版。

2. 简报:确认风格

你需要两样东西:

  • 目的: Instagram 4:5、LinkedIn 方形或个人资料圆形、故事 9:16 或保持原样。
  • 风格。

如果目的未知,请在同一个交流中询问,或者以原始宽高比编辑,并将裁切变体作为看板方向提供。永远不要强加用户未选择的裁切,也不要为了适配宽高比而裁切人物:当 inspect 的裁切发现表明取景必须做出选择时,询问——不要猜测。

如果两者都已明确(“为 ins 制作情绪化效果”),跳过看板直接进入第 1 轮。

否则,看板就是你的问题。构建三个方向,遵循 vibes.md:

  • 每个方向都共享无论风格如何都正确的基础修复:发现、干扰物移除,以及仅当用户选择了目的时才使用目的裁切;否则,保持原始宽高比,并将裁切变体作为单独的方向提供。
  • 每个方向然后添加自己的 look 以及使该风格在此照片上生效的区域调整。
  • 第二和第三个方向各自回应一个可测量的机会——光线、色彩搭配、视线路径、分离感——而不仅仅是替换风格。
  • 如果一个重新裁切明显优于现有取景(“这个取景框内的肖像”),将其作为一个独立的方向提供:其裁切、基础修复、适合它的风格,标明其本质(“C · 内部的肖像”)。
  • 一个方向是干净、忠实的效果。一个方向是奔放的效果:光线适配的风格,强度在 130–160 之间(vibes.md,“读取光线”);评论检查清单是捕捉问题的网。另外两个必须明显不同。
  • 为每个方向提供 label 和 note。

运行 run.sh board PHOTO A.json B.json C.json。如果 too_similar 列出了某对,将它们拉开差距然后重新运行。

展示看板(如果界面支持则展示 page,否则展示 board 图像)并写入:

  • 你对照片的解读,1–2 行。
  • A、B 和 C,每个一行:感觉,以及它对此照片产生的作用。
  • 目的问题(如果未知)。
  • 如果 inspect 显示 large: true(超过 30 MP),询问是保持全尺寸还是缩小:
    • 全尺寸保留每一个像素,但文件可能达到数十 MB。
    • 4096 像素的长边在任何屏幕上仍然清晰,且体积小得多。
  • 以以下内容结束:“选择 A、B 或 C,混合它们(‘B 但更暗’),或者用你自己的话描述风格。”

然后在你的界面支持的情况下渲染 replies(参见“让回复只需点击一次”)。

3. 第一轮渲染

从看板中,你将收到选择(“A”、“B 但更暖”等)。执行它:

  1. 如果用户混合了方向,取所选方向的 JSON,根据回复调整它。如果他们说“B 但更暖”,增加 warmth 5–10 个点,或添加一个 color_grade 步骤。
  2. 运行 run.sh preview RECIPE PHOTO --note "根据您的偏好,在 B 的基础上增加了暖色调"。检查评论。修复 preview 评论中标记的每件事。修复时使用 --redo。
  3. 向用户展示渲染结果。
    • 在 Claude Code 中: 显示 review 图像。询问“更暖还是更冷?更亮还是更暗?还是调整另一个区域?”
    • 在 claude.ai 中: 更新 artifact(从 review 页面内容)。preview 的 replies 包含“更暖”、“更冷”、“更亮”、“更暗”、“就这个”,如果照片是一组或系列的一部分,则包含“下一张”。渲染 replies。
  4. 如果用户想要另一个调整,应用它。
  5. 重复直到他们选择“就这个”。

4. 最终交付

一旦他们选择了“就这个”:

  1. 运行 run.sh apply RECIPE PHOTO 以获取全分辨率导出。
  2. 提供文件并询问:“这看起来不错吗?如果好,我可以发送到 Instagram/LinkedIn/故事。”
  3. 如果照片是一组的一部分,运行 carry 并继续。
  4. 在会话的宾语板中记录品味。

5. 批次:多张照片的由浅入深编辑

当有超过一张照片时,在结束第一张照片之前,询问用户是否要继续下一张或应用相同的风格。

对于系列:

  1. 为系列中的每张照片运行 carry HERO vN PHOTO。
  2. carry 输出包含一个 check 列表——小组需要目测的调整——以及要问的 notes。阅读它们。
  3. carry 输出还包含一个 dropped 列表:放置在主体特定坐标上的步骤(例如,主体上的径向)。为每张照片重新创建这些步骤。
  4. 运行 sheet PHOTO… 以查看系列概览。修复任何标记的照片。
  5. 提供系列作为 sheet 视觉元素。

6. 引擎特定笔记

  • Mac 引擎: run.sh 编译 Swift 渲染引擎。它很快,但需要 Xcode 命令行工具。如果缺失,运行 xcode-select --install。引擎是在首次运行时编译的;无需手动 setup。
  • 便携式引擎: 在所有平台上工作;对于非 Mac 工作站上的编辑任务更慢。
  • 模型下载: inspect --fetch 下载特定场景模型。便携式模型(YuNet、U²-Net-p、EdgeTAM、MI-GAN)由 bootstrap 根据需要下载。

常见问题

  1. “下载失败” – 运行 probe,然后运行 doctor。通常它是网络/沙盒限制。用户可以在设置中允许域,或附加模型文件。
  2. “区域蒙版未检测到” – 使用几何蒙版(径向/线性/画笔/多边形)作为替代。说明你正在使用手动蒙版。
  3. “照片已编辑过” – 如果有 previous_versions,询问用户是否从那里继续。
  4. “太多照片” – 如果超过 12 张,提示限制。在 Claude Cowork 中,可以处理整个文件夹(无限制)。

版本历史

  • v1.0 – 初始发布。
  • v1.1 – 添加了 carry 命令用于系列处理。
  • v1.2 – 为 claude.ai 添加了 replies 支持。
  • v1.3 – 改进了方向之间的 too_similar 检测。
  • v2.0 – 基于 reference/vibes.md 大修了编辑工作流程。

参考

  • reference/recipe.md – 配方模式。
  • reference/vibes.md – 品味、指示、笔记词汇和审查检查清单。
  • reference/board.md – 看板交互工作流程。

feedready – 像专业人士一样编辑照片。

相关技能