全部技能 / 设计 / travel-photo-abstraction
设计 · Evianis/travel-photo-abstraction

travel-photo-abstraction

Analyze the photograph uploaded by the user, deconstruct its visual evidence, abstract and distill the essential relationships, then reconstruct them as a new nonliteral lower-panel composition guided by 19 bundled references. Use for CLEAN upper-photo/lower-abstraction editorial artworks with a number, date, and short phrase in the lower panel. This is abstraction and reconstruction, never style conversion or a miniature redraw. Preserve the exact user-uploaded photograph unchanged above.

风险提醒:蓝色 · 知晓即可AI 侦查报告
作者 EvianisGitHub Evianis/travel-photo-abstraction ↗Stars 749许可 Travel Photo Abstraction Source-Available License 1.0(仓库根 LICENSE,© 2026 Evianis;GitHub API spdx 为 NOASSERTION——明确非 OSI 开源许可:禁止修改/衍生/再分发)commit 96e387635e
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

流程核心是『视觉证据 → 极简符号映射』的 prompt 编排,而非算法:skill 把生成任务定义成 Deconstruct→Abstract/distill→Reconstruct 三阶段,模型必须先做源图证据清单、再映射为符号、最后重建成稀疏布局。

travel-photo-abstraction/SKILL.md
Treat the task as three deliberate operations: **deconstruct**, **abstract/distill**, and **reconstruct**. The lower panel is a new visual composition made from relationships extracted from the upper photograph. It is neither a miniature redraw nor a style-converted copy.
注:这里在做什么:用严格的三阶段措辞把『风格转换/缩略重绘』这类生成模型默认行为判为非法,逼模型走证据保留路线。references/analysis-method.md 的第 1–4 节给了可操作的证据分级(Recognition/Structural influence/Contrast/Specificity)与符号词典(mass→flat block、boundary→thin line 等),把抽象过程的每一步都锚定到源图可观察事实。

『解构-重建』由上层生成模型与下层确定性 Python 脚本分工:抽象下面板交给内置图像生成工具,拼图、微字排版与机器校验全部交给自带脚本,防止生成模型篡改照片或产出错误文字。

travel-photo-abstraction/SKILL.md
Supply the image tool with locked `USER_PHOTO` plus 3–4 selected bundled references in one generation call (the tool accepts at most five images total). Label roles explicitly: `Image 1 = USER-UPLOADED CONTENT SOURCE ONLY`; `Images 2–N = BUNDLED LOWER-PANEL STYLE REFERENCES ONLY`. Generate only `GENERATED_PANEL`.
注:输入角色锁定(Image 1=唯一内容源、2–N=仅样式)与『Generate only GENERATED_PANEL』是防扩散核心:样式参考绝不能混进内容通道,用户照片绝不能成为编辑对象。

交付物只能由 finalize_artwork.py 产出,它按固定顺序跑 compose_artwork.py 拼图 + validate_output.py 校验,任一步失败即删除输出并拒绝交付(fail-closed)。

travel-photo-abstraction/scripts/finalize_artwork.py
try: subprocess.run(compose, check=True) subprocess.run( [sys.executable, str(scripts / "validate_output.py"), str(output), "--original", str(original)], check=True, ) except (subprocess.CalledProcessError, OSError): if output.is_file(): output.unlink() raise SystemExit("FINALIZATION FAILED: invalid output removed; deliver no artwork")
注:这里在做什么:finalize 不是简单胶水——失败分支显式删除候选输出,SKILL.md 同步要求『Return an image only after the finalizer prints DELIVERY PASS』,把验证失败的中间产物从交付面物理移除。

照片像素级完整性由 validate_output.py 机器保证:把最终图顶部裁成与源图同尺寸区域,用 ImageChops.difference 做逐像素比对,要求零差异。

travel-photo-abstraction/scripts/validate_output.py
photo_match = None actual = image.crop((0, 0, source.width, source.height)) photo_match = native_dimensions and ImageChops.difference(actual, source).getbbox() is None
注:validate_output.py 依据图片相对尺寸关系定位切分线(split=source.height,lower 区=height-split,要求 1.10≤panel/photo≤1.60 且 panel 高于照片),并对下方空背景在 6 个采样点做均匀度检查(channel_span≤4.0 才算通过)、对下方区做平均亮度/中性度检查——全部为确定性规则,无 AI 主观判断。

三件微字(NO. 00X / DD MON YYYY / 大写短语)用正则硬校验 + 确定性绘制,禁止生成模型在画面里画任何文字。

travel-photo-abstraction/scripts/compose_artwork.py
NUMBER_RE = re.compile(r"^NO\. \d{3}$") DATE_RE = re.compile(r"^\d{2} [A-Z]{3} \d{4}$") PHRASE_RE = re.compile(r"^[A-Z0-9]+(?: [A-Z0-9]+){0,2}$")
注:SKILL.md 的 generation prompt scaffold 里同样写死『Text: generate no text of any kind』。日期/短语/编号三件文本是完成图的规定组成部分,但只准由 compose_artwork.py 用 ImageDraw 绘制到浅灰细字(fill=(145,145,140),字号约 min(w,h)*0.012),生成阶段带字一律判废。

