cue-ai 0.9.2 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -3
- package/README.md +154 -394
- package/bin/cue-learnings +30 -4
- package/bin/cue-review-progress +0 -0
- package/bin/cue-review-watch +0 -0
- package/dist/cue.js +4328 -3108
- package/package.json +1 -1
- package/plugins/cue/commands/cue-switch.md +1 -1
- package/plugins/cue/commands/cue.md +1 -1
- package/profiles/backend/profile.yaml +4 -0
- package/profiles/browser/profile.yaml +4 -0
- package/profiles/career/profile.yaml +2 -13
- package/profiles/commerce/profile.yaml +0 -2
- package/profiles/coolify/profile.yaml +0 -1
- package/profiles/core/profile.yaml +78 -11
- package/profiles/dash-merge-test/profile.yaml +6 -1
- package/profiles/designer/profile.yaml +9 -1
- package/profiles/dropshipping/profile.yaml +69 -0
- package/profiles/frontend/profile.yaml +4 -0
- package/profiles/google-ads/profile.yaml +34 -0
- package/profiles/google-analytics/profile.yaml +34 -0
- package/profiles/google-drive/profile.yaml +34 -0
- package/profiles/gstack/profile.yaml +117 -29
- package/profiles/marketing/profile.yaml +0 -1
- package/profiles/media/README.md +70 -0
- package/profiles/media/profile.yaml +104 -0
- package/profiles/nano-banana/profile.yaml +52 -0
- package/profiles/ops/profile.yaml +1 -2
- package/profiles/secops/profile.yaml +3 -0
- package/profiles/skill-writer/profile.yaml +15 -0
- package/profiles/video/profile.yaml +3 -0
- package/profiles/web-frontend-base/profile.yaml +6 -0
- package/profiles/webshop/profile.yaml +0 -1
- package/profiles/webshop-google/profile.yaml +1 -0
- package/profiles/x-growth-bot/profile.yaml +2 -0
- package/resources/icons/generate-icons.py +2 -128
- package/resources/mcps/configs/claude.sanitized.json +88 -20
- package/resources/mcps/configs/claude_runtime.sanitized.json +40 -1
- package/resources/mcps/configs/codex.sanitized.json +29 -0
- package/resources/skills/skills/career/job-hunter/LICENSE +21 -0
- package/resources/skills/skills/career/job-hunter/README.md +323 -0
- package/resources/skills/skills/career/job-hunter/SKILL.md +91 -0
- package/resources/skills/skills/career/job-hunter/agents/README.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-assessment-prep.md +195 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-ats-scan.md +155 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-bias-audit.md +224 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-cover-letter.md +69 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-decode-jd.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-fit-score.md +183 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-audit.md +74 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-scrape.md +255 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-portfolio-brief.md +123 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reality-check.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reference-prep.md +150 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-rejection-analysis.md +172 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-resume.md +70 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-skills-gap-filler.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/career-internal.md +94 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-content.md +173 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-scanner.md +262 -0
- package/resources/skills/skills/career/job-hunter/agents/career-network-message.md +108 -0
- package/resources/skills/skills/career/job-hunter/agents/career-promote.md +102 -0
- package/resources/skills/skills/career/job-hunter/agents/career-review.md +71 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-debrief.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-mock.md +171 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-panel-decoder.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-prep.md +184 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-question-bank.md +133 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-research.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-compare.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-counteroffer.md +144 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-deadline-manager.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-negotiate.md +126 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-schedule.md +99 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-thankyou.md +80 -0
- package/resources/skills/skills/career/job-hunter/agents/search-company-research.md +146 -0
- package/resources/skills/skills/career/job-hunter/agents/search-follow-up.md +129 -0
- package/resources/skills/skills/career/job-hunter/agents/search-ghost-job-detector.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/search-inbox-scan.md +193 -0
- package/resources/skills/skills/career/job-hunter/agents/search-interview-scorecard.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/search-jobs.md +149 -0
- package/resources/skills/skills/career/job-hunter/agents/search-momentum-check.md +194 -0
- package/resources/skills/skills/career/job-hunter/agents/search-outreach.md +85 -0
- package/resources/skills/skills/career/job-hunter/agents/search-referral-finder.md +124 -0
- package/resources/skills/skills/career/job-hunter/agents/search-salary.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/search-send-email.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/search-tracker-update.md +127 -0
- package/resources/skills/skills/career/job-hunter/inputs/README.md +26 -0
- package/resources/skills/skills/career/job-hunter/inputs/apply-linkedin-url.txt +8 -0
- package/resources/skills/skills/career/job-hunter/inputs/interview-context.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-description.md +20 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-search-criteria.md +36 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-linkedin.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-resume.md +28 -0
- package/resources/skills/skills/career/job-hunter/inputs/search-outreach-target.md +24 -0
- package/resources/skills/skills/career/job-hunter/rules/README.md +37 -0
- package/resources/skills/skills/career/job-hunter/rules/writing-rules.md +81 -0
- package/resources/skills/skills/design/banana/SKILL.md +375 -0
- package/resources/skills/skills/design/banana/references/cost-tracking.md +47 -0
- package/resources/skills/skills/design/banana/references/gemini-models.md +236 -0
- package/resources/skills/skills/design/banana/references/mcp-tools.md +145 -0
- package/resources/skills/skills/design/banana/references/post-processing.md +192 -0
- package/resources/skills/skills/design/banana/references/presets.md +69 -0
- package/resources/skills/skills/design/banana/references/prompt-engineering.md +481 -0
- package/resources/skills/skills/design/banana/scripts/batch.py +97 -0
- package/resources/skills/skills/design/banana/scripts/cost_tracker.py +191 -0
- package/resources/skills/skills/design/banana/scripts/edit.py +159 -0
- package/resources/skills/skills/design/banana/scripts/generate.py +168 -0
- package/resources/skills/skills/design/banana/scripts/presets.py +154 -0
- package/resources/skills/skills/design/banana/scripts/setup_mcp.py +151 -0
- package/resources/skills/skills/design/banana/scripts/validate_setup.py +133 -0
- package/resources/skills/skills/gstack/ship/SKILL.md +13 -0
- package/resources/skills/skills/media/3d-logo-animation/SKILL.md +59 -0
- package/resources/skills/skills/media/action-figure-generator/SKILL.md +48 -0
- package/resources/skills/skills/media/ad-creative/SKILL.md +79 -0
- package/resources/skills/skills/media/ai-clipping/SKILL.md +194 -0
- package/resources/skills/skills/media/ai-clipping/scripts/run-ai-clipping.sh +200 -0
- package/resources/skills/skills/media/ai-fight-scene/SKILL.md +132 -0
- package/resources/skills/skills/media/amazon-product-listing/SKILL.md +68 -0
- package/resources/skills/skills/media/animal-video-generator/SKILL.md +59 -0
- package/resources/skills/skills/media/award-ceremony-video/SKILL.md +87 -0
- package/resources/skills/skills/media/blog-header/SKILL.md +61 -0
- package/resources/skills/skills/media/brand-kit/SKILL.md +72 -0
- package/resources/skills/skills/media/brochures/SKILL.md +65 -0
- package/resources/skills/skills/media/cartoon-dance-animation/SKILL.md +62 -0
- package/resources/skills/skills/media/character-story-video/SKILL.md +84 -0
- package/resources/skills/skills/media/chibi-collage-effect/SKILL.md +63 -0
- package/resources/skills/skills/media/cinema-director/SKILL.md +93 -0
- package/resources/skills/skills/media/cinema-director/scripts/generate-film.sh +78 -0
- package/resources/skills/skills/media/color-analysis-board/SKILL.md +71 -0
- package/resources/skills/skills/media/core-edit/SKILL.md +48 -0
- package/resources/skills/skills/media/core-edit/edit-image.sh +54 -0
- package/resources/skills/skills/media/core-edit/enhance-image.sh +191 -0
- package/resources/skills/skills/media/core-edit/lipsync.sh +144 -0
- package/resources/skills/skills/media/core-edit/video-effects.sh +193 -0
- package/resources/skills/skills/media/core-media/SKILL.md +49 -0
- package/resources/skills/skills/media/core-media/create-music.sh +169 -0
- package/resources/skills/skills/media/core-media/generate-image.sh +161 -0
- package/resources/skills/skills/media/core-media/generate-video.sh +137 -0
- package/resources/skills/skills/media/core-media/image-to-video.sh +228 -0
- package/resources/skills/skills/media/core-media/schema_data.json +18708 -0
- package/resources/skills/skills/media/core-media/upload.sh +41 -0
- package/resources/skills/skills/media/core-platform/SKILL.md +41 -0
- package/resources/skills/skills/media/core-platform/check-result.sh +37 -0
- package/resources/skills/skills/media/core-platform/setup.sh +31 -0
- package/resources/skills/skills/media/couple-grid-creator/SKILL.md +47 -0
- package/resources/skills/skills/media/design-guide/SKILL.md +73 -0
- package/resources/skills/skills/media/drone-style-video/SKILL.md +61 -0
- package/resources/skills/skills/media/fashion-try-on/SKILL.md +61 -0
- package/resources/skills/skills/media/floor-plan-rendering/SKILL.md +56 -0
- package/resources/skills/skills/media/freeze-effect-video/SKILL.md +100 -0
- package/resources/skills/skills/media/giant-product-showcase/SKILL.md +61 -0
- package/resources/skills/skills/media/instagram-post/SKILL.md +58 -0
- package/resources/skills/skills/media/interior-design/SKILL.md +61 -0
- package/resources/skills/skills/media/interior-design-visualizer/SKILL.md +57 -0
- package/resources/skills/skills/media/jewelry-product-video/SKILL.md +61 -0
- package/resources/skills/skills/media/kdenlive/SKILL.md +106 -0
- package/resources/skills/skills/media/kdenlive/scripts/assemble.sh +57 -0
- package/resources/skills/skills/media/kdenlive/scripts/common.sh +30 -0
- package/resources/skills/skills/media/kdenlive/scripts/inspect.sh +19 -0
- package/resources/skills/skills/media/kdenlive/scripts/reframe.sh +22 -0
- package/resources/skills/skills/media/kdenlive/scripts/render.sh +16 -0
- package/resources/skills/skills/media/kdenlive/scripts/title-card.sh +25 -0
- package/resources/skills/skills/media/keyboard-art-maker/SKILL.md +44 -0
- package/resources/skills/skills/media/logo-branding/SKILL.md +70 -0
- package/resources/skills/skills/media/logo-creator/SKILL.md +80 -0
- package/resources/skills/skills/media/logo-creator/scripts/create-logo.sh +38 -0
- package/resources/skills/skills/media/logo-generator/SKILL.md +56 -0
- package/resources/skills/skills/media/multi-angle-reshoot/SKILL.md +70 -0
- package/resources/skills/skills/media/multi-angle-shots/SKILL.md +73 -0
- package/resources/skills/skills/media/music-video/SKILL.md +61 -0
- package/resources/skills/skills/media/nano-banana/SKILL.md +80 -0
- package/resources/skills/skills/media/nano-banana/scripts/generate-nano-art.sh +54 -0
- package/resources/skills/skills/media/one-shot-video/SKILL.md +56 -0
- package/resources/skills/skills/media/photo-pack-generator/SKILL.md +205 -0
- package/resources/skills/skills/media/photo-pack-generator/scripts/generate-pack.sh +241 -0
- package/resources/skills/skills/media/product-ad-cinematic/SKILL.md +78 -0
- package/resources/skills/skills/media/product-campaign/SKILL.md +76 -0
- package/resources/skills/skills/media/product-showcase-video/SKILL.md +60 -0
- package/resources/skills/skills/media/product-video-ad-maker/SKILL.md +59 -0
- package/resources/skills/skills/media/rednote-cover/SKILL.md +57 -0
- package/resources/skills/skills/media/seedance-2/SKILL.md +632 -0
- package/resources/skills/skills/media/seedance-2/scripts/generate-seedance.sh +701 -0
- package/resources/skills/skills/media/selfie-with-celebrities/SKILL.md +64 -0
- package/resources/skills/skills/media/social-media-video/SKILL.md +277 -0
- package/resources/skills/skills/media/social-media-video/scripts/run-social-video.sh +316 -0
- package/resources/skills/skills/media/social-pack/SKILL.md +58 -0
- package/resources/skills/skills/media/storyboard/SKILL.md +57 -0
- package/resources/skills/skills/media/storyboard-to-cooking-video/SKILL.md +143 -0
- package/resources/skills/skills/media/talking-baby-video/SKILL.md +57 -0
- package/resources/skills/skills/media/ugc-ads-workflow/SKILL.md +70 -0
- package/resources/skills/skills/media/ugc-lifestyle-try-on/SKILL.md +65 -0
- package/resources/skills/skills/media/ugc-video-factory/SKILL.md +134 -0
- package/resources/skills/skills/media/ui-design/SKILL.md +81 -0
- package/resources/skills/skills/media/ui-design/scripts/generate-mockup.sh +49 -0
- package/resources/skills/skills/media/url-to-design/SKILL.md +61 -0
- package/resources/skills/skills/media/workflow/SKILL.md +197 -0
- package/resources/skills/skills/media/workflow/scripts/discover-workflow.sh +18 -0
- package/resources/skills/skills/media/workflow/scripts/generate-workflow.sh +33 -0
- package/resources/skills/skills/media/workflow/scripts/interactive-run.sh +16 -0
- package/resources/skills/skills/media/workflow/scripts/list-workflows.sh +20 -0
- package/resources/skills/skills/media/workflow/scripts/run-workflow.sh +34 -0
- package/resources/skills/skills/media/youtube-shorts/SKILL.md +173 -0
- package/resources/skills/skills/media/youtube-shorts/scripts/run-youtube-shorts.sh +141 -0
- package/resources/skills/skills/media/youtube-thumbnail/SKILL.md +66 -0
- package/resources/skills/skills/meta/cue-developer/references/architecture.md +2 -2
- package/resources/skills/skills/meta/cue-usage/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-fit-monitor/SKILL.md +2 -2
- package/resources/skills/skills/meta/profile-optimizer/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-suggest/SKILL.md +7 -7
- package/resources/skills/skills/meta/profile-summon/SKILL.md +159 -0
- package/resources/skills/skills/meta/profile-summon/evals/evals.json +53 -0
- package/resources/skills/skills/meta/save-profile/SKILL.md +1 -1
- package/resources/skills/skills/meta/skill-reviewer/SKILL.md +3 -0
- package/resources/skills/skills/meta/skill-reviewer/references/tdd-for-skills.md +55 -0
- package/resources/skills/skills/research/find-skills/SKILL.md +1 -1
- package/resources/skills/skills/review/code-review-deep/SKILL.md +20 -0
- package/resources/skills/skills/security/trivy-scan/SKILL.md +139 -0
- package/resources/skills/skills/security/trivy-scan/scripts/ensure-trivy.sh +21 -0
- package/resources/skills/skills/tools/ccusage/SKILL.md +142 -0
- package/src/commands/_index.ts +8 -0
- package/src/commands/ai.ts +2 -2
- package/src/commands/auto-detect.test.ts +74 -0
- package/src/commands/auto-detect.ts +9 -7
- package/src/commands/cli.test.ts +20 -4
- package/src/commands/cli.ts +36 -20
- package/src/commands/create-profile.ts +2 -2
- package/src/commands/debug.ts +2 -2
- package/src/commands/discover.ts +14 -4
- package/src/commands/export-docker.ts +1 -1
- package/src/commands/features-batch1.test.ts +1 -1
- package/src/commands/gates.ts +1 -1
- package/src/commands/import-profile.ts +1 -1
- package/src/commands/init.ts +15 -11
- package/src/commands/install.test.ts +192 -0
- package/src/commands/install.ts +610 -0
- package/src/commands/launch-handoff.e2e.test.ts +33 -1
- package/src/commands/launch.e2e.test.ts +15 -10
- package/src/commands/launch.ts +73 -116
- package/src/commands/materialize.ts +2 -2
- package/src/commands/prune.ts +1 -1
- package/src/commands/security-audit.ts +1 -1
- package/src/commands/shell.ts +7 -7
- package/src/commands/skill-report.ts +1 -1
- package/src/commands/skills.ts +3 -3
- package/src/commands/snapshot.ts +2 -2
- package/src/commands/summon.test.ts +116 -0
- package/src/commands/summon.ts +338 -0
- package/src/commands/trigger-gaps.ts +1 -1
- package/src/commands/use.ts +47 -3
- package/src/commands/watch-live.ts +5 -5
- package/src/commands/watch.ts +8 -8
- package/src/index.ts +2 -0
- package/src/lib/active-sessions.test.ts +3 -3
- package/src/lib/active-sessions.ts +4 -4
- package/src/lib/auto-detect.test.ts +172 -8
- package/src/lib/auto-detect.ts +191 -136
- package/src/lib/codex-persona-parity.test.ts +58 -0
- package/src/lib/companion-detect.test.ts +43 -1
- package/src/lib/companion-detect.ts +35 -0
- package/src/lib/credentials-sync.test.ts +121 -1
- package/src/lib/credentials-sync.ts +95 -1
- package/src/lib/cwd-resolver.test.ts +8 -8
- package/src/lib/cwd-resolver.ts +2 -2
- package/src/lib/dashboard-merge.test.ts +9 -4
- package/src/lib/dashboard-server.ts +1 -1
- package/src/lib/picker.test.ts +1 -1
- package/src/lib/picker.ts +5 -5
- package/src/lib/profile-merge.test.ts +8 -0
- package/src/lib/profile-names.test.ts +3 -3
- package/src/lib/runtime-install.ts +166 -0
- package/src/lib/runtime-materializer.test.ts +137 -0
- package/src/lib/runtime-materializer.ts +105 -2
- package/src/lib/skill-router.test.ts +38 -0
- package/src/lib/skill-router.ts +65 -4
- package/profiles/eu-tender-research/README.md +0 -48
- package/profiles/eu-tender-research/logo.png +0 -0
- package/profiles/eu-tender-research/profile.yaml +0 -108
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: muapi-photo-pack-generator
|
|
3
|
+
version: 0.1.0
|
|
4
|
+
description: Generate a pack of professional or aesthetic photos from a single reference image while preserving the exact identity of the person.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 📸 Photo Pack Generator Expert Skill (Identity-Lock Edition)
|
|
8
|
+
|
|
9
|
+
Transform a single reference photo into a collection of themed images while maintaining **extremely high facial identity fidelity**.
|
|
10
|
+
|
|
11
|
+
This skill prioritizes **identity preservation first**, then applies stylistic transformations like LinkedIn portraits, dating photos, cinematic shots, or fantasy styles.
|
|
12
|
+
|
|
13
|
+
The system uses **Identity Lock Prompting** instead of describing the person, preventing the model from generating a new face.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Core Principles
|
|
18
|
+
|
|
19
|
+
## 1️⃣ Identity Lock (MOST IMPORTANT)
|
|
20
|
+
|
|
21
|
+
The generated images must always depict **the same person from the reference image**.
|
|
22
|
+
|
|
23
|
+
All prompts MUST include identity lock instructions.
|
|
24
|
+
|
|
25
|
+
Required identity rules:
|
|
26
|
+
|
|
27
|
+
- Preserve the exact facial identity from the reference image
|
|
28
|
+
- Do not modify eye shape or spacing
|
|
29
|
+
- Do not modify nose structure
|
|
30
|
+
- Do not modify jawline or chin shape
|
|
31
|
+
- Do not modify cheekbones
|
|
32
|
+
- Do not modify face proportions
|
|
33
|
+
- Identity must remain identical to the reference photo
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 2️⃣ Vision-First Scene Analysis
|
|
38
|
+
|
|
39
|
+
The agent MUST analyze the reference image before generation.
|
|
40
|
+
|
|
41
|
+
However the analysis **must NOT describe the person** (age, ethnicity, hair etc).
|
|
42
|
+
|
|
43
|
+
Allowed analysis fields:
|
|
44
|
+
|
|
45
|
+
- head orientation
|
|
46
|
+
- facial angle
|
|
47
|
+
- expression
|
|
48
|
+
- lighting direction
|
|
49
|
+
- framing (portrait / half body / full body)
|
|
50
|
+
|
|
51
|
+
Example:
|
|
52
|
+
|
|
53
|
+
Head orientation: slight left tilt
|
|
54
|
+
Expression: neutral friendly
|
|
55
|
+
Lighting: soft frontal light
|
|
56
|
+
Framing: head and shoulders portrait
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
# Agent Execution Flow
|
|
61
|
+
|
|
62
|
+
## Step 1 — Grounding Check
|
|
63
|
+
|
|
64
|
+
Ensure the user has provided a reference image.
|
|
65
|
+
|
|
66
|
+
Supported inputs:
|
|
67
|
+
|
|
68
|
+
- local image
|
|
69
|
+
- URL
|
|
70
|
+
- uploaded file
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Step 2 — Vision Analysis
|
|
75
|
+
|
|
76
|
+
Extract scene attributes only.
|
|
77
|
+
|
|
78
|
+
DO NOT describe:
|
|
79
|
+
|
|
80
|
+
- age
|
|
81
|
+
- ethnicity
|
|
82
|
+
- beard
|
|
83
|
+
- hair
|
|
84
|
+
- body type
|
|
85
|
+
|
|
86
|
+
Identity must come directly from the image.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Step 3 — Category Selection
|
|
91
|
+
|
|
92
|
+
If the user does not specify a category suggest:
|
|
93
|
+
|
|
94
|
+
- LinkedIn
|
|
95
|
+
- Tinder
|
|
96
|
+
- OldMoney
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Step 4 — Prompt Construction
|
|
101
|
+
|
|
102
|
+
Use the reference image as the identity source.
|
|
103
|
+
|
|
104
|
+
Preserve the exact facial identity from the reference image.
|
|
105
|
+
|
|
106
|
+
Identity must remain identical to the reference photo.
|
|
107
|
+
|
|
108
|
+
Do not change:
|
|
109
|
+
|
|
110
|
+
- eye shape
|
|
111
|
+
- eye spacing
|
|
112
|
+
- nose structure
|
|
113
|
+
- jawline
|
|
114
|
+
- cheekbones
|
|
115
|
+
- face proportions
|
|
116
|
+
|
|
117
|
+
Maintain similar head orientation as the reference.
|
|
118
|
+
|
|
119
|
+
Scene example:
|
|
120
|
+
|
|
121
|
+
Outdoor café portrait
|
|
122
|
+
Soft natural daylight
|
|
123
|
+
35mm portrait lens
|
|
124
|
+
Shallow depth of field
|
|
125
|
+
Photorealistic skin texture
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Step 5 — Negative Prompt
|
|
130
|
+
|
|
131
|
+
Always include:
|
|
132
|
+
|
|
133
|
+
different person
|
|
134
|
+
altered face
|
|
135
|
+
changed facial features
|
|
136
|
+
new identity
|
|
137
|
+
generic face
|
|
138
|
+
beautified face
|
|
139
|
+
plastic skin
|
|
140
|
+
face distortion
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Step 6 — Execution
|
|
145
|
+
|
|
146
|
+
Example:
|
|
147
|
+
|
|
148
|
+
bash scripts/generate-pack.sh \
|
|
149
|
+
--image "./my_face.jpg" \
|
|
150
|
+
--category "LinkedIn" \
|
|
151
|
+
--identity-lock true \
|
|
152
|
+
--num 5
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
# Supported Categories
|
|
157
|
+
|
|
158
|
+
| Category | Best For | Aesthetic |
|
|
159
|
+
|---|---|---|
|
|
160
|
+
| LinkedIn | Professional | Studio |
|
|
161
|
+
| CEO | Founders | Office |
|
|
162
|
+
| Tinder | Dating | Lifestyle |
|
|
163
|
+
| OldMoney | Luxury | Estate |
|
|
164
|
+
| Cyberpunk | Fantasy | Neon |
|
|
165
|
+
| Fitness | Gym | Athletic |
|
|
166
|
+
| Travel | Social | Bali/Paris |
|
|
167
|
+
| 90s | Retro | Vintage |
|
|
168
|
+
| Holiday | Seasonal | Festive |
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
# Guardrails
|
|
173
|
+
|
|
174
|
+
## Fidelity First
|
|
175
|
+
|
|
176
|
+
Identity preservation is always more important than style.
|
|
177
|
+
|
|
178
|
+
## Never Re-Describe the Person
|
|
179
|
+
|
|
180
|
+
Avoid prompts like:
|
|
181
|
+
|
|
182
|
+
"Indian man in his 20s with short hair"
|
|
183
|
+
|
|
184
|
+
This causes the model to generate a **new face**.
|
|
185
|
+
|
|
186
|
+
Identity must come from the **reference image only**.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
# Recommended Models
|
|
191
|
+
|
|
192
|
+
Best results with:
|
|
193
|
+
|
|
194
|
+
- nano-banana-edit
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
# Result
|
|
199
|
+
|
|
200
|
+
This system produces:
|
|
201
|
+
|
|
202
|
+
- consistent identity
|
|
203
|
+
- photorealistic images
|
|
204
|
+
- multi-style photo packs
|
|
205
|
+
- professional outputs
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Photo Pack Generator Skill
|
|
3
|
+
# Generates a pack of images based on a reference image and a category.
|
|
4
|
+
|
|
5
|
+
IMAGE_URL=""
|
|
6
|
+
IMAGE_FILE=""
|
|
7
|
+
CATEGORY="LinkedIn"
|
|
8
|
+
MODEL="nano-banana-edit"
|
|
9
|
+
NUM_IMAGES=5
|
|
10
|
+
VIEW_FLAG_LOCAL=false
|
|
11
|
+
JSON_ONLY=false
|
|
12
|
+
LIKENESS=""
|
|
13
|
+
|
|
14
|
+
# Scripts directory
|
|
15
|
+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
16
|
+
UPLOAD_SCRIPT="$SCRIPT_DIR/../../core-media/upload.sh"
|
|
17
|
+
GENERATE_SCRIPT="$SCRIPT_DIR/../../core-media/generate-image.sh"
|
|
18
|
+
OUTPUT_DIR="${PWD}/media_outputs"
|
|
19
|
+
|
|
20
|
+
while [[ $# -gt 0 ]]; do
|
|
21
|
+
case $1 in
|
|
22
|
+
--image-url) IMAGE_URL="$2"; shift 2 ;;
|
|
23
|
+
--image) IMAGE_FILE="$2"; shift 2 ;;
|
|
24
|
+
--category) CATEGORY="$2"; shift 2 ;;
|
|
25
|
+
--model) MODEL="$2"; shift 2 ;;
|
|
26
|
+
--num) NUM_IMAGES="$2"; shift 2 ;;
|
|
27
|
+
--view) VIEW_FLAG_LOCAL=true; shift ;;
|
|
28
|
+
--json) JSON_ONLY=true; shift ;;
|
|
29
|
+
--likeness) LIKENESS="$2"; shift 2 ;;
|
|
30
|
+
*) shift ;;
|
|
31
|
+
esac
|
|
32
|
+
done
|
|
33
|
+
|
|
34
|
+
if [ -z "$IMAGE_URL" ] && [ -z "$IMAGE_FILE" ]; then
|
|
35
|
+
echo "Error: Either --image-url or --image (local file) is required."
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# 1. Handle local file upload
|
|
40
|
+
if [ -n "$IMAGE_FILE" ]; then
|
|
41
|
+
[ "$JSON_ONLY" = false ] && echo "Uploading local image: $IMAGE_FILE..." >&2
|
|
42
|
+
IMAGE_URL=$(bash "$UPLOAD_SCRIPT" --file "$IMAGE_FILE")
|
|
43
|
+
if [ -z "$IMAGE_URL" ]; then
|
|
44
|
+
echo "Error: Upload failed."
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
[ "$JSON_ONLY" = false ] && echo "Uploaded to: $IMAGE_URL" >&2
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# 2. Extract Prompts based on Category
|
|
51
|
+
# Improved prompts using "Perfect Prompt" formula: Subject + Action + Context + Composition + Lighting + Style
|
|
52
|
+
PROMPTS=()
|
|
53
|
+
SUBJECT="${LIKENESS:-the person}"
|
|
54
|
+
# Ultra-High Fidelity Likeness Prefix
|
|
55
|
+
LIKENESS_PREFIX="STRICTLY PRESERVE the EXACT facial geometry, PIXEL-PERFECT bone structure, and identical facial features from the reference image. Every detail of the eyes, nose, and jawline must remain unchanged. "
|
|
56
|
+
|
|
57
|
+
case $CATEGORY in
|
|
58
|
+
"LinkedIn")
|
|
59
|
+
PROMPTS=(
|
|
60
|
+
"Using reference image, ${LIKENESS_PREFIX} high-resolution professional profile photo of ${SUBJECT}, chest up, looking directly at the camera with a confident smile. Wearing a premium navy business suit and white shirt. Solid neutral studio background. 85mm f/1.8 lens, exquisite focus on eyes, realistic skin texture, soft diffused studio lighting, cinematic corporate color grading."
|
|
61
|
+
"Using reference image, ${LIKENESS_PREFIX} corporate headshot of ${SUBJECT}, professional business casual attire, clean soft gray studio backdrop. Sharp focus, natural skin tones, Rembrandt lighting, professional magazine quality portrait, 8k resolution."
|
|
62
|
+
"Using reference image, ${LIKENESS_PREFIX} professional portrait of ${SUBJECT}, executive presence, wearing a charcoal blazer, modern glass office background blurred (bokeh). Soft daylight from side window, high-end commercial photography, meticulous detail, photorealistic."
|
|
63
|
+
"Using reference image, ${LIKENESS_PREFIX} professional headshot of ${SUBJECT}, friendly and approachable expression, wearing a smart casual sweater. Clean minimalist office setting, bright and airy lighting, crisp detail, realistic textures, shot on Sony A7R IV."
|
|
64
|
+
"Using reference image, ${LIKENESS_PREFIX} business portrait of ${SUBJECT}, suit refinement, clear sharp facial features, subtle studio lighting with hair light, polished and trustworthy expression, blurred professional environment."
|
|
65
|
+
)
|
|
66
|
+
;;
|
|
67
|
+
"Tinder"|"Bumble")
|
|
68
|
+
PROMPTS=(
|
|
69
|
+
"Using reference image, ${LIKENESS_PREFIX} natural high-resolution dating profile photo of ${SUBJECT} with a warm genuine smile. Relaxed posture, wearing a stylish knit sweater. Soft natural daylight, outdoor cafe setting with blurred background bokeh (f/1.4). Authentic friendly energy, realistic skin tones, 35mm film grain."
|
|
70
|
+
"Using reference image, ${LIKENESS_PREFIX} candid dating app photo of ${SUBJECT} in a stylish leather jacket, leaning against a brick wall on a vibrant city street at dusk. Warm soft streetlights, engaging slightly mysterious expression, shallow depth of field, urban lifestyle aesthetic."
|
|
71
|
+
"Using reference image, ${LIKENESS_PREFIX} lifestyle photo of ${SUBJECT} at a rooftop bar at sunset, holding a drink, city skyline bokeh. Warm string lights, casual style, natural expression, cinematic photography, Kodak Portra 400 colors."
|
|
72
|
+
"Using reference image, ${LIKENESS_PREFIX} place ${SUBJECT} on a tropical beach at sunset, casual linen shirt, warm golden light. Adventurous confident vibe, travel lifestyle photo, high detail skin texture, Leica M11 look."
|
|
73
|
+
"Using reference image, ${LIKENESS_PREFIX} cozy coffee shop interior, ${SUBJECT} holding a latte, casual homey outfit. Warm ambient lighting, relaxed genuine smile, lifestyle portrait, shallow depth of field, realistic textures."
|
|
74
|
+
)
|
|
75
|
+
;;
|
|
76
|
+
"OldMoney")
|
|
77
|
+
PROMPTS=(
|
|
78
|
+
"Using reference image, ${LIKENESS_PREFIX} transform to old money aesthetic. ${SUBJECT} wearing a tailored beige cashmere sweater and cream trousers, standing on a gravel path outside a British country estate. Overcast soft light, effortless elegance, Vogue editorial photography, 35mm film texture."
|
|
79
|
+
"Using reference image, ${LIKENESS_PREFIX} portrait of ${SUBJECT} at an ivy league campus entrance, classic navy blazer over oxford shirt. Autumnal background with golden leaves, warm sunlight, understated confidence, preppy refined aesthetic, 85mm lens."
|
|
80
|
+
"Using reference image, ${LIKENESS_PREFIX} ${SUBJECT} on a luxury yacht deck, wearing ivory linen co-ords and minimal gold jewelry. Mediterranean afternoon light, turquoise sea bokeh, windswept relaxed hair, aspirational quiet luxury lifestyle."
|
|
81
|
+
"Using reference image, ${LIKENESS_PREFIX} equestrian setting, ${SUBJECT} in classic riding attire with leather boots. Green countryside estate background, golden hour light, European aristocracy feel, high-detail textures, equestrian chic."
|
|
82
|
+
"Using reference image, ${LIKENESS_PREFIX} grand private library interior, ${SUBJECT} sitting in a leather armchair wearing a tweed blazer. Warm amber candlelight, sophisticated intellectual presence, timeless refined photography, cinematic lighting."
|
|
83
|
+
)
|
|
84
|
+
;;
|
|
85
|
+
"Cyberpunk")
|
|
86
|
+
PROMPTS=(
|
|
87
|
+
"Using reference image, ${LIKENESS_PREFIX} ${SUBJECT} standing in a rain-soaked neon-lit Tokyo alley at night. Vibrant pink and blue neon reflections on the face and a sleek black tech-wear trench coat. Moody atmospheric lighting, dramatic shadows, wet pavement reflections, Blade Runner 2049 aesthetic."
|
|
88
|
+
"Using reference image, ${LIKENESS_PREFIX} cyberpunk transformation. ${SUBJECT} with subtle glowing cybernetic implants, futuristic geometric fashion. Dark industrial background with volumetric fog, electric blue rim lighting, cinematic sci-fi atmosphere, 8k resolution."
|
|
89
|
+
"Using reference image, ${LIKENESS_PREFIX} neon Shibuya crossing background. Massive screens glowing, crowd motion blur. ${SUBJECT} in futuristic street style, electric urban energy, cyan and magenta color grade, high-end concept art style."
|
|
90
|
+
"Using reference image, ${LIKENESS_PREFIX} cyberpunk underground club. Neon UV lighting, haze and smoke, futuristic accessories. ${SUBJECT} has an intense look, immersive sci-fi nightlife atmosphere, sharp focus, vibrant color contrast."
|
|
91
|
+
)
|
|
92
|
+
;;
|
|
93
|
+
"CEO")
|
|
94
|
+
PROMPTS=(
|
|
95
|
+
"Using reference image, ${LIKENESS_PREFIX} modern glass office with city view background. ${SUBJECT} in a tailored premium power suit, confident pose. Dramatic side lighting, executive portrait, Fortune 500 magazine cover style, sharp focus, ultra-professional."
|
|
96
|
+
"Using reference image, ${LIKENESS_PREFIX} tech founder aesthetic. ${SUBJECT} wearing a premium black turtleneck, minimalist white gallery background. Intellectual confident vibe, tech CEO energy, soft box lighting, high detail, realistic skin."
|
|
97
|
+
"Using reference image, ${LIKENESS_PREFIX} ${SUBJECT} speaking on a stage at a tech conference, blurred audience in background. Business casual, engaged confident expression, thought leader energy, professional event photography lighting."
|
|
98
|
+
"Using reference image, ${LIKENESS_PREFIX} modern boardroom setting, ${SUBJECT} at the head of the table. Natural window light, commanding presence, professional confidence, photorealistic, 8k detail."
|
|
99
|
+
"Using reference image, ${LIKENESS_PREFIX} outdoor urban corporate setting. ${SUBJECT} in a walking pose, holding a smartphone, blurred skyscraper background. Dynamic editorial feel, natural daylight, sharp textures, high-quality professional lifestyle."
|
|
100
|
+
)
|
|
101
|
+
;;
|
|
102
|
+
"CleanGirl")
|
|
103
|
+
PROMPTS=(
|
|
104
|
+
"Using reference image, ${LIKENESS_PREFIX} transform to clean girl aesthetic. ${SUBJECT} with a slicked back bun, minimal natural makeup, white ribbed tank top. Soft window daylight, fresh dewy skin, minimalist gold jewelry, airy neutral tones, Pinterest aesthetic."
|
|
105
|
+
"Using reference image, ${LIKENESS_PREFIX} morning routine aesthetic. White bathroom tiles background, glass of water. ${SUBJECT} with a fresh no-makeup look, soft diffused natural lighting, clean minimal vibe, high-resolution photography."
|
|
106
|
+
"Using reference image, ${LIKENESS_PREFIX} minimalist home interior, neutral palette. ${SUBJECT} in casual elevated lounge wear, morning light, soft shadows, healthy radiant skin, effortless lifestyle portrait."
|
|
107
|
+
"Using reference image, ${LIKENESS_PREFIX} pilates studio background, ${SUBJECT} in seamless neutral activewear. Fresh skin, minimal accessories, clean health-focused lifestyle, bright airy lighting, realistic texture."
|
|
108
|
+
)
|
|
109
|
+
;;
|
|
110
|
+
"DarkAcademia")
|
|
111
|
+
PROMPTS=(
|
|
112
|
+
"Using reference image, ${LIKENESS_PREFIX} old library with floor-to-ceiling bookshelves. ${SUBJECT} in a tweed blazer and turtleneck outfit, warm candlelight tones. Intellectual brooding expression, 35mm film grain, moody dark academia aesthetic."
|
|
113
|
+
"Using reference image, ${LIKENESS_PREFIX} Oxford-style stone corridor, overcast autumn setting. ${SUBJECT} in a wool coat and scarf, leather book bag. Fallen leaves, moody atmospheric photography, cinematic film look."
|
|
114
|
+
"Using reference image, ${LIKENESS_PREFIX} vintage study interior, rain-streaked window. ${SUBJECT} in a knit sweater, round glasses, contemplative expression. Dark earthy tones, warm lamp glow, literary atmospheric portrait."
|
|
115
|
+
"Using reference image, ${LIKENESS_PREFIX} autumn botanical garden, ${SUBJECT} in a long wool coat. Moody overcast light, golden leaves, cinematic dark academia film photography, rich textures."
|
|
116
|
+
)
|
|
117
|
+
;;
|
|
118
|
+
"Anime")
|
|
119
|
+
PROMPTS=(
|
|
120
|
+
"Using reference image, ${LIKENESS_PREFIX} convert ${SUBJECT} to high-quality anime illustration. Studio Ghibli aesthetic, expressive large eyes, soft pastel watercolor colors, clean line art, magical atmosphere, masterpiece quality."
|
|
121
|
+
"Using reference image, ${LIKENESS_PREFIX} transform ${SUBJECT} to a stylish shonen anime character. Dynamic pose, bold cinematic lines, vibrant colors, manga-inspired effects, high-detail digital art style."
|
|
122
|
+
"Using reference image, ${LIKENESS_PREFIX} dark fantasy anime aesthetic for ${SUBJECT}. Dramatic lighting, detailed metallic armor, epic sky background, intricate design, professional anime key visual style."
|
|
123
|
+
"Using reference image, ${LIKENESS_PREFIX} cute chibi character version of ${SUBJECT}. Super deformed proportions, big expressive eyes, pastel colors, kawaii expression, clean vector art style."
|
|
124
|
+
)
|
|
125
|
+
;;
|
|
126
|
+
"Doctor")
|
|
127
|
+
PROMPTS=(
|
|
128
|
+
"Using reference image, ${LIKENESS_PREFIX} add white lab coat and stethoscope to ${SUBJECT}. Clean hospital hallway blurred background, approachable professional smile, soft clean lighting, medical portrait, trustworthy vibe."
|
|
129
|
+
"Using reference image, ${LIKENESS_PREFIX} place ${SUBJECT} in a modern clinic environment. Wearing scrubs, calm reassuring expression, clean professional lighting, high-resolution medical photography."
|
|
130
|
+
)
|
|
131
|
+
;;
|
|
132
|
+
"Lawyer")
|
|
133
|
+
PROMPTS=(
|
|
134
|
+
"Using reference image, ${LIKENESS_PREFIX} ${SUBJECT} in a dark suit and tie, law office mahogany bookshelf background. Authoritative yet approachable expression, Rembrandt lighting, sharp professional portrait, legal magazine style."
|
|
135
|
+
"Using reference image, ${LIKENESS_PREFIX} law firm lobby background, ${SUBJECT} in business formal attire. Commanding presence, professional confidence, cinematic lighting, sharp detail, 8k resolution."
|
|
136
|
+
)
|
|
137
|
+
;;
|
|
138
|
+
"MobWife")
|
|
139
|
+
PROMPTS=(
|
|
140
|
+
"Using reference image, ${LIKENESS_PREFIX} ${SUBJECT} in an oversized faux fur coat, bold red lips, large dark sunglasses. Manhattan street background, high contrast dramatic lighting, editorial fashion, power pose, mob wife aesthetic."
|
|
141
|
+
"Using reference image, ${LIKENESS_PREFIX} luxury restaurant background, ${SUBJECT} in a full fur coat, heavy gold jewelry. Statement makeup, cinematic dramatic lighting, old Hollywood glamour, rich textures."
|
|
142
|
+
)
|
|
143
|
+
;;
|
|
144
|
+
"Bali")
|
|
145
|
+
PROMPTS=(
|
|
146
|
+
"Using reference image, ${LIKENESS_PREFIX} iconic Bali rice terraces background at sunrise. ${SUBJECT} in a flowy linen outfit, golden hour lighting, lush tropical greens, travel influencer lifestyle photography."
|
|
147
|
+
"Using reference image, ${LIKENESS_PREFIX} luxury infinite pool overlooking Ubud jungle. ${SUBJECT} in tropical swimwear, golden afternoon light, aspirational travel aesthetic, high-detail water and skin textures."
|
|
148
|
+
)
|
|
149
|
+
;;
|
|
150
|
+
"90s")
|
|
151
|
+
PROMPTS=(
|
|
152
|
+
"Using reference image, ${LIKENESS_PREFIX} 90s fashion transformation for ${SUBJECT}. Slip dress with cardigan, butterfly clips, choker. Faded film grain, warm nostalgic tones, 90s yearbook photo style."
|
|
153
|
+
"Using reference image, ${LIKENESS_PREFIX} grunge 90s aesthetic for ${SUBJECT}. Plaid flannel shirt, ripped jeans, band t-shirt. Seattle back-alley backdrop, overcast moody light, authentic retro film texture."
|
|
154
|
+
)
|
|
155
|
+
;;
|
|
156
|
+
"Fitness")
|
|
157
|
+
PROMPTS=(
|
|
158
|
+
"Using reference image, ${LIKENESS_PREFIX} modern premium gym setting. ${SUBJECT} in performance activewear, dramatic studio lighting highlighting muscle definition. Strong confident pose, realistic sweat sheen, high-end fitness photography."
|
|
159
|
+
"Using reference image, ${LIKENESS_PREFIX} outdoor running trail, ${SUBJECT} in athletic gear. Morning golden light, dynamic motion energy, healthy active lifestyle, sharp focus, realistic nature background."
|
|
160
|
+
)
|
|
161
|
+
;;
|
|
162
|
+
"Christmas")
|
|
163
|
+
PROMPTS=(
|
|
164
|
+
"Using reference image, ${LIKENESS_PREFIX} ${SUBJECT} by a sparkling decorated Christmas tree. Cozy knit sweater, warm fireplace glow, snow falling outside window. Golden bokeh lights, festive holiday atmosphere, cinematic lighting."
|
|
165
|
+
)
|
|
166
|
+
;;
|
|
167
|
+
"Halloween")
|
|
168
|
+
PROMPTS=(
|
|
169
|
+
"Using reference image, ${LIKENESS_PREFIX} ${SUBJECT} in a haunted Victorian mansion background. Foggy atmosphere, elaborate vampire or witch costume, moody orange and purple lighting, cinematic horror aesthetic."
|
|
170
|
+
)
|
|
171
|
+
;;
|
|
172
|
+
*)
|
|
173
|
+
echo "Error: Unknown category '$CATEGORY'."
|
|
174
|
+
echo "Supported: LinkedIn, Tinder, Bumble, OldMoney, Cyberpunk, CEO, CleanGirl, DarkAcademia, Anime, Doctor, Lawyer, MobWife, Bali, 90s, Fitness, Christmas, Halloween"
|
|
175
|
+
exit 1
|
|
176
|
+
;;
|
|
177
|
+
esac
|
|
178
|
+
|
|
179
|
+
# 3. Generate Pack
|
|
180
|
+
LIMIT=$((NUM_IMAGES > ${#PROMPTS[@]} ? ${#PROMPTS[@]} : NUM_IMAGES))
|
|
181
|
+
[ "$JSON_ONLY" = false ] && echo "Generating $LIMIT images for category: $CATEGORY using $MODEL..." >&2
|
|
182
|
+
|
|
183
|
+
RESULTS_JSON="[]"
|
|
184
|
+
LOCAL_FILES=()
|
|
185
|
+
|
|
186
|
+
for (( i=0; i<$LIMIT; i++ )); do
|
|
187
|
+
PROMPT="${PROMPTS[$i]}"
|
|
188
|
+
[ "$JSON_ONLY" = false ] && echo "Generating image $((i+1))/$LIMIT..." >&2
|
|
189
|
+
|
|
190
|
+
# Run the generation script and capture JSON result
|
|
191
|
+
# We don't pass --view to generate-image.sh here because we want to handle the batch opening at the end
|
|
192
|
+
GEN_OUTPUT=$(bash "$GENERATE_SCRIPT" --prompt "$PROMPT" --model "$MODEL" --image-url "$IMAGE_URL" --json)
|
|
193
|
+
|
|
194
|
+
# Append to our results array
|
|
195
|
+
RESULTS_JSON=$(echo "$RESULTS_JSON" | jq ". + [$GEN_OUTPUT]")
|
|
196
|
+
|
|
197
|
+
# 4. Handle Downloading for --view
|
|
198
|
+
if [ "$VIEW_FLAG_LOCAL" = true ]; then
|
|
199
|
+
URL=$(echo "$GEN_OUTPUT" | jq -r '.outputs[0]')
|
|
200
|
+
EXT="${URL##*.}"
|
|
201
|
+
[ -z "$EXT" ] || [[ "$EXT" == http* ]] && EXT="jpg"
|
|
202
|
+
mkdir -p "$OUTPUT_DIR"
|
|
203
|
+
TEMP_FILE="$OUTPUT_DIR/muapi_${CATEGORY}_$((i+1))_$(date +%s).$EXT"
|
|
204
|
+
[ "$JSON_ONLY" = false ] && echo "Downloading $URL to $TEMP_FILE..." >&2
|
|
205
|
+
curl -s -o "$TEMP_FILE" "$URL"
|
|
206
|
+
LOCAL_FILES+=("$TEMP_FILE")
|
|
207
|
+
fi
|
|
208
|
+
done
|
|
209
|
+
|
|
210
|
+
# 5. Final Output Formatting
|
|
211
|
+
if [ "$JSON_ONLY" = true ]; then
|
|
212
|
+
echo "$RESULTS_JSON"
|
|
213
|
+
else
|
|
214
|
+
echo ""
|
|
215
|
+
echo "---"
|
|
216
|
+
echo "## ✨ Your $CATEGORY Photo Pack is Ready!"
|
|
217
|
+
echo "Total Images: $LIMIT"
|
|
218
|
+
echo ""
|
|
219
|
+
|
|
220
|
+
# Extract URLs for markdown display
|
|
221
|
+
URLS=$(echo "$RESULTS_JSON" | jq -r '.[] | .outputs[0]')
|
|
222
|
+
|
|
223
|
+
# Display as Markdown Images (Small Preview) then big links
|
|
224
|
+
COUNTER=1
|
|
225
|
+
for URL in $URLS; do
|
|
226
|
+
echo "### Photo $COUNTER"
|
|
227
|
+
echo ""
|
|
228
|
+
echo "[View Full Size]($URL)"
|
|
229
|
+
echo ""
|
|
230
|
+
COUNTER=$((COUNTER + 1))
|
|
231
|
+
done
|
|
232
|
+
|
|
233
|
+
echo "---"
|
|
234
|
+
echo "Files saved to MuAPI CDN. You can now use these links anywhere."
|
|
235
|
+
fi
|
|
236
|
+
|
|
237
|
+
# 6. Open all images at once if --view was requested (macOS only)
|
|
238
|
+
if [ "$VIEW_FLAG_LOCAL" = true ] && [[ "$OSTYPE" == "darwin"* ]]; then
|
|
239
|
+
[ "$JSON_ONLY" = false ] && echo "Opening all generated images..." >&2
|
|
240
|
+
open "${LOCAL_FILES[@]}"
|
|
241
|
+
fi
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-product-ad-cinematic
|
|
3
|
+
name: muapi-product-ad-cinematic
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Cinematic 5–10s product ad from a product photo + brand brief.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Cinematic Product Ad
|
|
11
|
+
|
|
12
|
+
**Cinematic 5–10s product ad from a product photo + brand brief.**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `product_image` | image_url | yes | — | URL of the product photo (must already be uploaded). |
|
|
19
|
+
| `brand_brief` | text | yes | — | Mood / style direction (e.g. "luxury minimal", "playful"). |
|
|
20
|
+
| `duration_sec` | int | no | 6 | Final video length in seconds (5–10). |
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
This skill has TWO phases separated by a user pick. Submit them as two
|
|
26
|
+
separate the plan calls — never bundle downstream steps into the
|
|
27
|
+
first plan.
|
|
28
|
+
|
|
29
|
+
### Phase A — variant exploration (cheap)
|
|
30
|
+
|
|
31
|
+
Submit ONE the plan containing only:
|
|
32
|
+
|
|
33
|
+
1. **Hero frame variants** — 4 separate `muapi image generate` nodes
|
|
34
|
+
(model=nano-banana-2, aspect_ratio=16:9 by default).
|
|
35
|
+
- Each prompt restyles the product against the brand brief mood. Vary
|
|
36
|
+
lighting, palette, framing, and lens between variants. Keep product
|
|
37
|
+
geometry intact.
|
|
38
|
+
- Reference the user's `product_image` if the model supports image
|
|
39
|
+
conditioning; otherwise describe the product in detail.
|
|
40
|
+
|
|
41
|
+
After the plan executes, end your turn with a brief message listing the 4
|
|
42
|
+
asset_ids and asking the user which one to take forward (e.g.
|
|
43
|
+
"Pick a hero (asset_1, asset_2, asset_3, or asset_4)?"). Wait.
|
|
44
|
+
|
|
45
|
+
### Phase B — commit on the picked hero (expensive)
|
|
46
|
+
|
|
47
|
+
Once the user replies with their pick, submit a SECOND the plan:
|
|
48
|
+
|
|
49
|
+
1. **Upscale** the picked frame — `enhance_image` (operation=upscale).
|
|
50
|
+
2. **Animate** the upscaled frame — `muapi video from-image` (model=kling-v3.0-standard-image-to-video,
|
|
51
|
+
duration={{duration_sec}}, prompt="slow cinematic push-in, soft
|
|
52
|
+
volumetric light, subtle product micro-rotation"). Reference the
|
|
53
|
+
upscale's URL with `$nX.url`.
|
|
54
|
+
3. **Background music** — `muapi audio create` (kind=music) — runs in parallel
|
|
55
|
+
with the upscale/animate. Style derived from `brand_brief` (luxury →
|
|
56
|
+
"ambient cinematic, warm strings, slow tempo, instrumental"). Duration
|
|
57
|
+
≈ video length.
|
|
58
|
+
4. Return the upscaled hero image and the final video.
|
|
59
|
+
|
|
60
|
+
## Notes
|
|
61
|
+
- If the brief mentions "luxury", bias the palette to gold/black; for "playful",
|
|
62
|
+
bias to bright/saturated.
|
|
63
|
+
- If video gen fails after failover, fall back to a still-frame slideshow
|
|
64
|
+
(just return the upscaled hero + music).
|
|
65
|
+
- Don't auto-confirm step 4 — its cost (~80 cr) deserves a user nod.
|
|
66
|
+
|
|
67
|
+
## Trigger Keywords
|
|
68
|
+
|
|
69
|
+
`product ad`, `commercial`, `cinematic ad`, `product video`
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Notes for the Executing Agent
|
|
75
|
+
|
|
76
|
+
- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call `muapi` CLI commands. Use `muapi auth configure` first if `MUAPI_API_KEY` is unset.
|
|
77
|
+
- For model IDs without a CLI alias yet, fall back to the raw endpoint via `curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}'` and poll with `muapi predict wait <request_id>`.
|
|
78
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-product-campaign
|
|
3
|
+
name: muapi-product-campaign
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Generate a full multi-channel product campaign — hero visuals, social media assets, short ad video, and platform-specific crops for an end-to-end launch campaign.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Product Campaign Pack
|
|
11
|
+
|
|
12
|
+
**Generate a full multi-channel product campaign — hero visuals, social media assets, short ad video, and platform-specific crops for an end-to-end launch campaign.**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `product_name` | text | yes | — | The product being launched or promoted (e.g. "Nova Pro Wireless Earbuds"). |
|
|
19
|
+
| `campaign_message` | text | yes | — | Core campaign message or tagline (e.g. "Sound That Moves You", "Clean Beauty. Real Results."). |
|
|
20
|
+
| `target_audience` | text | yes | — | Who the campaign targets (e.g. "tech enthusiasts 18-35", "wellness-focused women 28-45"). |
|
|
21
|
+
| `visual_style` | text | no | modern, cinematic, premium | Campaign visual direction (e.g. "bold and vibrant", "soft pastel minimal", "dark luxury editorial"). |
|
|
22
|
+
| `product_image` | image_url | no | — | Optional product reference image. |
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Steps
|
|
26
|
+
|
|
27
|
+
This is a full-scale campaign. Submit a SINGLE the plan with all phases running in parallel.
|
|
28
|
+
|
|
29
|
+
### Phase A — Campaign Hero (2 assets)
|
|
30
|
+
|
|
31
|
+
1. **Hero still image** — If `{{product_image}}` provided, use `muapi image edit` (model=`nano-banana-pro-edit`); else `muapi image generate` (model=`nano-banana-pro`):
|
|
32
|
+
- Prompt: `{{campaign_message}} — hero campaign image for {{product_name}}. {{visual_style}} style. Bold composition, product as centerpiece, dramatic lighting. {{target_audience}} aspirational lifestyle. Full-bleed editorial campaign photography. Clean, award-winning advertising quality.`
|
|
33
|
+
- Aspect ratio: 16:9
|
|
34
|
+
|
|
35
|
+
2. **Square social hero** — `muapi image edit` (model=`bytedance-seedream-v4.5-edit`) using output of step 1:
|
|
36
|
+
- Prompt: `Reframe and optimize for square social media feed format. Keep {{product_name}} centered and dominant. {{visual_style}}, maintain campaign energy. Crop tightly for maximum impact.`
|
|
37
|
+
- Aspect ratio: 1:1
|
|
38
|
+
|
|
39
|
+
### Phase B — Campaign Video
|
|
40
|
+
|
|
41
|
+
3. **Short ad video** — If `{{product_image}}` provided, use `muapi video generate` (model=`kling-v3.0-pro-image-to-video`); else `muapi video generate` (model=`veo3.1-text-to-video`):
|
|
42
|
+
- Prompt: `{{campaign_message}} — product campaign video for {{product_name}}. {{visual_style}} cinematic style. Dynamic reveal, product hero moment, {{target_audience}} lifestyle context. Professional commercial grade, 4K quality, smooth camera motion.`
|
|
43
|
+
- Aspect ratio: 16:9, 8-10 seconds
|
|
44
|
+
|
|
45
|
+
### Phase C — Platform Crops (Parallel)
|
|
46
|
+
|
|
47
|
+
4. **Instagram Story / Reels format** — `muapi image edit` (model=`flux-kontext-pro-i2i`) from step 1 output:
|
|
48
|
+
- Prompt: `Reframe campaign image for 9:16 vertical Story/Reels format. Top area clear for text overlay. Product and campaign energy preserved. {{visual_style}}.`
|
|
49
|
+
- Aspect ratio: 9:16
|
|
50
|
+
|
|
51
|
+
5. **LinkedIn / Email banner** — `muapi image edit` (model=`flux-kontext-pro-i2i`) from step 1 output:
|
|
52
|
+
- Prompt: `Reframe for wide email header or LinkedIn banner. 3:1 ultra-wide crop. Product left-aligned, right side clear for headline text. Professional campaign feel.`
|
|
53
|
+
- Aspect ratio: 3:1
|
|
54
|
+
|
|
55
|
+
After generation:
|
|
56
|
+
- Present all assets as a cohesive campaign set
|
|
57
|
+
- Suggest adding a voiceover to the campaign video with `minimax-speech-2.6-hd`
|
|
58
|
+
- Offer a full `social-pack` skill run for additional platform variations
|
|
59
|
+
|
|
60
|
+
## Notes
|
|
61
|
+
- All phases reference the same product and visual DNA for campaign consistency.
|
|
62
|
+
- For beauty/fashion, use `ai-product-shot` for the hero instead of `nano-banana-pro`.
|
|
63
|
+
- The campaign video should feel like a 6-second premium ad, not a demo.
|
|
64
|
+
|
|
65
|
+
## Trigger Keywords
|
|
66
|
+
|
|
67
|
+
`product campaign`, `campaign`, `launch campaign`, `product launch`, `marketing campaign`, `brand campaign`, `full campaign`, `campaign assets`
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Notes for the Executing Agent
|
|
73
|
+
|
|
74
|
+
- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call `muapi` CLI commands. Use `muapi auth configure` first if `MUAPI_API_KEY` is unset.
|
|
75
|
+
- For model IDs without a CLI alias yet, fall back to the raw endpoint via `curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}'` and poll with `muapi predict wait <request_id>`.
|
|
76
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-product-showcase-video
|
|
3
|
+
name: muapi-product-showcase-video
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Create a dynamic product showcase with explosive ingredient arrangements, followed by a realistic motion animation.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Product Showcase Video
|
|
11
|
+
|
|
12
|
+
**Create a dynamic product showcase with explosive ingredient arrangements, followed by a realistic motion animation.**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `product_image` | image_url | yes | — | A clear photo of the product to be showcased. |
|
|
19
|
+
| `ingredients_description` | text | no | fresh and raw ingredients | Description of the ingredients to fly around the product. |
|
|
20
|
+
| `brand_colors` | text | no | matching brand colors | The primary colors to use for the background. |
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
### Phase A — Dynamic Product Image Generation
|
|
26
|
+
|
|
27
|
+
If `{{product_image}}` is not provided, ask the user to upload a photo of their product.
|
|
28
|
+
|
|
29
|
+
Once the photo is available, submit the plan with ONE step to create the dynamic advertisement image:
|
|
30
|
+
|
|
31
|
+
1. **Dynamic Image Generation** — `muapi image edit` (model=`bytedance-seedream-v4.5-edit`):
|
|
32
|
+
- Reference Image: `{{product_image}}`
|
|
33
|
+
- Prompt: `Photograph this product in a dramatic modern scene accompanied by an explosive outward dynamic arrangement of {{ingredients_description}} flying around the product, signifying its freshness and nutritional value. Promo ad shot, without text, product is emphasized, with {{brand_colors}} as the background. High-quality commercial lighting, sharp detail, vibrant colors.`
|
|
34
|
+
- Aspect ratio: 1:1 or 4:5
|
|
35
|
+
|
|
36
|
+
Present the generated dynamic image to the user for approval.
|
|
37
|
+
|
|
38
|
+
### Phase B — Realistic Motion Animation
|
|
39
|
+
|
|
40
|
+
Once the image is approved, submit the plan to animate the scene:
|
|
41
|
+
|
|
42
|
+
1. **Video Generation** — `muapi video from-image` (model=`seedance-v1.5-pro-i2v-fast`):
|
|
43
|
+
- Reference Image: The dynamic image from Phase A.
|
|
44
|
+
- Prompt: `Create a realistic motion animation of the scene. The ingredients fly outwards from the product in slow motion, with subtle lighting shifts and camera movement. Cinematic quality, smooth animation, professional product commercial vibe.`
|
|
45
|
+
- Aspect ratio: 1:1 or 4:5
|
|
46
|
+
|
|
47
|
+
After generation, present the final product showcase video.
|
|
48
|
+
|
|
49
|
+
## Trigger Keywords
|
|
50
|
+
|
|
51
|
+
`product showcase video`, `dynamic product ad`, `ingredient explosion`, `fresh product animation`, `commercial video`
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Notes for the Executing Agent
|
|
57
|
+
|
|
58
|
+
- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call `muapi` CLI commands. Use `muapi auth configure` first if `MUAPI_API_KEY` is unset.
|
|
59
|
+
- For model IDs without a CLI alias yet, fall back to the raw endpoint via `curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}'` and poll with `muapi predict wait <request_id>`.
|
|
60
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|