1仕組みと動作原理
プロセスの核心はアルゴリズムではなく「視覚的証拠 → 極小シンボルへのマッピング」を行うプロンプト編成にあります。本スキルは生成タスクを「Deconstruct(分解)→ Abstract/distill(抽象化/抽出)→ Reconstruct(再構築)」の3段階として定義し、モデルに対してまず元画像の証拠リストを作成させ、次にシンボルへとマッピングし、最終的に疎なレイアウトへと再構築することを義務付けています。
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.
「解構・再構築」は上位の生成モデルと下位の決定論的Pythonスクリプトで分担されます。抽象的な下部パネルの生成は組み込みの画像生成ツールに委ね、画像の合成、微細テキストのタイポグラフィ、および機械検証はすべて付属スクリプトで処理することで、生成モデルによる写真の改ざんや誤ったテキストの出力を防止します。
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`.
成果物は finalize_artwork.py のみによって生成されます。このスクリプトは compose_artwork.py(画像合成)+ validate_output.py(検証)を所定の順序で実行し、いずれかのステップで失敗した場合は出力を削除して納品を拒否します(fail-closed)。
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")
写真のピクセルレベルの完全性は validate_output.py による機械的検証で担保されます。最終画像の上部を元画像と同じサイズに切り出し、ImageChops.difference を用いてピクセル単位で比較し、差分ゼロを要求します。
photo_match = None actual = image.crop((0, 0, source.width, source.height)) photo_match = native_dimensions and ImageChops.difference(actual, source).getbbox() is None
3つの微細テキスト(NO. 00X / DD MON YYYY / 大文字フレーズ)は正規表現による厳格な検証と決定論的な描画によって処理され、生成モデルが画像内に文字を描画することは禁止されています。
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}$")
同梱された19点のスタイルレファレンス画像は「許可された視覚文法ライブラリ」を構成し、元写真のコンテンツチャネルとは厳密に分離されています。レファレンスからは抽象文法、密度、余白のみを借用し、コンテンツや過去のレイアウトは借用しません。
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.
インストールのセルフチェックと実行ゲート:check_installation.py がすべての必須ファイルと19枚のレファレンス画像が揃っているかを検証し、不足があればFAILとなります。さらに 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.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| api | 宿主内置图像生成工具(built-in image generation tool) |
| package | Python Pillow(PIL) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: travel-photo-abstraction/scripts/check_installation.py(インストールのセルフチェック、純粋なファイル存在確認)
- 网络端点: 外部ネットワークアクセスの宣言: SKILL.md およびスクリプトソースコード内での外部通信はゼロ(リポジトリ全体の URL/curl/wget/requests 等のトークンスキャンでは README の git cl のみヒット)
- 本地工作目录: ファイルの読み書きと成果物の出力: compose_artwork.py が最終合成画像を --output で指定されたパスに出力し、親ディレクトリを自動生成(output.parent.mkdir(parent
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結論
013e3c7b5205fbdc…