19 张打包样式参考图构成『许可的视觉语法库』,与源照片的内容通道严格分离;参考只借抽象语法/疏密/留白,不借内容与旧排版。

travel-photo-abstraction/references/structural-reference-index.md
Use the selected lower panels to guide abstraction vocabulary, mark-making, scale contrast, restrained color, editorial quietness, and poetic negative space. The current `USER_PHOTO`, not the references, supplies the miniature's complete composition, aspect ratio, topology, and element coordinates. Do not copy reference subjects or exact compositions.
注:19 张 PNG 全部真实存在(PNG 头解析确认,约 836–1122 × 1402–1881 竖幅);索引表逐张标注『从它学什么』(如 011 学 extreme reduction、019 学 converging road lines)。README 的 9 张 showcase 尺寸与对应 memory-reference 完全一致,是同一批图加水印的成品展示。

安装自检与运行门禁:check_installation.py 校验全部必需文件与 19 张参考图是否齐全,缺失即 FAIL;SKILL.md 还要求在生成前确认宿主内置图像工具可调用,否则直接停止。

travel-photo-abstraction/SKILL.md
1. Run `scripts/check_installation.py`. Stop and report an incomplete installation if it fails. 2. Confirm that a built-in image generation tool is callable. If it is absent, unavailable, denied, or fails, stop and tell the user.
注:check_installation.py 的 REQUIRED 与 STRUCTURAL_REFS 与仓库实际文件清单一一对应(19 张 memory-reference PNG 按 001–019 命名断言),脚本本身是纯文件存在性检查。依赖宿主图像工具意味着该 skill 只在具备内置图像生成能力的宿主(Codex/ChatGPT 类)上可用,README 亦自述『Codex with skill support』。

2核心能力

01照片证据驱动的抽象下面板生成:把任意旅行/日常照片拆成主元素+结构轴+空间节奏,重建为带源图关系身份的非字面抽象构图
02用户照片逐像素保真:原图不缩放不裁剪原样置于上方,交付前机器比对像素零差异
03确定性微字排版:编号/日期/短语按严格正则入参,生成阶段禁字、合成阶段加字
04CLEAN 背景契约的机器质检:下方面板背景要求单色均匀近 #F3F0E8,多采样点通道跨度 ≤4.0、平均亮度≥205,超标即拒
0519 图样式库的选择式借用:依据 structural-reference-index 的关系索引挑 3–4 张参考,且样式仅供下面板
06fail-closed 交付门禁:缺源图/校验不过即删除候选并停手,绝不返回中间面板
07比例纪律的硬编码约束:抽象面板显示高度须为照片高度的 1.10–1.60 倍,越界即拒绝合成

3外部依赖

类型依赖
api宿主内置图像生成工具(built-in image generation tool)
packagePython Pillow(PIL)

4风险提醒 风险提醒:蓝色 · 知晓即可

风险提醒:蓝色 · 知晓即可
  • 照片外发给第三方图像生成平台 — 核心流程就是把用户上传照片作为输入调宿主内置图像工具,照片内容必然离开本地/进入平台处理管线;涉隐私或敏感拍摄物(人像、场所、未发布内容)时用户需自行评估平台条款——skill 内无任何本地化/脱敏选项。
  • Pillow 解析不可信图片的宿主库风险 — compose/validate 直接 Image.open 用户上传文件与生成面板并读取 EXIF(exif_transpose);畸形图片触发解码器漏洞属 Pillow 宿主环境通用风险面,skill 无沙箱。
  • 输入文件与参考文件混用的操作风险 — 19 张参考图与用户照片同为图像输入,一旦模型/宿主在单次生成调用中角色标签失效,样式参考可能污染内容通道或照片被当作编辑对象;skill 靠 prompt 措辞锁定角色,无机器侧防线(机器只校验最终合成)。
  • 纯 prompt 质量门槛高、依赖模型审美 — 『抽象得像这张照片而不是通用图标』的判定最终落在模型与人眼:机器只查像素/背景/文本/比例,抽象质量(证据保留度、关系识别)无法被脚本证明,低质量输出可能『合规但平庸』。
  • 许可限制严格 — 自拟 Source-Available License 1.0 禁止修改/衍生/再分发,GitHub API spdx 标 NOASSERTION——想改造或二次发布该 skill 的用户受法律限制,与 MIT/Apache 类 skill 不同。
  • 无标注的尺寸矛盾(低级) — README 写选『2–4』张参考、SKILL.md/索引写『3–4』张;两处均可被模型读到(若 agent 先读 README 可能产生轻微不确定),实际以 SKILL.md 为准。
