Skip to main content

arcads-ai-video-agent

Create AI marketing videos and images using Arcads API with Seedance 2.0, Sora 2, Veo 3.1, Kling 3.0, Nano Banana, and 37 static Meta ad templates

Ir para a instalação

Informações da origem

Repositório
reason-machines/claude-code-skills
Última atividade na origem
8 de julho de 2026 às 11:14
Idioma detectado do SKILL.md
inglês
Estrelas
4
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
arcads-ai-video-agent
description
Create AI marketing videos and images using Arcads API with Seedance 2.0, Sora 2, Veo 3.1, Kling 3.0, Nano Banana, and 37 static Meta ad templates
triggers
["generate an arcads video","create ai marketing video with seedance","make a nano banana image ad","generate ugc video with arcads","create pixar style animated ad","make meta image ad with arcads","use arcads api for video generation","create ai influencer character sheet"]
# Arcads AI Video Agent > Skill by [ara.so](https://ara.so) — Claude Code Skills collection. This skill enables AI agents to create marketing videos and images using the [Arcads](https://arcads.ai/?via=claude-code) platform. It supports the full creative stack: **Seedance 2.0** (flagship video), **Sora 2**, **Veo 3.1**, **Kling 3.0**, **Grok Video**, **Nano Banana 2/Pro/Edit**, **ChatGPT Image 2**, **OmniHuman**, and **Audio-driven** models, plus 37 validated static Meta image-ad templates and multi-step pipelines for Pixar-style and claymation animated ads. ## Prerequisites - Python 3.10+ - Arcads API key from [app.arcads.ai/settings/api](https://app.arcads.ai/settings/api) - Optional tools for advanced workflows: - `ffmpeg` (video stitching, chroma-key) - `jq` (JSON parsing in bash scripts) - Node.js + `npx hyperframes` (caption burn-in) - `openai-whisper` (transcription: `pip install openai-whisper`) ## Installation ```bash # Clone the repository git clone https://github.com/krusemediallc/arcads-claude-code.git cd arcads-claude-code # Run setup script ./scripts/setup.sh ``` The setup script will: 1. Prompt for your Arcads API key 2. Create `.env` file with `ARCADS_API_KEY=your_key_here` 3. Verify API connection 4. Create `MASTER_CONTEXT.md` workspace file **Manual setup** (if you skip the script): ```bash # Create .env file echo "ARCADS_API_KEY=your_api_key_here" > .env ``` ## Core API Patterns All Arcads API calls follow this pattern: ```python import os import requests import time from dotenv import load_dotenv load_dotenv() BASE_URL = "https://api.arcads.ai" API_KEY = os.getenv("ARCADS_API_KEY") headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } ``` ### Standard Generation Flow 1. **Submit job** → get `jobId` 2. **Poll status** until `completed` or `failed` 3. **Download result** ```python def submit_job(endpoint, payload): """Submit a generation job to Arcads API""" response = requests.post( f"{BASE_URL}{endpoint}", headers=headers, json=payload ) response.raise_for_status() return response.json()["jobId"] def poll_status(job_id, timeout=600, interval=10): """Poll job status until complete""" start_time = time.time() while time.time() - start_time < timeout: response = requests.get( f"{BASE_URL}/v1/jobs/{job_id}", headers=headers ) data = response.json() status = data["status"] if status == "completed": return data["result"] elif status == "failed": raise Exception(f"Job failed: {data.get('error')}") time.sleep(interval) raise TimeoutError(f"Job {job_id} timed out after {timeout}s") def download_file(url, output_path): """Download generated asset""" response = requests.get(url, stream=True) response.raise_for_status() with open(output_path, 'wb') as f: for chunk in response.iter_content(chunk_size=8192): f.write(chunk) ``` ## Video Generation ### Seedance 2.0 (Flagship Model) **Best for:** UGC videos, product reveals, hero shots, lookbooks, feature demos (4-15s) ```python def generate_seedance_video(prompt, duration=10, style="ugc"): """Generate Seedance 2.0 video with prompt engineering""" # UGC formula (9-layer structure) if style == "ugc": full_prompt = f""" [PERSON] Woman, late 20s, natural makeup, casual kitchen setting [OPENER] Direct camera eye contact, authentic energy, "Hey guys!" [HOOK] Attention-grabbing statement about {prompt} [PROBLEM] Relatable pain point, conversational tone [SOLUTION] Product introduction, natural hand gestures [DEMO] Show product in use, realistic interaction [BENEFIT] Key value prop, maintains eye contact [SOCIAL_PROOF] Brief testimonial feel [CTA] Natural call to action, warm energy [STYLE] iPhone selfie aesthetic, natural lighting, slight camera shake """ else: full_prompt = prompt payload = { "prompt": full_prompt, "duration": duration, "aspectRatio": "9:16" # or "16:9", "1:1" } job_id = submit_job("/v2/videos/generate", payload) print(f"Seedance job submitted: {job_id}") result = poll_status(job_id) video_url = result["videoUrl"] download_file(video_url, f"output/seedance_{job_id}.mp4") return video_url ``` **Example usage:** ```python # UGC product review video = generate_seedance_video( "skin serum that reduced dark circles in 2 weeks", duration=12, style="ugc" ) # Premium product reveal payload = { "prompt": """ [SCENE] Dark void, single spotlight [PRODUCT] Luxury perfume bottle materializes [MOTION] Slow 360° rotation, golden light rays [TEXT] Overlay: "Crafted for those who dare" [AESTHETIC] High-contrast, cinematic, no human presence """, "duration": 8, "aspectRatio": "9:16" } job_id = submit_job("/v2/videos/generate", payload) ``` ### Veo 3.1 (Image-to-Video with Dialogue) **Best for:** Animating Nano Banana stills into talking UGC videos ```python def animate_with_veo(image_path, dialogue, duration=8): """Animate a still image with Veo 3.1 + dialogue""" import base64 # Load and encode starting frame with open(image_path, "rb") as f: image_b64 = base64.b64encode(f.read()).decode() payload = { "startFrame": image_b64, "prompt": f""" Natural human motion, authentic energy, person speaks: "{dialogue}" Maintain character likeness from starting frame. iPhone selfie aesthetic, slight head movement, natural eye contact. """, "dialogue": dialogue, # MANDATORY for dialogue videos "duration": duration, "aspectRatio": "9:16" } job_id = submit_job("/v1/veo3-1/video", payload) result = poll_status(job_id, timeout=900) # Veo takes longer download_file(result["videoUrl"], f"output/veo_{job_id}.mp4") return result["videoUrl"] ``` ### Sora 2 (Text-to-Video, Longer Durations) **Best for:** Cinematic scenes, B-roll, up to 20s ```python def generate_sora_video(prompt, duration=16): """Generate Sora 2 video (supports longer durations)""" payload = { "prompt": prompt, "duration": duration, # Auto-calculated from word count if omitted "aspectRatio": "16:9" } # Optional: add style reference image # payload["styleReference"] = base64_encoded_image job_id = submit_job("/v1/sora2/video", payload) result = poll_status(job_id, timeout=1200) download_file(result["videoUrl"], f"output/sora_{job_id}.mp4") return result["videoUrl"] ``` ### Kling 3.0 (B-Roll & Scenes) **Best for:** Scene generation, environmental b-roll ```python def generate_broll(scene_description): """Generate b-roll clip with Kling 3.0""" payload = { "prompt": scene_description, "duration": 5 } job_id = submit_job("/v1/b-roll", payload) result = poll_status(job_id) download_file(result["videoUrl"], f"output/broll_{job_id}.mp4") return result["videoUrl"] # Example generate_broll("Golden hour beach waves, slow motion, cinematic") ``` ## Image Generation ### Nano Banana (Character Creation & Product Stills) **Best for:** AI influencers, UGC stills, photoreal product shots ```python def create_nano_banana_image(prompt, reference_images=None, model="nano-banana-2"): """ Generate image with Nano Banana model options: "nano-banana-2" (default), "nano-banana" (Pro), "nano-banana-edit" """ payload = { "prompt": prompt, "model": model, "aspectRatio": "9:16" } # Add reference images for character consistency if reference_images: import base64 refs = [] for img_path in reference_images: with open(img_path, "rb") as f: refs.append(base64.b64encode(f.read()).decode()) payload["referenceImages"] = refs job_id = submit_job("/v1/nano-banana/image", payload) result = poll_status(job_id) download_file(result["imageUrl"], f"output/nano_{job_id}.png") return result["imageUrl"] ``` **Example: Create AI Influencer (10-image character sheet)** ```python def create_ai_influencer(description): """Generate 10-angle character sheet for AI influencer""" # Step 1: Generate hero front portrait hero_prompt = f""" {description} Front-facing portrait, natural expression, golden hour lighting. Photoreal skin texture, freckles, pores visible. Soft focus background, kitchen setting. """ hero_url = create_nano_banana_image(hero_prompt) print(f"Hero portrait: {hero_url}") print("Review and approve hero before generating remaining 9 angles.") # Step 2: Generate 9 additional angles using hero as reference angles = [ "3/4 view left, slight smile", "3/4 view right, natural expression", "Profile left, looking away", "Profile right, looking forward", "Close-up, eyes focused on camera", "Full body, standing casual pose", "Laughing, animated expression", "Serious expression, direct gaze", "Lifestyle shot, holding coffee mug" ] results = [] for angle in angles: prompt = f"{description}\n{angle}\nMaintain exact character likeness." url = create_nano_banana_image( prompt, reference_images=["output/hero_portrait.png"], model="nano-banana" # Use Pro for tighter identity lock ) results.append(url) return results ``` ### ChatGPT Image 2 (Typography & UI-Heavy Ads) **Best for:** Apple Notes lists, fake Slack threads, editorial layouts, comparison tables ```python def generate_chatgpt_image(prompt, aspect_ratio="1:1"): """Generate image with ChatGPT Image 2 (gpt-image-2)""" payload = { "prompt": prompt, "model": "gpt-image-2", "aspectRatio": aspect_ratio # "1:1", "4:5", "16:9" } job_id = submit_job("/v1/image/generate", payload) result = poll_status(job_id) download_file(result["imageUrl"], f"output/chatgpt_{job_id}.png") return result["imageUrl"] ``` ## Static Meta Image Ad Templates (37-Template Library) The repo includes **37 validated prompt templates** for static Meta image ads. Use the specialized skills: ```python # Apple Notes-style list ad def generate_apple_notes_ad(product, benefits): """Generate Apple Notes-style ad (ChatGPT Image 2)""" prompt = f""" iPhone Notes app interface, cream background. Title: "why i switched to {product}" Bulleted list: {chr(10).join(f'• {b}' for b in benefits)} Footer: handwritten-style signature. Clean iOS typography, authentic spacing, no visible phone edges. """ return generate_chatgpt_image(prompt, aspect_ratio="4:5") # Photoreal UGC selfie ad def generate_ugc_selfie_ad(influencer_ref, product_ref): """Generate UGC selfie with product (Nano Banana)""" prompt = """ iPhone selfie, natural bedroom lighting. [influencer] holding [product], casual smile. Authentic skin texture, slight motion blur. Visible pores, flyaway hairs, iPhone camera imperfections. Product visible and recognizable, natural hand position. """ return create_nano_banana_image( prompt, reference_images=[influencer_ref, product_ref], model="nano-banana-2" ) ``` **Template categories** (see `shared/skills/image-ad-prompting/library/` for full list):
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub