bazaar.it
v0.4.0
Published
AI-powered motion graphics from the command line — bazaar.it
Maintainers
Readme
BAZ CLI
AI-powered video generation from your terminal.
██████╗ █████╗ ███████╗
██╔══██╗██╔══██╗╚══███╔╝
██████╔╝███████║ ███╔╝
██╔══██╗██╔══██║ ███╔╝
██████╔╝██║ ██║███████╗
╚═════╝ ╚═╝ ╚═╝╚══════╝Programmatic access to Bazaar video generation for external agents, automation, and power users.
Installation
npm install -g bazaar.itQuick Start
# 1. Authenticate
baz auth login <your-api-key>
# 2. Set a project
baz project list
baz project create --name "My Video Project" --format landscape
baz project use <project-id>
# 3. Generate!
baz prompt "Create an intro scene with the text 'Hello World' in neon colors"
# Agent-friendly mode
export BAZ_AGENT=1
baz prompt "Create an intro scene with the text 'Hello World' in neon colors"Interactive Mode (REPL)
Run baz without arguments to enter interactive mode:
$ baz
██████╗ █████╗ ███████╗
██╔══██╗██╔══██╗╚══███╔╝
██████╔╝███████║ ███╔╝
██╔══██╗██╔══██║ ███╔╝
██████╔╝██║ ██║███████╗
╚═════╝ ╚═╝ ╚═╝╚══════╝
AI-powered video generation v0.4.0
─────────────────────────────────────
Type a command or prompt. Use 'help' for commands.
baz> project list
baz> prompt "Create an intro scene"
baz> exitFeatures:
- Tab completion for commands
- Persistent session state
- History navigation with arrow keys
- Commands work without
bazprefix
Commands
Authentication
# Register a new account and auto-save API key
baz auth register --email [email protected] --name "Your Name"
# Login with API key
baz auth login <api-key>
# Check authentication status
baz auth status
# Logout
baz auth logoutGet an API Key: Sign in at bazaar.it, click your balance in the top bar, then select API Keys to generate one.
Projects
# List your projects
baz project list
# Create a new project
baz project create --name "My Video Project"
baz project create --name "TikTok Hook" --format portrait
# Set active project (used by default for all commands)
baz project use <project-id>
# Show current project
baz project current
# Duplicate a project (optionally changing format)
baz project duplicate <id> --name "Copy" --format portrait
# View or change project settings
baz project settings
baz project settings --format portrait --width 1080 --height 1920
# Change format by duplicating into a new project
baz project format landscape
# Validate timeline structure
baz project validate --json
# Delete a project
baz project delete <id>Prompts
The main command for AI video generation:
# Basic prompt
baz prompt "Create a 10 second intro with a blue gradient background"
# With images attached
baz prompt "Recreate this design" --image ./design.png --image ./logo.png
# With URL context (fetches and analyzes the URL)
baz prompt "Create a video based on this article" --url https://example.com/article
# Save attached references to reusable project context
baz prompt "Use this brand style for a launch teaser" \
--image ./brand-kit/logo.png \
--url https://example.com/brand \
--save-context \
--context-label brand
# Spar planning mode (planning-only conversation, no timeline mutations)
baz prompt "Let's plan a 30s launch video with voiceover" --spar
# Agent-max mode (more thorough, takes longer)
baz prompt "Complex animation sequence" --max
# Read prompt from file
baz prompt "Use the script" --file ./script.txt
# Show full agent response
baz prompt "Create something cool" --verboseOptions:
| Option | Description |
|--------|-------------|
| --mode <mode> | Generation mode: agent (default), agent-max, multi-scene |
| --max | Shorthand for --mode agent-max |
| --file <path> | Read prompt from a file |
| --image <path> | Attach image(s) — can use multiple times |
| --url <url> | Attach URL(s) for context — can use multiple times |
| --spar | Planning-only conversation mode (no composition edits) |
| --plan | Deprecated alias for --spar |
| --save-context | Persist provided URL/image references into project context |
| --context-label <label> | Label used for saved context entries (default: reference) |
| --verbose | Show agent's full response text |
| --no-stream | Disable streaming output |
Scenes
# List all scenes in active project
baz scenes list
# Get scene TSX code
baz scenes code <scene-id>
# Replace scene TSX code from file
baz scenes set-code <scene-id> --file ./scene.tsx
# Dry-run timeline position updates (no DB writes)
baz scenes positions --updates-file ./updates.json
# Apply timeline position updates
baz scenes positions --updates-file ./updates.json --applyMedia Upload
Upload files to your project's media library:
# Upload an image
baz media upload ./image.png
# Upload a video
baz media upload ./video.mp4
# Upload with custom name
baz media upload ./file.png --name "my-logo.png"Supported formats:
- Images: jpg, png, gif, webp, avif, heic (max 50MB)
- Videos: mp4, webm, mov, avi, mkv (max 2GB)
- Audio: mp3, wav, ogg, flac, aac, m4a (max 500MB)
Export
# Start export
baz export start
# Check export status
baz export status <job-id>
# Wait for completion
baz export status <job-id> --wait
# List recent exports
baz export listStatus
# Show overall status (auth, project, timeline)
baz statusState & Verification
# Snapshot state for agents/automation
baz state --json
# Structural validation (overlaps, invalid durations, compile errors)
baz project validate --json
# Criteria verification
baz verify --criteria "logo visible,CTA present,duration <= 60s" --jsonMCP Manifest
# MCP-style manifest for integrations
baz mcp
baz mcp schemaExample output:
Project Status
────────────────────────────────────────────────────────────
Project: My Product Demo
ID: f0ba67dc...
┌─────────────────────────────────────────────────────────┐
│ Scenes: 5 Tracks: 2 Duration: 0:45 ✓ OK │
└─────────────────────────────────────────────────────────┘
Timeline:
Track 0 │▓▓▓▓Intro▓▓▓▓▓▓▓Main▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓Outro▓▓│
Track 1 │ ▓▓▓▓Logo▓▓▓▓ │
└──────────────────────────────────────────┘
0:00 0:22 0:45Logs (Beta)
Query runtime logs:
# Show recent logs
baz logs
# Show only errors
baz logs --errors
# Search logs
baz logs --search "error"
# Filter by API path
baz logs --path /api/generate-stream
# Custom time range
baz logs --since 24h --limit 100
# Filter by current project
baz logs --projectContext
Attach goals, requirements, reference URLs, and files to a project. The AI agent uses this context when generating content.
# Add text context
baz context add "Brand colors: #FF6B00, #1A1A2E" --label "brand"
# Add a URL reference
baz context add "https://example.com/brand-guide" --label "reference"
# Add a file (uploaded to media library)
baz context add --file ./brief.pdf --label "creative brief"
# List all context entries
baz context list
# Show context (alias for list)
baz context show
# Remove a specific entry
baz context remove <context-id>
# Clear all context
baz context clearRecipe (Deprecated)
Recipe workflows were replaced by direct agent orchestration.
baz recipe
# Prints deprecation guidance and points to `baz prompt`Templates
# List available templates
baz template list
# List only curated templates (default)
baz template list --catalog curated
# List curated + community templates
baz template list --catalog all
# Include multi-scene templates in list output
baz template list --catalog all --include-multiscene
# Get ranked recommendations from your prompt
baz template recommend "animated saas dashboard intro" --json
# Recommend from full catalog (curated + community)
baz template recommend "animated saas dashboard intro" --catalog all
# Recommend from full catalog including multi-scene kits
baz template recommend "daily engineering report" --catalog all --include-multiscene
# Inspect one template (metadata only)
baz template show <template-id>
# Inspect one template including TSX code
baz template show <template-id> --code
# Apply template scene(s) to the active project
baz template apply <template-id>
# Apply template to a specific project
baz template apply <template-id> --project-id <project-id>
# Publish current project scenes as a community template (admin beta)
baz template publish --project-id <project-id> --name "Product Launch"
# Publish with rich metadata + editable vars
baz template publish \
--project-id <project-id> \
--name "Product Launch" \
--description "Kinetic product announcement with layered motion graphics" \
--category "marketing" \
--tags "product-launch,announcement,dark-mode" \
--formats landscape,portrait \
--var product_name="Acme" \
--var brand_color="#FF5733"
# Validate publish payload without writing
baz template publish --project-id <project-id> --name "Draft Template" --dry-run --json
# Filter by category or format
baz template list --category "product" --format landscape
# Search templates
baz template list --search "intro"Review
Full project state dump for external agent evaluation. Returns scenes with code, voiceovers, timing, and AI-generated asset prompts.
# Get full project state for agent evaluation
baz review --jsonShare
# Create a share link for the active project
baz share create
# List all your shared projects
baz share list
# Delete a share link
baz share delete <share-id>Capabilities
# Describe CLI capabilities (JSON for agents)
baz capabilities --jsonLoop (Basic OODA)
# Iterate prompt → review with optional requirements
baz loop "Create a 15s intro for Acme" --requirements "logo visible, CTA present"
# Use agent mode + NDJSON for bots
BAZ_AGENT=1 baz loop "Create a 15s intro" --requirements "logo visible, CTA present"
# Stop on failure and set a time budget
baz loop "Create a 15s intro" --requirements "logo visible" --stop-on-fail --budget 90s
# Persist loop references for future prompts
baz loop "Build 3 scenes from this style guide" \
--url https://example.com/style-guide \
--image ./assets/brand-board.png \
--save-context --context-label brandAgent Capabilities
The agent has access to the same tools as the web app:
Scene Operations
- Create scenes — Add new scenes with animations, text, images
- Edit scenes — Modify existing scene code, styling, timing
- Delete scenes — Remove scenes from the project
- Trim scenes — Adjust start time and duration
Media Generation
- Generate images — AI image generation (DALL-E, etc.)
- Generate video — AI video generation (Seedance, Veo 3)
- Generate voiceover — Text-to-speech with multiple voices
- Generate music — AI background music generation
- Remove backgrounds — Extract subjects from images
Gathering Tools
- Fetch URLs — Extract content from web pages
- Take screenshots — Capture web pages as images
- Summarize — AI-powered content summarization
Planning & Orchestration
- Video plans — Create multi-scene video outlines
- Recipes — Reusable templates for video generation
- Workflows — Multi-step automation pipelines
Output Modes
Streaming (default)
Shows real-time progress:
Mode: agent
Project: abc123
[2s] 🧠 Analyzing your request...
✔ [3s] 🧠 Analyzing your request...
[4s] 🎬 Creating scene
✔ [8s] 🎬 Creating scene
[8s] ✅ Created: "Intro Scene"
┌────────────────────────────────────────────────┐
│ ✓ Done! (1 scene in 15s) │
└────────────────────────────────────────────────┘JSON Mode
For programmatic parsing:
baz prompt "..." --jsonReturns:
{
"success": true,
"scenesCreated": ["scene-id-1"],
"scenesUpdated": [],
"errors": [],
"elapsed": "15s",
"steps": 4
}Global Options
--json Output as JSON (for scripting)
--compact Compact JSON output (token-efficient for agents)
--verbose Show detailed output
--config <path> Custom config file path
--api-url <url> Override API URL
--project-id <id> Override active projectConfiguration
Config stored at ~/.bazaar/config.json:
{
"apiKey": "baz_...",
"apiUrl": "https://bazaar.it",
"activeProjectId": "abc123"
}Environment variables override config file:
BAZ_API_KEY— API keyBAZ_API_URL— API URLBAZ_PROJECT_ID— Active projectBAZ_JSON=1— Force JSON output (equivalent to--json)BAZ_AGENT=1— Agent auto-mode (default--json,--compact,--events-only, and--stream-jsonon prompt/loop)
Examples
URL to Video
# Turn any webpage into a video
baz prompt "Create a video summary of this article" \
--url https://example.com/blog/post
# Multiple URLs for comparison
baz prompt "Compare these products" \
--url https://example.com/product-a \
--url https://example.com/product-bBatch Processing
# Generate and capture result
result=$(baz prompt "Create intro scene" --json)
scene_id=$(echo "$result" | jq -r '.scenesCreated[0]')
echo "Created scene: $scene_id"CI/CD Integration
#!/bin/bash
set -e
export BAZ_API_KEY="$BAZAAR_API_KEY"
# Generate video from PR description
baz prompt "Create demo video: $PR_DESCRIPTION" --project-id "$PROJECT_ID"
# Export when ready
baz export start --wait --json > export-result.jsonComplex Workflow
baz prompt "Create a 30 second promotional video for https://example.com \
including their logo, brand colors, and key messaging" --maxTroubleshooting
"Unauthorized" Error
baz auth status
baz auth login <api-key>"No active project"
baz project list
baz project use <project-id>"Insufficient balance"
Check your balance in the app at bazaar.it — visible in the top bar after signing in.
Connection Issues
baz auth status --api-url https://bazaar.itError Codes
| Code | Meaning |
|------|---------|
| 0 | Success |
| 10 | Transient error (retryable) |
| 11 | Resource/capacity error |
| 12 | Semantic/content-policy error |
| 13 | Authentication error |
| 64 | Input/not-found error |
| 65 | Validation error |
| 1 | Fatal/unclassified error |
Development
npm run typecheck # Type check
npm run dev # Run in dev mode
npm run build # Build for productionLicense
Copyright © 2024 Bazaar.it. All rights reserved.
