Communitygithub.com

FishXIN/IP_Search

Agent skill for public-source IP image discovery, deduplication, curation, and Eagle packaging

O que é IP_Search?

IP_Search is a Cursor agent skill that agent skill for public-source IP image discovery, deduplication, curation, and Eagle packaging.

Funciona com~Claude Code~Codex CLICursor
npx skills add FishXIN/IP_Search

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

IP Asset Eagle Packager

Use this Skill when the user asks to collect image assets for a character/IP, expand an existing IP library, remove duplicate or low-resolution media, organize the files, or deliver an Eagle-compatible package.

Required Outcome

Deliver a curated library, not a raw download dump:

  1. Confirm the exact IP and creator/official account.
  2. Search official accounts, brand collaborations, exhibitions, editorial coverage, public reposts, and indexed image sources.
  3. Keep only publicly accessible files. Never bypass login, paywalls, app-only restrictions, CAPTCHA, or access controls.
  4. Validate every image by decoding it.
  5. Require both image dimensions to be at least 1080 pixels unless the user explicitly sets another threshold.
  6. Do not upscale low-resolution images to satisfy the threshold.
  7. Remove exact and visual near-duplicates across the full existing library.
  8. Review contact sheets manually to reject irrelevant frames, partial crops, UI screenshots, repeated angles, and unrelated photos.
  9. Use meaningful category folders and semantic filenames.
  10. Create a real .eaglepack containing item metadata, folder hierarchy, tags, source URLs, annotations, and ratings.
  11. Assign a representative cover image to the exported root folder and every nested folder.

Companion Skills

  • Invoke TRAE-browseruse before website navigation, image-search result extraction, or public social-media research.
  • Invoke TRAE-computer-use-ptc before inspecting or operating the Eagle desktop UI.
  • Prefer HTTP APIs and direct public image URLs over GUI automation when both are available.

Ask-First Boundary

Before downloading, explain:

  • the quality threshold;
  • the public-source boundary;
  • the estimated candidate volume;
  • that “all web images” cannot be proven exhaustive;
  • that copyrighted assets remain subject to the original owner’s terms.

The user’s explicit request to download and package the collection is approval for the scoped operation. Ask again only if a login, paid access, destructive cleanup outside the generated collection, or modification of the user’s existing Eagle library is required.

Workspace Layout

Use one collection directory:

<IP>_IP素材合集_<YYYYMMDD>/
├── 00_索引与质检/
├── 01_原创作品/
├── 02_壁纸与头像/
├── 03_品牌联名/
├── 04_展览与快闪/
├── 05_用户实拍与收藏/
├── 06_数字衍生/
├── 素材索引.csv
├── Eagle导入清单.csv
├── Eagle导入清单.json
├── Eagle素材包说明.md
└── README.md

Create only categories supported by actual assets. Add second-level folders for creator/source, brand, city, or asset type.

Source Strategy

Search in this order:

  1. Creator’s official public accounts and public archive/mirror pages.
  2. Official brand accounts and campaign pages.
  3. Exhibition venues, galleries, museums, and event accounts.
  4. Public image-search results.
  5. Public user reposts, wallpaper accounts, and collection photos.
  6. Auction/editorial archives for named original works.

Build query variants from:

  • IP name and aliases;
  • creator name;
  • 原创, 作品, 插画, 壁纸, 头像;
  • 联名, brand names;
  • 展览, 快闪, city names;
  • named artwork titles.

Track source_url, image_url, source account, query, title, expected dimensions, and source category for every candidate.

Quality Gate

Run candidates through scripts/audit_images.py.

Default checks:

  • complete image decode;
  • width >= 1080 and height >= 1080;
  • exact SHA-256 deduplication;
  • perceptual hash comparison against both new candidates and the existing collection;
  • same-aspect visual distance threshold of 6;
  • no SVG counted as a 1080P bitmap;
  • no generated or interpolated replacement for rejected low-resolution files.

Generate contact sheets after automated filtering. The contact sheet is mandatory before final merge.

Manual Review Rules

Reject:

  • broken or partial images;
  • thumbnails and loading placeholders;
  • unrelated site banners, recruitment ads, certificates, and UI skeletons;
  • app or social-feed screenshots when the original image is available;
  • the same artwork with only a tiny crop, cursor-position, or background-color difference;
  • repeated exhibition angles that add no new information;
  • unrelated photos embedded in a relevant multi-image post.