风险提醒:蓝色,基本放心、少数注意。无凭证读取、无网络外发指令、无第三方代码执行——可执行面只有 4 个自带脚本,且互相只以本地路径/合法参数协作(subprocess 调用的是同目录兄弟脚本,参数有正则硬校验);唯一外部副作用是调用宿主的图像生成工具处理用户照片(本就是 skill 功能本体,且 README/SKILL 均要求确认工具可用才动手)。注意点:a) 会读写本地图像文件并产出 PNG(Pillow 解析不可信图片为宿主库风险面);b) 上传照片会作为输入发给图像生成工具,照片隐私由宿主平台条款约束;c) prompt 三阶段措辞虽防『风格转换』,仍属生成美学内容,结果好坏需人工判断;d) 授权『把照片交给外部图像工具处理』意味着照片内容会离开本地,涉敏照片用户需自行斟酌。无混淆/隐藏/下载即执行内容。

5第二遍独立确认

  • [ok] 像素保真由机器验证而非口头承诺 — validate_output.py 第 90 行附近 ImageChops.difference(actual, source).getbbox() is None + native_dimensions 判定,README『pixel-verify』无夸大。
  • [ok] finalize_artwork.py 只调兄弟脚本、无外带载荷 — subprocess 参数 = sys.executable + scripts/ 下 compose_artwork.py/validate_output.py + 本地路径与正则校验过的三文本;无 shell=True、无环境变量透传。
  • [ok] 无网络调用、无凭证读取结论 — 全仓 token 扫描命中仅两处:README git clone URL(人用安装命令)与 finalize 本地 subprocess;os.environ/getenv/keyring/api_key 等零命中。
  • [ok] 19 张样式参考真实存在且为图 — PNG 头逐一验证 memory-reference-001..019.png 均为合法 PNG,竖幅、尺寸各异;check_installation.py 的断言与文件清单一致。
  • [ok] 文本三件套仅由确定性脚本添加(生成阶段禁字) — compose_artwork.py 正则 NUMBER_RE/DATE_RE/PHRASE_RE + ImageDraw 绘制;SKILL.md 第 10、11 步与 prompt scaffold『Text: generate no text of any kind』双重印证。
  • [ok] 背景 CLEAN 契约可机器核验 — validate_output.py 6 采样点 (0.12,0.18)(0.50,0.18)(0.12,0.48)(0.88,0.48)(0.50,0.88)(0.88,0.88) + channel_span≤4.0 + lower_brightness≥205 判定存在。
  • [ok] 依赖清单完备性(有无漏掉 CLI/包) — 可执行代码只用 sys.executable/subprocess 调兄弟脚本与 Pillow(import 处显式报错提示);字体走系统字体候选列表(DejaVuSansMono.ttf/consola.ttf/Menlo.ttc)失败则 fallback load_default,非硬依赖。无 gh/git/ffmpeg/yt-dlp 等外部 CLI。
  • [ok] commit/metadata 一致 — git HEAD==96e387635edf==pin;GitHub API:stars 749、pushed_at 2026-08-03T00:24:09Z(与本地最后提交同时刻)、license spdx NOASSERTION(仓库 LICENSE 为自拟 Source-Available 1.0,README 明示非 OSI 开源)。

6结论

  • 『生成美学 + 确定性工程』分工极清晰,把模型不可靠的地方(像素保真、文字、尺寸)全部移出生成环节。
  • fail-closed 交付门禁:任何一步失败即删候选文件并拒绝交付,杜绝『半成品+口头解释』。
  • 打包 19 张竖幅样式参考并附逐图索引,把『抽象语法』变成可选用资产而非模型即兴发挥。
  • 严密的防劣化与防乱补全规则:纹理/渐晕/迷你场景/发明对称/补全遮挡人体等模型常见劣化被逐条列为拒绝项。
  • 自检与停止纪律:环境不完整(缺文件/无图像工具/路径失效)即停,不降级替代输入。
  • 适合:适合在具备内置图像生成工具的宿主(Codex/ChatGPT 类)上、把旅行/街拍/日常照片做成『上原图+下抽象』编辑刊物的创作者与设计师;适合需要可复核质量契约(像素保真、无生成文字、统一背景)的批量/连载产出;对『同一张照片做一组不同关系抽象』的系列作品尤其合适(档案编号 NO. 00X 递增机制)。
    不适合:不适合无内置图像工具的宿主(会直接停止);不适合要照片本身风格化/滤镜化的需求(skill 严格禁止对原图做任何生成式编辑);不适合需要改造其视觉语言或流程的二次开发(许可禁改禁发);不适合把抽象面板当独立成品的场景(面板被定义为必须与照片同交付的中间资产)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-09
    方式 A · 人下载镜像包下载 travel-photo-abstraction.tar.gz
    sha256: 013e3c7b5205fbdc…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 96e387635e;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库Evianis / Evianis/travel-photo-abstraction
    Stars749
    最近推送2026-08-03
    本 skill commit96e387635e
    许可Travel Photo Abstraction Source-Available License 1.0(仓库根 LICENSE,© 2026 Evianis;GitHub API spdx 为 NOASSERTION——明确非 OSI 开源许可:禁止修改/衍生/再分发)
    本站信息
    收录日期2026-09-06
    分类设计
    侦查报告2026-09-06 · 2 遍
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。