Match assets
Open-source agency-grade social media production plugin — 16 skills, 25 commands, AI image (Nano Banana Pro) + AI video (Kling v3.0 Pro) + C2PA signing (EU AI Act Article 50). Installs on Claude Code, Cowork, Codex, Cursor, Copilot CLI, Antigravity. By Indranil Banerjee (indranil.in).
npx -y skills add indranilbanerjee/socialforge --skill match-assetsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 22 stars22 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Match brand assets to calendar posts and assign creative modes. Use when: after calendar parsing or asset re-matching.
SKILL.md
3.3 KB, as published. Nobody here has run it
/socialforge:match-assets — Asset Matcher
Match brand assets to parsed calendar posts using the multi-factor scoring algorithm. Assigns one of 4 creative modes per post.
Context efficiency
Asset-heavy skill. Grep before Read the asset catalog (${CLAUDE_PLUGIN_DATA}/<brand>/assets/index.json) — never list the asset directory. Reference generated images / videos by path, not by loading metadata. Brand profile loads once per session.
Prerequisites
- Calendar parsed (calendar-data.json exists)
- Asset index built (asset-index.json exists)
If either is missing, prompt: "Run /socialforge:parse-calendar first, then /socialforge:index-assets."
The Matching Algorithm
For each post, calculate a multi-factor score against every indexed asset:
| Factor | Weight | What It Measures |
|---|---|---|
| Tag Overlap | 30% | Post keywords vs asset tags |
| Suitability Match | 25% | Asset's "suitable_for" vs post context |
| Content Bucket Match | 20% | Does asset suit this content bucket? |
| Crop Feasibility | 15% | Can asset be cropped to all required platform ratios? |
| Freshness Penalty | 10% | Penalize assets used recently this month |
Freshness penalty: 0 uses = no penalty | 1 use = score x 0.85 | 2 uses = score x 0.60 | 3+ uses = score x 0.30
Creative Mode Assignment
| Score Range | Recommended Mode |
|---|---|
| > 0.8 | ANCHOR_COMPOSE or ENHANCE_EXTEND |
| 0.5 - 0.8 | ENHANCE_EXTEND or STYLE_REFERENCED |
| 0.3 - 0.5 | STYLE_REFERENCED |
| < 0.3 | PURE_CREATIVE |
Also selects 2-5 style reference images per post (always fed to AI generation alongside prompts).
Process
- Load calendar-data.json and asset-index.json
- For each post: extract keywords → score all assets → rank → assign mode
- Select style references per post
- Generate coverage report
Coverage Report
Asset Matching Complete: 28 posts
ANCHOR_COMPOSE: 8 posts (direct brand asset matches)
ENHANCE_EXTEND: 5 posts (asset needs enhancement)
STYLE_REFERENCED: 9 posts (AI gen guided by brand DNA)
PURE_CREATIVE: 4 posts (full AI generation)
CAROUSEL_TEMPLATE: 2 posts (HTML template rendering)
Asset gaps: 3 posts flagged (should have brand assets but none found)
- P07: Founder post but no founder photos indexed
- P14: Product demo but no product screenshots available
- P22: Office culture post but no office photos
Top used assets: asset_012 (3 posts), asset_005 (2 posts)
- Present for user confirmation — user can override any match
- Save to
output/{brand}/{YYYY-MM}/asset-matches.json
User Override
For any post, user can:
- Accept the recommendation
- Select a different asset: "Use asset_015 for P07"
- Change creative mode: "Make P14 PURE_CREATIVE instead"
- Upload a new asset on the spot
- Skip: "I'll handle P22 manually"
Timeout & Fallback
- Per-post matching: 5-second timeout. If an asset index is very large (500+ images), process in batches.
- Show progress:
[12/28] Matching Post P12 — best match: asset_023 (score: 0.74, STYLE_REFERENCED)