Prefer:

  • official originals over reposts;
  • clean artwork over a photo of the same canvas;
  • higher actual pixel area;
  • complete compositions;
  • the source with clearer provenance.

Candidate Collection And Finalization

For public indexed-image discovery, use:

python3 scripts/collect_public_images.py \
  --config "<collection-config>.json" \
  --root "<IP_素材合集>"

Its config must set required_title_markers and a separate review_directory. Marker checks must never use a search-results URL as relevance evidence. Preserve the direct image URL, discovery URL, title, and available source context in the candidate CSV.

After the contact-sheet review, use:

python3 scripts/finalize_review.py \
  --review "<IP_素材合集>/_候选待审_严格/候选索引.csv" \
  --root "<IP_素材合集>" \
  --prefix "<IP前缀>" \
  --ip-name "<IP名称>" \
  --exclude-review-numbers "12,34"

This creates final category folders, semantic names, manifests, a rejection log, and final contact sheets. It re-decodes every copied asset, including every GIF/APNG frame, and verifies its SHA-256 before it can enter the final library.

Naming

Never use arbitrary image_001 or hash-only names.

Use:

YUY_<一级分类>_<二级分类>_<来源>_<主题>_<序号>_<宽>x<高>_<哈希8位>.<ext>

Adapt the YUY prefix to the current IP.

Filename requirements:

  • concise Chinese semantic labels;
  • source or creator included where useful;
  • dimensions and short hash included;
  • no URL punctuation or unsupported path characters;
  • unique within its folder.

Metadata

Each final index row must include:

  • file
  • name
  • category
  • width
  • height
  • format
  • bytes
  • sha256
  • phash
  • source_url
  • image_url
  • title
  • query
  • tags
  • annotation
  • rating

The manifest may also include cover_priority as an integer. Higher values make an item more likely to become the cover for its folder and ancestor folders. When this field is absent, choose covers deterministically by rating, static image preference, pixel area, file size, and hash.

Recommended tags:

  • IP and alias;
  • asset category;
  • source/brand/city;
  • orientation;
  • 1080P+, 2K+, or 4K+;
  • 高清;
  • 已去重.

Eagle Packaging

Run:

python3 .trae/skills/ip-asset-eagle-packager/scripts/build_eaglepack.py \
  --root "<collection-directory>" \
  --manifest "<collection-directory>/素材索引.csv" \
  --output "<IP>_高清素材合集_<count>张.eaglepack"

The pack must contain:

pack.json
<item-id>.info/
├── <metadata-name>.<ext>
└── metadata.json

pack.json must include both:

  • images: the item metadata list;
  • folder: the hierarchical Eagle folder tree with a valid coverId on the root and every descendant folder.

The media filename inside each .info directory must exactly equal metadata.name + "." + metadata.ext.

Folder Covers

Folder covers are Eagle metadata, not extra placeholder images.

  • Set coverId on the root folder and every nested folder node.
  • A leaf folder cover must reference an item assigned to that folder.
  • A parent folder cover must reference an item assigned anywhere in that folder's descendant subtree.
  • Prefer an explicit cover_priority value when supplied.
  • Otherwise prefer higher-rated, static, higher-resolution assets.
  • Never add duplicate media solely to act as a folder cover.
  • Validate every coverId against the package's final image IDs. Eagle remaps these IDs during import.

Final Validation

Before reporting completion:

  1. Confirm the manifest row count equals the physical asset count.
  2. Confirm all hashes are unique.
  3. Decode every final image again.
  4. Verify the shortest edge threshold.
  5. Re-run cross-library pHash comparison.
  6. Run unzip -t on the .eaglepack.
  7. Confirm every metadata.json and media file referenced by pack.json exists.
  8. Confirm every item folder ID exists in the exported folder tree.
  9. Confirm the root folder and every nested folder have a valid coverId.
  10. Confirm each cover item belongs to the folder or one of its descendants.
  11. Confirm no staging directories remain.
  12. Confirm the user’s existing Eagle library was not modified unless explicitly requested.

See references/eaglepack-format.md for the verified package schema.

Habilidades Relacionadas