cue-ai 0.9.2 → 0.9.3
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 +148 -170
- 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,200 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# AI Clipping — Direct wrapper around muapi.ai's /ai-clipping endpoint.
|
|
3
|
+
#
|
|
4
|
+
# Long video in → ranked vertical short clips out, in one managed API call.
|
|
5
|
+
# Transcription, highlight ranking, dedupe, and face-tracked auto-crop all run
|
|
6
|
+
# server-side. No local Whisper, no local LLM, no GPU.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
# bash run-ai-clipping.sh --video "<URL>" [options]
|
|
10
|
+
#
|
|
11
|
+
# Requires: bash 3.2+, jq, muapi-cli
|
|
12
|
+
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
# ============================================================
|
|
16
|
+
# Locate skills root (works regardless of CWD when invoked)
|
|
17
|
+
# ============================================================
|
|
18
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
19
|
+
SKILLS_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
20
|
+
|
|
21
|
+
# Load .env from skills root if present
|
|
22
|
+
if [ -f "$SKILLS_ROOT/.env" ]; then
|
|
23
|
+
set +u; source "$SKILLS_ROOT/.env" 2>/dev/null || true; set -u
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# ============================================================
|
|
27
|
+
# Defaults
|
|
28
|
+
# ============================================================
|
|
29
|
+
VIDEO=""
|
|
30
|
+
NUM_CLIPS=3
|
|
31
|
+
ASPECT_RATIO="9:16"
|
|
32
|
+
COORDS_ONLY=false
|
|
33
|
+
OUTPUT_JSON=""
|
|
34
|
+
VIEW=false
|
|
35
|
+
ASYNC=false
|
|
36
|
+
POLL_INTERVAL="${MUAPI_POLL_INTERVAL:-5}"
|
|
37
|
+
POLL_TIMEOUT="${MUAPI_POLL_TIMEOUT:-1800}"
|
|
38
|
+
DOWNLOAD_DIR=""
|
|
39
|
+
|
|
40
|
+
# ============================================================
|
|
41
|
+
# Argument parsing
|
|
42
|
+
# ============================================================
|
|
43
|
+
while [[ $# -gt 0 ]]; do
|
|
44
|
+
case $1 in
|
|
45
|
+
--video|-v) VIDEO="$2"; shift 2 ;;
|
|
46
|
+
--num-clips|-n) NUM_CLIPS="$2"; shift 2 ;;
|
|
47
|
+
--aspect-ratio|-a) ASPECT_RATIO="$2"; shift 2 ;;
|
|
48
|
+
--coords-only) COORDS_ONLY=true; shift ;;
|
|
49
|
+
--output-json|-o) OUTPUT_JSON="$2"; shift 2 ;;
|
|
50
|
+
--download) DOWNLOAD_DIR="$2"; shift 2 ;;
|
|
51
|
+
--view) VIEW=true; shift ;;
|
|
52
|
+
--async) ASYNC=true; shift ;;
|
|
53
|
+
--poll-interval) POLL_INTERVAL="$2"; shift 2 ;;
|
|
54
|
+
--poll-timeout) POLL_TIMEOUT="$2"; shift 2 ;;
|
|
55
|
+
--help|-h)
|
|
56
|
+
cat <<'HELP'
|
|
57
|
+
AI Clipping — long video → ranked vertical clips via muapi.ai's /ai-clipping
|
|
58
|
+
Usage: bash run-ai-clipping.sh --video "<URL>" [options]
|
|
59
|
+
|
|
60
|
+
REQUIRED
|
|
61
|
+
--video, -v URL_OR_PATH Hosted mp4 URL, local file path (auto-uploaded), or YouTube URL
|
|
62
|
+
|
|
63
|
+
OPTIONS
|
|
64
|
+
--num-clips, -n N Number of highlights to extract (default: 3)
|
|
65
|
+
--aspect-ratio, -a RATIO 9:16 | 1:1 | 4:5 (default: 9:16)
|
|
66
|
+
--coords-only Return highlight time ranges only, skip cropping
|
|
67
|
+
--output-json, -o PATH Dump full result here (use "-" for stdout)
|
|
68
|
+
--download DIR Download generated clips into DIR
|
|
69
|
+
--view Download clips and open in system viewer (macOS)
|
|
70
|
+
--async Submit and return request_id without polling
|
|
71
|
+
--poll-interval SEC Seconds between job-status polls (default: 5)
|
|
72
|
+
--poll-timeout SEC Give up after this long (default: 1800)
|
|
73
|
+
|
|
74
|
+
EXAMPLES
|
|
75
|
+
# Defaults — three 9:16 clips from a hosted URL
|
|
76
|
+
bash run-ai-clipping.sh --video "https://example.com/podcast.mp4"
|
|
77
|
+
|
|
78
|
+
# 8 clips, view in player
|
|
79
|
+
bash run-ai-clipping.sh -v "<URL>" -n 8 --view
|
|
80
|
+
|
|
81
|
+
# Square Instagram-feed clips, dump full result JSON
|
|
82
|
+
bash run-ai-clipping.sh -v "<URL>" -a 1:1 -n 3 -o result.json
|
|
83
|
+
|
|
84
|
+
# Just timestamps — render locally yourself
|
|
85
|
+
bash run-ai-clipping.sh -v "<URL>" --coords-only -o result.json
|
|
86
|
+
|
|
87
|
+
# Async — fire-and-forget, poll later
|
|
88
|
+
REQUEST_ID=$(bash run-ai-clipping.sh -v "<URL>" --async -o - | jq -r '.request_id')
|
|
89
|
+
muapi predict wait "$REQUEST_ID" --download ./outputs
|
|
90
|
+
|
|
91
|
+
# Local file
|
|
92
|
+
bash run-ai-clipping.sh -v ./recording.mp4 -n 5 --view
|
|
93
|
+
HELP
|
|
94
|
+
exit 0
|
|
95
|
+
;;
|
|
96
|
+
*) echo "Unknown flag: $1" >&2; exit 2 ;;
|
|
97
|
+
esac
|
|
98
|
+
done
|
|
99
|
+
|
|
100
|
+
# ============================================================
|
|
101
|
+
# Validation
|
|
102
|
+
# ============================================================
|
|
103
|
+
if [[ -z "$VIDEO" ]]; then
|
|
104
|
+
echo "ERROR: --video is required" >&2
|
|
105
|
+
exit 2
|
|
106
|
+
fi
|
|
107
|
+
case "$ASPECT_RATIO" in
|
|
108
|
+
9:16|1:1|4:5) ;;
|
|
109
|
+
*) echo "ERROR: --aspect-ratio must be one of: 9:16, 1:1, 4:5 (got: $ASPECT_RATIO)" >&2; exit 2 ;;
|
|
110
|
+
esac
|
|
111
|
+
if ! command -v muapi >/dev/null 2>&1; then
|
|
112
|
+
echo "ERROR: muapi-cli not found. Install with: npm install -g muapi-cli" >&2
|
|
113
|
+
exit 3
|
|
114
|
+
fi
|
|
115
|
+
if ! command -v jq >/dev/null 2>&1; then
|
|
116
|
+
echo "ERROR: jq not found on PATH" >&2
|
|
117
|
+
exit 3
|
|
118
|
+
fi
|
|
119
|
+
if [[ -z "${MUAPI_API_KEY:-}" ]]; then
|
|
120
|
+
if ! muapi auth status >/dev/null 2>&1; then
|
|
121
|
+
echo "ERROR: MUAPI_API_KEY not set and muapi-cli not authenticated. Run: muapi auth configure" >&2
|
|
122
|
+
exit 3
|
|
123
|
+
fi
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
# ============================================================
|
|
127
|
+
# Stage 1 — Resolve --video to a hosted URL
|
|
128
|
+
# ============================================================
|
|
129
|
+
VIDEO_URL=""
|
|
130
|
+
case "$VIDEO" in
|
|
131
|
+
http*://*)
|
|
132
|
+
VIDEO_URL="$VIDEO"
|
|
133
|
+
;;
|
|
134
|
+
*)
|
|
135
|
+
if [[ ! -f "$VIDEO" ]]; then
|
|
136
|
+
echo "ERROR: local file not found: $VIDEO" >&2
|
|
137
|
+
exit 2
|
|
138
|
+
fi
|
|
139
|
+
echo ">> Uploading local file"
|
|
140
|
+
VIDEO_URL=$(muapi upload file "$VIDEO" --output-json --jq '.url' | tr -d '"')
|
|
141
|
+
;;
|
|
142
|
+
esac
|
|
143
|
+
echo ">> Source: $VIDEO_URL"
|
|
144
|
+
|
|
145
|
+
# ============================================================
|
|
146
|
+
# Stage 2 — Call /ai-clipping
|
|
147
|
+
# ============================================================
|
|
148
|
+
ARGS=(
|
|
149
|
+
edit clipping
|
|
150
|
+
--video "$VIDEO_URL"
|
|
151
|
+
--num-highlights "$NUM_CLIPS"
|
|
152
|
+
--aspect-ratio "$ASPECT_RATIO"
|
|
153
|
+
--poll-interval "$POLL_INTERVAL"
|
|
154
|
+
--poll-timeout "$POLL_TIMEOUT"
|
|
155
|
+
--output-json
|
|
156
|
+
)
|
|
157
|
+
[[ "$COORDS_ONLY" == true ]] && ARGS+=(--return-coordinates-only)
|
|
158
|
+
[[ "$ASYNC" == true ]] && ARGS+=(--no-wait)
|
|
159
|
+
if [[ "$VIEW" == true || -n "$DOWNLOAD_DIR" ]]; then
|
|
160
|
+
DOWNLOAD_DIR="${DOWNLOAD_DIR:-./ai-clipping-output}"
|
|
161
|
+
ARGS+=(--download "$DOWNLOAD_DIR")
|
|
162
|
+
fi
|
|
163
|
+
[[ "$VIEW" == true ]] && ARGS+=(--view)
|
|
164
|
+
|
|
165
|
+
echo ">> Calling muapi edit clipping (num=$NUM_CLIPS, ratio=$ASPECT_RATIO)"
|
|
166
|
+
RAW_RESULT=$(muapi "${ARGS[@]}")
|
|
167
|
+
|
|
168
|
+
if [[ "$ASYNC" == true ]]; then
|
|
169
|
+
echo "$RAW_RESULT"
|
|
170
|
+
exit 0
|
|
171
|
+
fi
|
|
172
|
+
|
|
173
|
+
# ============================================================
|
|
174
|
+
# Stage 3 — Report
|
|
175
|
+
# ============================================================
|
|
176
|
+
SHORTS_COUNT=$(echo "$RAW_RESULT" | jq '(.shorts // []) | length')
|
|
177
|
+
echo ""
|
|
178
|
+
echo "========================================================================"
|
|
179
|
+
echo "AI Clipping: $SHORTS_COUNT clip(s) returned"
|
|
180
|
+
echo "========================================================================"
|
|
181
|
+
echo ""
|
|
182
|
+
|
|
183
|
+
echo "$RAW_RESULT" | jq -r '
|
|
184
|
+
(.shorts // [])
|
|
185
|
+
| to_entries[]
|
|
186
|
+
| "#\(.key + 1) score=\(.value.score // "?") \(.value.start_time)s → \(.value.end_time)s
|
|
187
|
+
title: \(.value.title // "—")
|
|
188
|
+
hook: \"\(.value.hook_sentence // "")\"
|
|
189
|
+
reason: \(.value.virality_reason // "—")
|
|
190
|
+
clip: \(.value.clip_url // "(coords-only)")
|
|
191
|
+
"'
|
|
192
|
+
|
|
193
|
+
if [[ -n "$OUTPUT_JSON" ]]; then
|
|
194
|
+
if [[ "$OUTPUT_JSON" == "-" ]]; then
|
|
195
|
+
echo "$RAW_RESULT"
|
|
196
|
+
else
|
|
197
|
+
echo "$RAW_RESULT" > "$OUTPUT_JSON"
|
|
198
|
+
echo "Full result written to: $OUTPUT_JSON"
|
|
199
|
+
fi
|
|
200
|
+
fi
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-ai-fight-scene
|
|
3
|
+
name: muapi-ai-fight-scene
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Generate a high-cut-density action / fight scene by first composing a 16-cell storyboard image, then driving Seedance 2.0 image-to-video off that storyboard. Stacks GPT-Image-2 (character sheet + storyboard), Nano-Banana-2 (environment concept), and Seedance 2.0 i2v.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# AI Fight Scene Generator
|
|
11
|
+
|
|
12
|
+
**Generate a high-cut-density action / fight scene by first composing a 16-cell storyboard image, then driving Seedance 2.0 image-to-video off that storyboard.**
|
|
13
|
+
|
|
14
|
+
The core idea: **action tension comes from cut density, not single-shot quality.** Forcing the video model to follow a pre-drawn 4×4 storyboard grid gives you 16 distinct shots in a 15-second clip — landing punches, reverse angles, ECUs, whip-pans — that no t2v prompt could choreograph on its own.
|
|
15
|
+
|
|
16
|
+
## Inputs
|
|
17
|
+
|
|
18
|
+
| Name | Type | Required | Default | Description |
|
|
19
|
+
|:---|:---|:---|:---|:---|
|
|
20
|
+
| `character_description` | text | yes | — | Full physical description of the fighter(s). Asymmetric details (eye colour, scar side, holster on left hip) help the model preserve identity across panels. |
|
|
21
|
+
| `environment_description` | text | yes | — | The scene setting — e.g. "cyberpunk wet back-alley, neon kanji signage, Stray-game aesthetic, rain on chrome." |
|
|
22
|
+
| `action_script` | text | yes | — | The action beat — prose or numbered beats. E.g. "Hero is cornered → blocks first punch → counter-elbow → throw opponent into trash cans → finisher." |
|
|
23
|
+
| `style_direction` | text | no | cinematic action film, anamorphic lens, high contrast, motion blur on hits | Aesthetic / look tags applied to every frame. |
|
|
24
|
+
| `duration` | int | no | 15 | Final video length in seconds. The storyboard's 16 cells map roughly 1 shot per second at default. |
|
|
25
|
+
| `aspect_ratio` | text | no | 16:9 | Output aspect — `16:9` cinematic, `9:16` vertical, `1:1` square. |
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Steps
|
|
29
|
+
|
|
30
|
+
### Phase A — Character Sheet
|
|
31
|
+
|
|
32
|
+
Generate a clean turnaround-style character sheet using `muapi image generate` (model=`gpt-image-2-text-to-image`):
|
|
33
|
+
|
|
34
|
+
- Prompt: `Character reference sheet of {{character_description}}. Three views — front, 3/4, profile — on a neutral grey backdrop. Studio lighting, full body, no text overlays, photoreal. Asymmetric identifying details preserved on the correct side. {{style_direction}}.`
|
|
35
|
+
- Aspect ratio: `3:2`
|
|
36
|
+
|
|
37
|
+
Present the character sheet and confirm identity details look right before proceeding. **This image becomes reference #1 for later phases.**
|
|
38
|
+
|
|
39
|
+
### Phase B — Environment Concept
|
|
40
|
+
|
|
41
|
+
Use `muapi image generate` (model=`nano-banana-2`) to design the scene/world:
|
|
42
|
+
|
|
43
|
+
- Prompt: `Wide establishing shot of {{environment_description}}. No characters in frame — environment only. Strong perspective lines, depth, atmospheric haze. {{style_direction}}. Production-design concept art.`
|
|
44
|
+
- Aspect ratio: `{{aspect_ratio}}`
|
|
45
|
+
|
|
46
|
+
Nano-Banana-2 is chosen here for its reasoning-driven composition — it's better than text-to-image-only models at producing locations with believable spatial logic (chokepoints, cover, sightlines) that an action scene can use. Present for approval. **This becomes reference #2.**
|
|
47
|
+
|
|
48
|
+
### Phase C — 16-Cell Storyboard
|
|
49
|
+
|
|
50
|
+
Compose the action onto a single 4×4 storyboard image using `muapi image edit` (model=`gpt-image-2-image-to-image`):
|
|
51
|
+
|
|
52
|
+
- Reference Images: the character sheet from Phase A **and** the environment plate from Phase B.
|
|
53
|
+
- Prompt:
|
|
54
|
+
```
|
|
55
|
+
Compose a 4×4 storyboard grid (16 numbered cells) for the following action sequence:
|
|
56
|
+
{{action_script}}
|
|
57
|
+
|
|
58
|
+
CHARACTER (use reference image 1 identity throughout, asymmetric details preserved):
|
|
59
|
+
{{character_description}}
|
|
60
|
+
|
|
61
|
+
LOCATION (use reference image 2 spatial layout):
|
|
62
|
+
{{environment_description}}
|
|
63
|
+
|
|
64
|
+
Each cell labels: SHOT # (1–16) · SIZE (WIDE / MS / CU / ECU) · CAMERA-MOVE arrow (push, pull, whip, dolly, crash-zoom, handheld) · 1-word RHYTHM note (BEAT / IMPACT / RECOVERY / RESET).
|
|
65
|
+
|
|
66
|
+
Vary shot size aggressively — never two WIDEs in a row. Land every IMPACT on a CU or ECU.
|
|
67
|
+
Hand-drawn comic-book ink-and-wash style, monochrome with selective red accents on hits.
|
|
68
|
+
Numbered cells, clear gutters between panels.
|
|
69
|
+
|
|
70
|
+
Aesthetic: {{style_direction}}.
|
|
71
|
+
```
|
|
72
|
+
- Aspect ratio: `1:1` (square works best for a 4×4 grid)
|
|
73
|
+
|
|
74
|
+
Present the storyboard to the user. Confirm:
|
|
75
|
+
- The 16 shots read clearly
|
|
76
|
+
- Identity stays consistent cell-to-cell
|
|
77
|
+
- Cut density / shot-size variation looks aggressive enough
|
|
78
|
+
|
|
79
|
+
If a panel reads poorly, regenerate just the storyboard with that cell's note bolded ("CELL 7 must be an ECU on the right fist").
|
|
80
|
+
|
|
81
|
+
### Phase D — Storyboard → Video (Seedance 2.0)
|
|
82
|
+
|
|
83
|
+
Hand the storyboard to `muapi video from-image` (model=`seedance-v2.0-i2v`):
|
|
84
|
+
|
|
85
|
+
- Reference Image: the 16-cell storyboard from Phase C.
|
|
86
|
+
- Prompt:
|
|
87
|
+
```
|
|
88
|
+
Generate a {{duration}}-second action sequence that strictly follows the 16-cell storyboard reference image, cell-by-cell, top-left to bottom-right.
|
|
89
|
+
|
|
90
|
+
- Honour each cell's labelled SHOT SIZE and CAMERA-MOVE — match cuts to the storyboard's rhythm notes.
|
|
91
|
+
- Strong cinematic feel and shot language. Exaggerated dynamics. Hits land hard with motion blur and impact frames.
|
|
92
|
+
- Camera language: anamorphic, handheld where the storyboard calls for it, locked-off where it doesn't.
|
|
93
|
+
- Native audio: impact sfx on every IMPACT cell, footsteps, fabric/Foley, restrained low score under the action.
|
|
94
|
+
|
|
95
|
+
Action being rendered: {{action_script}}.
|
|
96
|
+
Aesthetic: {{style_direction}}.
|
|
97
|
+
```
|
|
98
|
+
- Duration: `{{duration}}` (default 15)
|
|
99
|
+
- Aspect ratio: `{{aspect_ratio}}`
|
|
100
|
+
|
|
101
|
+
After generation, present the final video. If the cut density feels too low or shots don't match the storyboard, regenerate Phase D first (cheaper than rebuilding the storyboard) with the prompt emphasising "strict cell-by-cell adherence" more aggressively.
|
|
102
|
+
|
|
103
|
+
## Notes
|
|
104
|
+
|
|
105
|
+
- **Why the storyboard image and not a text storyboard?** Seedance 2.0 i2v anchors its motion plan to the visual reference. A grid of 16 drawn cells gives it 16 visual targets to hit — text descriptions of shots get averaged into mush.
|
|
106
|
+
- **Asymmetric character details matter.** Without something like "scar over the right eyebrow" or "leather glove on the left hand only", identity drift between cells is the #1 failure mode.
|
|
107
|
+
- **Use `seedance-2.0-i2v-480p` to draft.** Cheaper preview pass before committing to the full-res `seedance-v2.0-i2v` run.
|
|
108
|
+
- **For longer fights**, chain two runs: first run uses storyboard A (cells 1–16, beats 1–15s); second run uses storyboard B (cells 17–32, beats 15–30s) with the last cell of A as a continuity anchor in B's first cell.
|
|
109
|
+
- **Language**: Both English and Chinese prompts work in all four models, so the storyboard cell labels can be in either language.
|
|
110
|
+
|
|
111
|
+
## Trigger Keywords
|
|
112
|
+
|
|
113
|
+
`fight scene`, `action sequence`, `storyboard to video`, `cut density`, `cinematic action`, `combat choreography`, `seedance 2 storyboard`
|
|
114
|
+
|
|
115
|
+
## Pipeline at a Glance
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
character_description ──► [GPT-Image-2 t2i] ─► character sheet ──┐
|
|
119
|
+
│
|
|
120
|
+
environment_description ─► [Nano-Banana-2 t2i] ─► environment plate ┼─► [GPT-Image-2 i2i] ─► 16-cell storyboard ─► [Seedance 2.0 i2v] ─► 15s action video
|
|
121
|
+
│
|
|
122
|
+
action_script + style_direction ───────────────────────────────────►┘
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Notes for the Executing Agent
|
|
128
|
+
|
|
129
|
+
- 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.
|
|
130
|
+
- 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>`.
|
|
131
|
+
- Phase C uses TWO reference images (character sheet + environment plate). When calling `gpt-image-2-image-to-image`, pass them as a list under `images_list` (or the model's documented multi-ref field).
|
|
132
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-amazon-product-listing
|
|
3
|
+
name: muapi-amazon-product-listing
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Generate a complete Amazon product listing image set — hero image, lifestyle shot, infographic with features, and comparison/detail closeups optimized for Amazon standards.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Amazon Product Listing Pack
|
|
11
|
+
|
|
12
|
+
**Generate a complete Amazon product listing image set — hero image, lifestyle shot, infographic with features, and comparison/detail closeups optimized for Amazon standards.**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `product_name` | text | yes | — | The product name (e.g. "Stainless Steel Water Bottle 32oz"). |
|
|
19
|
+
| `product_category` | text | yes | — | Amazon category (e.g. "Kitchen & Dining", "Sports & Outdoors", "Electronics"). |
|
|
20
|
+
| `key_features` | text | yes | — | Comma-separated top features to highlight (e.g. "leak-proof lid, BPA-free, keeps cold 24h, fits cupholder"). |
|
|
21
|
+
| `target_buyer` | text | no | general consumer | Who buys this (e.g. "athletes", "busy moms", "office workers aged 25-45"). |
|
|
22
|
+
| `product_image` | image_url | no | — | Optional existing product photo to use as base reference. |
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Steps
|
|
26
|
+
|
|
27
|
+
Submit a SINGLE the plan with all steps running in parallel.
|
|
28
|
+
|
|
29
|
+
### All 4 Images (Parallel)
|
|
30
|
+
|
|
31
|
+
1. **Hero image (white background)** — `muapi image generate` (model=`ai-product-photography`) if `{{product_image}}` provided, else `muapi image generate` (model=`gpt4o-text-to-image`):
|
|
32
|
+
- Prompt: `Professional Amazon main listing hero image of {{product_name}}. Pure white background #FFFFFF. Product centered, perfectly lit with soft studio lighting, no shadows. High resolution, commercial product photography, sharp focus on all details, 2000x2000px equivalent quality.`
|
|
33
|
+
- Aspect ratio: 1:1
|
|
34
|
+
|
|
35
|
+
2. **Lifestyle/context shot** — `muapi image generate` (model=`ai-product-shot`) if `{{product_image}}` provided, else `muapi image generate` (model=`nano-banana-pro`):
|
|
36
|
+
- Prompt: `Amazon lifestyle image of {{product_name}} being used by {{target_buyer}} in a natural setting. {{product_category}} product in real-life use context. Warm natural lighting, aspirational but relatable, slight bokeh background. Commercial lifestyle photography, professional quality.`
|
|
37
|
+
- Aspect ratio: 1:1
|
|
38
|
+
|
|
39
|
+
3. **Feature infographic** — `muapi image generate` (model=`gpt4o-text-to-image`):
|
|
40
|
+
- Prompt: `Amazon product detail page infographic for {{product_name}}. Shows product with 4-5 callout arrows highlighting these key features: {{key_features}}. Clean white or light grey background, professional typography, bold feature labels with icons. Amazon A+ content style, feature benefit layout, commercial design.`
|
|
41
|
+
- Aspect ratio: 1:1
|
|
42
|
+
|
|
43
|
+
4. **Closeup detail shot** — `muapi image generate` (model=`nano-banana-pro`):
|
|
44
|
+
- Prompt: `Extreme closeup macro product detail shot of {{product_name}} — focus on premium materials, texture, quality craftsmanship. Studio lighting, white background, ultra sharp focus, demonstrates quality. Amazon product detail image showing materials/finish.`
|
|
45
|
+
- Aspect ratio: 1:1
|
|
46
|
+
|
|
47
|
+
After generation:
|
|
48
|
+
- Present all 4 images in order (main > lifestyle > infographic > detail)
|
|
49
|
+
- Suggest uploading to canvas to arrange as a listing mockup
|
|
50
|
+
- Offer to generate 3 additional A+ content module images
|
|
51
|
+
|
|
52
|
+
## Notes
|
|
53
|
+
- Amazon requires main image on pure white background — enforce this strictly.
|
|
54
|
+
- Key features should be visually distinct and scannable in the infographic.
|
|
55
|
+
- For electronics, add "showing ports, buttons, and connections clearly" to the detail shot.
|
|
56
|
+
|
|
57
|
+
## Trigger Keywords
|
|
58
|
+
|
|
59
|
+
`amazon listing`, `amazon product`, `product listing`, `ecommerce listing`, `amazon images`, `product photography amazon`, `listing images`
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Notes for the Executing Agent
|
|
65
|
+
|
|
66
|
+
- 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.
|
|
67
|
+
- 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>`.
|
|
68
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-animal-video-generator
|
|
3
|
+
name: muapi-animal-video-generator
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Create a hilarious and ultra-realistic video of an anthropomorphic animal acting like a human vlogger in a real-world setting.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Animal Vlogger Video
|
|
11
|
+
|
|
12
|
+
**Create a hilarious and ultra-realistic video of an anthropomorphic animal acting like a human vlogger in a real-world setting.**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `animal_type` | text | no | monkey | The type of animal vlogging (e.g., monkey, dog, cat, bear). |
|
|
19
|
+
| `location` | text | no | busy streets of Noida, India | The setting for the vlog. |
|
|
20
|
+
| `clothing` | text | no | a bright red t-shirt | What the animal is wearing. |
|
|
21
|
+
| `script` | text | no | क्या यार, कहाँ फंस गया नॉएडा में आके? इससे तो बैंगलोर ही अच्छा था. यहाँ तो बड़ी गर्मी है भाई. पसीने ही छूट गए मेरे तो. | The dialogue for lip-sync. |
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## Steps
|
|
25
|
+
|
|
26
|
+
### Phase A — Generate Vlogger Image
|
|
27
|
+
|
|
28
|
+
Submit the plan with ONE step to create the base image of the animal vlogger:
|
|
29
|
+
|
|
30
|
+
1. **Image Generation** — `muapi image generate` (model=`nano-banana` or `nano-banana-pro`):
|
|
31
|
+
- Prompt: `Ultra-realistic, cinematic portrait of an expressive {{animal_type}} wearing {{clothing}}, holding a selfie stick on the {{location}}. The {{animal_type}} is anthropomorphic, walking upright, and looks like a believable vlogger. Sweating slightly in the heat, highly detailed, photorealistic. Background shows a bustling street, people eating at stalls, vibrant urban details.`
|
|
32
|
+
- Aspect ratio: 9:16 (for vertical vlog style)
|
|
33
|
+
|
|
34
|
+
After generating the image, present it to the user.
|
|
35
|
+
|
|
36
|
+
### Phase B — Video Generation
|
|
37
|
+
|
|
38
|
+
Once the image is approved, submit a second the plan with ONE step to animate it with lip-sync:
|
|
39
|
+
|
|
40
|
+
1. **Video Generation** — `muapi video generate` or `muapi video from-image` (model=`veo3.1-fast-image-to-video`):
|
|
41
|
+
- Reference Image: The generated image from Phase A.
|
|
42
|
+
- Prompt: `Create an ultra-realistic cinematic video featuring a lifelike {{animal_type}} vlogging with a selfie stick on the {{location}}. The film starts in selfie mode, camera slightly wide-angle. The {{animal_type}} is expressive, looks mildly disgruntled, and speaks naturally. Occasional quick zoom-in on the disappointed face. Background features busy street life, vibrant colors. Smooth gimbal-like camera motion.`
|
|
43
|
+
- Dialogue for Lip-Sync (if tool supports audio/lipsync): `{{script}}`
|
|
44
|
+
- Aspect ratio: 9:16
|
|
45
|
+
|
|
46
|
+
After generation, present the final funny video.
|
|
47
|
+
|
|
48
|
+
## Trigger Keywords
|
|
49
|
+
|
|
50
|
+
`animal video`, `funny monkey video`, `animal vlogger`, `vlog video`, `monkey in noida`
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Notes for the Executing Agent
|
|
56
|
+
|
|
57
|
+
- 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.
|
|
58
|
+
- 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>`.
|
|
59
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-award-ceremony-video
|
|
3
|
+
name: muapi-award-ceremony-video
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Generate a 15-second cinematic awards-ceremony video — a host announces a winner from the stage, a spotlight finds them in the crowd, they walk up to the podium, receive the award, and the LED display reveals their name and "THE BEST ACTOR".
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Award Ceremony Video
|
|
11
|
+
|
|
12
|
+
**Generate a 15-second cinematic awards-ceremony video — a host announces a winner from the stage, a spotlight finds them in the crowd, they walk up to the podium, receive the award, and the LED display reveals their name and "THE BEST ACTOR".**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `winner_image` | image_url | yes | — | A clear photo of the winner. Becomes `@image_1` — their identity is strict-locked across the video. |
|
|
19
|
+
| `host_image` | image_url | yes | — | A clear photo of the host. Becomes `@image_2` — sole presenter on stage at the podium. |
|
|
20
|
+
| `winner_name` | text | no | Olivia | The name announced by the host and shown on the LED stage display under "THE BEST ACTOR". |
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
### Phase A — Confirm Inputs
|
|
26
|
+
|
|
27
|
+
If either `{{winner_image}}` or `{{host_image}}` is missing, ask the user to upload them. Confirm `{{winner_name}}` before generation — it appears spoken in the audio and rendered on the LED display.
|
|
28
|
+
|
|
29
|
+
### Phase B — Generate the Ceremony Video
|
|
30
|
+
|
|
31
|
+
Submit the plan with ONE step using the Seedance 2.0 image-to-video fast variant (multi-reference). Pass the images in this exact order — order maps to `@image_1` then `@image_2`:
|
|
32
|
+
|
|
33
|
+
1. **Award Ceremony Video** — `muapi video from-image` (model=`seedance-2-image-to-video-fast`, or fall back to raw endpoint `bytedance-seedance-2-0-reference-to-video-fast`):
|
|
34
|
+
- Reference images (in order): `{{winner_image}}`, `{{host_image}}`
|
|
35
|
+
- Aspect ratio: `16:9`
|
|
36
|
+
- Duration: `15`
|
|
37
|
+
- Resolution: `720p`
|
|
38
|
+
- Generate audio: `true`
|
|
39
|
+
- Prompt:
|
|
40
|
+
```
|
|
41
|
+
**Style:** Ultra-realistic live awards ceremony scene. Multi-camera broadcast style — switches between polished TV broadcast angles and intimate handheld documentary coverage. Cinematic prestige feel — think Grammy Awards or Academy Awards production quality. Natural human reactions, no over-acting.
|
|
42
|
+
|
|
43
|
+
**Audio:** Natural ceremony sound — elegant orchestral background music, host microphone voice projecting through venue speakers, crowd murmur, then erupting applause and cheers, chair movement, footsteps on stage, trophy/plaque handling sound, emotional crowd reaction.
|
|
44
|
+
|
|
45
|
+
**Lighting:** Grand indoor awards venue. Dramatic stage lighting — warm golden spotlights on stage, cooler ambient lighting over audience seating. Broadcast camera lights. LED stage displays casting colored light. When winner is announced — a warm spotlight sweeps and locks onto the winner in the audience.
|
|
46
|
+
|
|
47
|
+
**Setting:** Massive prestigious awards venue — Grammy or Academy Awards scale. Grand stage with towering LED displays, elegant podium, live orchestra pit. Thousands of formally dressed audience members seated in rows. Press cameras lining the aisles. Large overhead screens showing live broadcast feed. The venue radiates prestige and scale.
|
|
48
|
+
|
|
49
|
+
**Main Character STRICT LOCK:**
|
|
50
|
+
|
|
51
|
+
**@image_1 — THE WINNER "{{winner_name}}":** Use @image_1 as strict identity. The person dressed in formal awards show attire for the award ceremony. No sunglasses. No modifications to face or build. Seated in the audience among other formally dressed attendees.
|
|
52
|
+
|
|
53
|
+
**@image_2 — THE HOST:** Use @image_2 as strict identity as the sole host on stage at the podium. Maintain exact face, build, and features. Dressed in formal awards show attire. No modifications to face or build allowed.
|
|
54
|
+
|
|
55
|
+
**SCENE TIMELINE — 15 SECONDS**
|
|
56
|
+
|
|
57
|
+
**0–3s — THE ANNOUNCEMENT:**
|
|
58
|
+
**Broadcast close-up** directly on @image_2's face — tight, cinematic, high production quality. @image_2 stands at the podium microphone under a warm golden spotlight. Expression is composed, charismatic, building suspense deliberately. The person holds the envelope or card, glances down at it one final time, then looks straight into camera. A beat of silence. The person leans into the microphone and says slowly: *"And the winner is..."* Camera holds tight on @image_2's face — lips, expression, the tension of the moment. Crowd murmur audible in background.
|
|
59
|
+
|
|
60
|
+
**3–6s — THE WINNER:**
|
|
61
|
+
Hard **broadcast cut** to audience — low-angle TV camera shot pushing through seated rows. Camera finds @image_1 seated among other guests, relaxed, not expecting it. @image_2's voice continues booming through the venue speakers: *"...{{winner_name}}"* Spotlight snaps onto @image_1 from above. The person's expression shifts — genuine shock, eyes wide, mouth slightly open, then breaks into a real overwhelmed smile. The person looks left and right at the people beside in disbelief. The crowd erupts into applause and cheers. People around the person stand, clapping, patting their shoulders.
|
|
62
|
+
|
|
63
|
+
**6–9s — RISING AND WALKING:**
|
|
64
|
+
@image_1 straightens up, composes themselves, stands from their seat. **Handheld documentary camera** picks the person up immediately — tracking from the aisle as the person moves forward toward the stage. Camera moves with the person — slightly shaky, intimate, real. Applause continues thundering through the venue. Overhead broadcast screens cut to the person's face live. The person walks with composure — attire clean, posture upright, expression warm and slightly emotional.
|
|
65
|
+
|
|
66
|
+
**9–12s — REACHING THE STAGE:**
|
|
67
|
+
Handheld camera follows @image_1 up the stage steps. Bright stage spotlights hit the person fully as they ascend. @image_2 steps forward from the podium smiling warmly, holding the award plaque with both hands. @image_1 reaches the podium. @image_2 presents the plaque — @image_1 receives it with both hands, looks down at it for a brief genuine moment. The two share a natural smile and brief handshake. Behind them on the massive **LED stage display**: a large portrait of @image_1's face, the person's name in bold elegant typography — **"{{winner_name}}"** — and beneath it: **"THE BEST ACTOR."** The display glows and pulses with celebratory graphics.
|
|
68
|
+
|
|
69
|
+
**12–15s — THE MOMENT:**
|
|
70
|
+
Camera settles into a **wide broadcast shot** of the full stage — @image_1 standing at the podium, award plaque in hand, @image_2 standing beside the person, LED wall blazing behind them both with @image_1's name and face. Spotlights lock on @image_1. Applause fills the entire venue — standing ovation building across the audience. @image_1 raises the plaque slightly, looks out at the crowd, smile composed and genuine. @image_2 leads the applause from the stage beside the person. Final frame holds — the full stage, the glowing LED display, the roaring crowd, and @image_1 standing at the center of it all. No fade to black.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
After generation, present the final 15-second award-ceremony video.
|
|
74
|
+
|
|
75
|
+
## Trigger Keywords
|
|
76
|
+
|
|
77
|
+
`award ceremony`, `awards show video`, `oscars video`, `grammy ceremony`, `best actor award`, `winner announcement video`, `red carpet award`
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Notes for the Executing Agent
|
|
83
|
+
|
|
84
|
+
- 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.
|
|
85
|
+
- **Image order is load-bearing.** The Winner must be the first image (resolves to `@image_1`) and the Host must be the second (`@image_2`). Reversing them swaps who announces and who walks up.
|
|
86
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call. The winner's name appears both in the spoken audio cue and on the LED display, so spell-check it before generation.
|
|
87
|
+
- 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 '{...}'` (passing `image_urls`, `aspect_ratio`, `duration`, `resolution`, `generate_audio`, `prompt`) and poll with `muapi predict wait <request_id>`.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-blog-header
|
|
3
|
+
name: muapi-blog-header
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Create a professional, eye-catching blog post header image sized for web (1200×628) with optional title composition guidance.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Blog Header
|
|
11
|
+
|
|
12
|
+
**Create a professional, eye-catching blog post header image sized for web (1200×628) with optional title composition guidance.**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `topic` | text | yes | — | The blog post topic or title (e.g. "10 productivity hacks for remote developers"). |
|
|
19
|
+
| `publication_style` | text | no | clean, editorial, modern, professional | Visual style matching the blog's brand (e.g. "dark tech blog", "warm lifestyle", "minimalist corporate"). |
|
|
20
|
+
| `dominant_color` | text | no | — | Optional primary color direction (e.g. "deep blue", "warm amber", "monochrome"). |
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
Generate a single, publication-quality blog header in one shot — no plan needed unless the user requests variants.
|
|
26
|
+
|
|
27
|
+
1. Derive a strong visual metaphor for `{{topic}}`:
|
|
28
|
+
- Avoid cliché stock photo compositions (handshake, lightbulb alone).
|
|
29
|
+
- Prefer: dynamic flat lay, abstract concept visualization, illustrated scene, or dramatic lifestyle moment.
|
|
30
|
+
2. Build the image prompt:
|
|
31
|
+
- Subject derived from the metaphor above.
|
|
32
|
+
- Style: `{{publication_style}}, editorial photography, 16:9 wide, professional blog header, `
|
|
33
|
+
`ample negative space on the left side for title text overlay, {{dominant_color}} color palette`.
|
|
34
|
+
- Tier: quality.
|
|
35
|
+
- Aspect ratio: 1.91:1 (standard Open Graph / blog hero).
|
|
36
|
+
3. Call `muapi image generate` (model=gpt-image-2-text-to-image, aspect_ratio=21:9).
|
|
37
|
+
|
|
38
|
+
### Deliverables
|
|
39
|
+
|
|
40
|
+
Return:
|
|
41
|
+
- The header image asset.
|
|
42
|
+
- **Title placement guidance**: where to overlay the blog title for best readability.
|
|
43
|
+
- **Quick alt-text**: SEO-friendly image alt text (1 sentence).
|
|
44
|
+
|
|
45
|
+
## Notes
|
|
46
|
+
- Leave empty space (negative space) intentionally so titles can be overlaid without clashing.
|
|
47
|
+
- If the user uploads an existing brand photo, use `muapi image edit` to adapt it instead of generating from scratch.
|
|
48
|
+
- For dark-mode blogs, suggest a dark background; for light, keep backgrounds bright.
|
|
49
|
+
|
|
50
|
+
## Trigger Keywords
|
|
51
|
+
|
|
52
|
+
`blog header`, `blog image`, `article image`, `featured image`, `og image`, `open graph image`, `hero image`
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Notes for the Executing Agent
|
|
58
|
+
|
|
59
|
+
- 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.
|
|
60
|
+
- 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>`.
|
|
61
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|