brandly-cli 0.3.0__tar.gz
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.
- brandly_cli-0.3.0/$null +2 -0
- brandly_cli-0.3.0/.env.example +17 -0
- brandly_cli-0.3.0/.github/workflows/ci.yml +37 -0
- brandly_cli-0.3.0/.github/workflows/release.yml +33 -0
- brandly_cli-0.3.0/.gitignore +50 -0
- brandly_cli-0.3.0/.pre-commit-config.yaml +17 -0
- brandly_cli-0.3.0/Makefile +81 -0
- brandly_cli-0.3.0/PKG-INFO +347 -0
- brandly_cli-0.3.0/README.md +313 -0
- brandly_cli-0.3.0/byteplus-ark-cli-1.0.24.tgz +0 -0
- brandly_cli-0.3.0/dev-notes/AUDIT.md +159 -0
- brandly_cli-0.3.0/dev-notes/GOAL.md +108 -0
- brandly_cli-0.3.0/dev-notes/IMPLEMENTATION.md +160 -0
- brandly_cli-0.3.0/dev-notes/PROGRESS.md +85 -0
- brandly_cli-0.3.0/dev-notes/SECURITY.md +96 -0
- brandly_cli-0.3.0/dev-notes/SPEC.md +245 -0
- brandly_cli-0.3.0/generate_svd.py +101 -0
- brandly_cli-0.3.0/package/LICENSE +201 -0
- brandly_cli-0.3.0/package/README.md +47 -0
- brandly_cli-0.3.0/package/manifest.json +72 -0
- brandly_cli-0.3.0/package/package.json +48 -0
- brandly_cli-0.3.0/package/scripts/postinstall.js +545 -0
- brandly_cli-0.3.0/package/scripts/run.js +44 -0
- brandly_cli-0.3.0/pyproject.toml +66 -0
- brandly_cli-0.3.0/scripts/install-hooks.sh +21 -0
- brandly_cli-0.3.0/skills/README.md +51 -0
- brandly_cli-0.3.0/skills/brandly-animal-sheet/SKILL.md +239 -0
- brandly_cli-0.3.0/skills/brandly-animal-sheet/references/habitats.md +129 -0
- brandly_cli-0.3.0/skills/brandly-animal-sheet/references/prompt-variants.md +112 -0
- brandly_cli-0.3.0/skills/brandly-animal-sheet/references/species-guide.md +105 -0
- brandly_cli-0.3.0/skills/brandly-character-sheet/SKILL.md +217 -0
- brandly_cli-0.3.0/skills/brandly-character-sheet/references/common-types.md +81 -0
- brandly_cli-0.3.0/skills/brandly-character-sheet/references/consistency-checklist.md +68 -0
- brandly_cli-0.3.0/skills/brandly-character-sheet/references/prompt-variants.md +84 -0
- brandly_cli-0.3.0/skills/brandly-consistency/SKILL.md +256 -0
- brandly_cli-0.3.0/skills/brandly-consistency/references/anchoring-system.md +191 -0
- brandly_cli-0.3.0/skills/brandly-consistency/references/drift-checklist.md +131 -0
- brandly_cli-0.3.0/skills/brandly-consistency/references/lock-strength.md +129 -0
- brandly_cli-0.3.0/skills/brandly-location-sheet/SKILL.md +243 -0
- brandly_cli-0.3.0/skills/brandly-location-sheet/references/lighting-setups.md +131 -0
- brandly_cli-0.3.0/skills/brandly-location-sheet/references/location-types.md +129 -0
- brandly_cli-0.3.0/skills/brandly-location-sheet/references/prompt-variants.md +104 -0
- brandly_cli-0.3.0/skills/brandly-mecha-sheet/SKILL.md +234 -0
- brandly_cli-0.3.0/skills/brandly-mecha-sheet/references/mecha-types.md +177 -0
- brandly_cli-0.3.0/skills/brandly-mecha-sheet/references/prompt-variants.md +119 -0
- brandly_cli-0.3.0/skills/brandly-mecha-sheet/references/technical-reference.md +100 -0
- brandly_cli-0.3.0/skills/brandly-object-sheet/SKILL.md +221 -0
- brandly_cli-0.3.0/skills/brandly-object-sheet/references/photography-setups.md +78 -0
- brandly_cli-0.3.0/skills/brandly-object-sheet/references/product-categories.md +92 -0
- brandly_cli-0.3.0/skills/brandly-object-sheet/references/prompt-variants.md +96 -0
- brandly_cli-0.3.0/skills/brandly-plant-sheet/SKILL.md +288 -0
- brandly_cli-0.3.0/skills/brandly-plant-sheet/references/plant-species.md +141 -0
- brandly_cli-0.3.0/skills/brandly-plant-sheet/references/prompt-variants.md +117 -0
- brandly_cli-0.3.0/skills/brandly-plant-sheet/references/seasonal-reference.md +177 -0
- brandly_cli-0.3.0/skills/brandly-production-bible/SKILL.md +250 -0
- brandly_cli-0.3.0/skills/brandly-production-bible/references/asset-map.md +109 -0
- brandly_cli-0.3.0/skills/brandly-production-bible/references/bible-template.md +155 -0
- brandly_cli-0.3.0/skills/brandly-production-bible/references/example-bible.md +165 -0
- brandly_cli-0.3.0/skills/brandly-storyboard/SKILL.md +220 -0
- brandly_cli-0.3.0/skills/brandly-storyboard/references/examples.md +224 -0
- brandly_cli-0.3.0/skills/brandly-storyboard/references/pacing-guide.md +150 -0
- brandly_cli-0.3.0/skills/brandly-storyboard/references/shot-formats.md +194 -0
- brandly_cli-0.3.0/skills/brandly-vehicle-sheet/SKILL.md +287 -0
- brandly_cli-0.3.0/skills/brandly-vehicle-sheet/references/prompt-variants.md +140 -0
- brandly_cli-0.3.0/skills/brandly-vehicle-sheet/references/shot-angles.md +143 -0
- brandly_cli-0.3.0/skills/brandly-vehicle-sheet/references/vehicle-types.md +210 -0
- brandly_cli-0.3.0/skills/brandly-video-generation/SKILL.md +394 -0
- brandly_cli-0.3.0/skills/brandly-video-generation/references/camera-control.md +158 -0
- brandly_cli-0.3.0/skills/brandly-video-generation/references/character-consistency.md +146 -0
- brandly_cli-0.3.0/skills/brandly-video-generation/references/lighting-presets.md +126 -0
- brandly_cli-0.3.0/skills/brandly-video-generation/references/troubleshooting.md +186 -0
- brandly_cli-0.3.0/skills/brandly-video-generation/references/video-styles.md +273 -0
- brandly_cli-0.3.0/src/brandly_cli/__about__.py +3 -0
- brandly_cli-0.3.0/src/brandly_cli/__init__.py +5 -0
- brandly_cli-0.3.0/src/brandly_cli/__main__.py +6 -0
- brandly_cli-0.3.0/src/brandly_cli/agnes_client.py +529 -0
- brandly_cli-0.3.0/src/brandly_cli/analyzer.py +229 -0
- brandly_cli-0.3.0/src/brandly_cli/ark_client.py +484 -0
- brandly_cli-0.3.0/src/brandly_cli/audio_client.py +191 -0
- brandly_cli-0.3.0/src/brandly_cli/autodirector.py +115 -0
- brandly_cli-0.3.0/src/brandly_cli/beat_sync.py +241 -0
- brandly_cli-0.3.0/src/brandly_cli/captions.py +196 -0
- brandly_cli-0.3.0/src/brandly_cli/cli.py +2856 -0
- brandly_cli-0.3.0/src/brandly_cli/constants.py +609 -0
- brandly_cli-0.3.0/src/brandly_cli/cost_tracker.py +163 -0
- brandly_cli-0.3.0/src/brandly_cli/director.py +554 -0
- brandly_cli-0.3.0/src/brandly_cli/dubbing.py +276 -0
- brandly_cli-0.3.0/src/brandly_cli/edit.py +405 -0
- brandly_cli-0.3.0/src/brandly_cli/export_platforms.py +237 -0
- brandly_cli-0.3.0/src/brandly_cli/memory.py +70 -0
- brandly_cli-0.3.0/src/brandly_cli/minimax_client.py +369 -0
- brandly_cli-0.3.0/src/brandly_cli/project_manager.py +144 -0
- brandly_cli-0.3.0/src/brandly_cli/sharing.py +117 -0
- brandly_cli-0.3.0/src/brandly_cli/stitch.py +240 -0
- brandly_cli-0.3.0/src/brandly_cli/style_presets.py +33 -0
- brandly_cli-0.3.0/src/brandly_cli/sync.py +286 -0
- brandly_cli-0.3.0/src/brandly_cli/templates.py +127 -0
- brandly_cli-0.3.0/src/brandly_cli/thumbnails.py +265 -0
- brandly_cli-0.3.0/src/brandly_cli/trends.py +182 -0
- brandly_cli-0.3.0/src/brandly_cli/types.py +201 -0
- brandly_cli-0.3.0/src/brandly_cli/utils.py +530 -0
- brandly_cli-0.3.0/src/brandly_cli/video_prompts.py +473 -0
- brandly_cli-0.3.0/src/brandly_cli/webhook.py +85 -0
- brandly_cli-0.3.0/tests/__init__.py +0 -0
- brandly_cli-0.3.0/tests/_check.py +6 -0
- brandly_cli-0.3.0/tests/test_agnes_client.py +378 -0
- brandly_cli-0.3.0/tests/test_analyzer.py +149 -0
- brandly_cli-0.3.0/tests/test_ark_client.py +388 -0
- brandly_cli-0.3.0/tests/test_autodirector.py +87 -0
- brandly_cli-0.3.0/tests/test_beat_sync.py +94 -0
- brandly_cli-0.3.0/tests/test_brandly_cli.py +311 -0
- brandly_cli-0.3.0/tests/test_cli.py +367 -0
- brandly_cli-0.3.0/tests/test_dubbing.py +125 -0
- brandly_cli-0.3.0/tests/test_edit.py +267 -0
- brandly_cli-0.3.0/tests/test_export_platforms.py +128 -0
- brandly_cli-0.3.0/tests/test_reference.py +572 -0
- brandly_cli-0.3.0/tests/test_sharing.py +90 -0
- brandly_cli-0.3.0/tests/test_stitch.py +370 -0
- brandly_cli-0.3.0/tests/test_templates.py +120 -0
- brandly_cli-0.3.0/tests/test_thumbnails.py +193 -0
- brandly_cli-0.3.0/tests/test_trends.py +129 -0
- brandly_cli-0.3.0/tests/test_video_prompts.py +288 -0
- brandly_cli-0.3.0/tests/test_webhook.py +91 -0
brandly_cli-0.3.0/$null
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Brandly CLI — Environment Variables
|
|
2
|
+
# Copy this file to .env and fill in your API keys.
|
|
3
|
+
|
|
4
|
+
# Agnes AI (image + video generation)
|
|
5
|
+
# Get your key from: https://apihub.agnes-ai.com
|
|
6
|
+
AGNES_API_KEY=your_agnes_api_key_here
|
|
7
|
+
AGNES_BASE_URL=https://apihub.agnes-ai.com/v1
|
|
8
|
+
|
|
9
|
+
# MiniMax (music + TTS + some image/video)
|
|
10
|
+
# Get your key from: https://platform.minimaxi.com
|
|
11
|
+
MINIMAX_API_KEY=your_minimax_api_key_here
|
|
12
|
+
MINIMAX_BASE_URL=https://api.minimaxi.com/v1
|
|
13
|
+
|
|
14
|
+
# BytePlus Ark (Seedream images + Seedance videos)
|
|
15
|
+
# Get your key from: https://console.volcengine.com/ark
|
|
16
|
+
ARK_API_KEY=your_ark_api_key_here
|
|
17
|
+
ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/v3
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
types: [opened, synchronize, reopened]
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
quality:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Install FFmpeg
|
|
19
|
+
run: sudo apt-get update && sudo apt-get install -y ffmpeg
|
|
20
|
+
|
|
21
|
+
- uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: |
|
|
27
|
+
python -m pip install --upgrade pip
|
|
28
|
+
pip install -e ".[dev]"
|
|
29
|
+
|
|
30
|
+
- name: Type check
|
|
31
|
+
run: python -m pytest tests/ -v --tb=short
|
|
32
|
+
|
|
33
|
+
- name: Lint
|
|
34
|
+
run: ruff check src/
|
|
35
|
+
|
|
36
|
+
- name: Syntax check
|
|
37
|
+
run: python -m py_compile src/brandly_cli/*.py
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Release to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
environment:
|
|
14
|
+
name: pypi
|
|
15
|
+
url: https://pypi.org/p/brandly-cli
|
|
16
|
+
permissions:
|
|
17
|
+
id-token: write # OIDC trusted publishing
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
|
|
26
|
+
- name: Install build dependencies
|
|
27
|
+
run: python -m pip install --upgrade build twine
|
|
28
|
+
|
|
29
|
+
- name: Build package
|
|
30
|
+
run: python -m build
|
|
31
|
+
|
|
32
|
+
- name: Release to PyPI
|
|
33
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Brandly CLI — generated project state
|
|
2
|
+
.brandly/
|
|
3
|
+
|
|
4
|
+
# API keys that may be synced into tool configs
|
|
5
|
+
.env
|
|
6
|
+
**/.env
|
|
7
|
+
!.env.example
|
|
8
|
+
|
|
9
|
+
# Python
|
|
10
|
+
__pycache__/
|
|
11
|
+
*.py[cod]
|
|
12
|
+
*.pyo
|
|
13
|
+
*.pyd
|
|
14
|
+
.Python
|
|
15
|
+
*.egg-info/
|
|
16
|
+
dist/
|
|
17
|
+
build/
|
|
18
|
+
.eggs/
|
|
19
|
+
*.egg
|
|
20
|
+
|
|
21
|
+
# Virtual environments
|
|
22
|
+
venv/
|
|
23
|
+
env/
|
|
24
|
+
.venv/
|
|
25
|
+
.env/
|
|
26
|
+
|
|
27
|
+
# IDE
|
|
28
|
+
.vscode/
|
|
29
|
+
.idea/
|
|
30
|
+
*.swp
|
|
31
|
+
*.swo
|
|
32
|
+
|
|
33
|
+
# OS
|
|
34
|
+
.DS_Store
|
|
35
|
+
Thumbs.db
|
|
36
|
+
|
|
37
|
+
# Test artifacts
|
|
38
|
+
.pytest_cache/
|
|
39
|
+
.ruff_cache/
|
|
40
|
+
.mypy_cache/
|
|
41
|
+
htmlcov/
|
|
42
|
+
.coverage
|
|
43
|
+
.coverage.*
|
|
44
|
+
coverage.xml
|
|
45
|
+
|
|
46
|
+
# Generated skill output
|
|
47
|
+
skills_output/
|
|
48
|
+
|
|
49
|
+
# Pre-commit
|
|
50
|
+
.pre-commit-cache/
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: local
|
|
3
|
+
hooks:
|
|
4
|
+
- id: ruff-lint
|
|
5
|
+
name: ruff-lint
|
|
6
|
+
entry: python3 -m ruff check src/
|
|
7
|
+
language: system
|
|
8
|
+
types: [python]
|
|
9
|
+
pass_filenames: false
|
|
10
|
+
|
|
11
|
+
- id: pytest
|
|
12
|
+
name: pytest
|
|
13
|
+
entry: python3 -m pytest tests/ -v --tb=short
|
|
14
|
+
language: system
|
|
15
|
+
types: [python]
|
|
16
|
+
pass_filenames: false
|
|
17
|
+
always_run: true
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Brandly CLI — Makefile
|
|
2
|
+
|
|
3
|
+
PYTHON := python3
|
|
4
|
+
PNPM := pnpm
|
|
5
|
+
PIP := $(PYTHON) -m pip
|
|
6
|
+
PYTEST := $(PYTHON) -m pytest
|
|
7
|
+
RUFF := $(PYTHON) -m ruff
|
|
8
|
+
ROOT ?= .
|
|
9
|
+
|
|
10
|
+
.PHONY: help install dev test lint type-check build clean \
|
|
11
|
+
pre-commit ci e2e upgrade sync
|
|
12
|
+
|
|
13
|
+
## Show this help
|
|
14
|
+
help:
|
|
15
|
+
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
|
|
16
|
+
| awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-14s\033[0m %s\n", $$1, $$2}'
|
|
17
|
+
|
|
18
|
+
## Install package in editable mode + dev deps
|
|
19
|
+
install: ## install
|
|
20
|
+
$(PIP) install -e ".[dev]"
|
|
21
|
+
|
|
22
|
+
## Install pre-commit hooks
|
|
23
|
+
pre-commit: ## pre-commit
|
|
24
|
+
$(PIP) install pre-commit
|
|
25
|
+
pre-commit install
|
|
26
|
+
|
|
27
|
+
## Run full test suite
|
|
28
|
+
test: ## test
|
|
29
|
+
$(PYTEST) tests/ -v --tb=short
|
|
30
|
+
|
|
31
|
+
## Run tests with coverage
|
|
32
|
+
cov: ## cov
|
|
33
|
+
$(PYTEST) tests/ -v --tb=short --cov=src/brandly_cli --cov-report=term-missing --cov-report=html
|
|
34
|
+
|
|
35
|
+
## Run linter
|
|
36
|
+
lint: ## lint
|
|
37
|
+
$(RUFF) check src/
|
|
38
|
+
|
|
39
|
+
## Fix lint issues automatically
|
|
40
|
+
lint-fix: ## lint-fix
|
|
41
|
+
$(RUFF) check src/ --fix
|
|
42
|
+
|
|
43
|
+
## Syntax check all modules
|
|
44
|
+
check-syntax: ## check-syntax
|
|
45
|
+
$(PYTHON) -m py_compile src/brandly_cli/*.py
|
|
46
|
+
|
|
47
|
+
## Run all quality gates (test + lint + syntax)
|
|
48
|
+
ci: check-syntax lint test ## ci
|
|
49
|
+
@echo "All quality gates passed."
|
|
50
|
+
|
|
51
|
+
## End-to-end CLI smoke test
|
|
52
|
+
e2e: ## e2e
|
|
53
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ \
|
|
54
|
+
init --name "Smoke" --idea "test" --style cinematic --shots 3
|
|
55
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ list
|
|
56
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ config
|
|
57
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ estimate --style cinematic --shots 5
|
|
58
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ director > /dev/null
|
|
59
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ models > /dev/null
|
|
60
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ memory view > /dev/null
|
|
61
|
+
$(PYTHON) -m brandly_cli.cli --root /tmp/brandly-e2e-$$ prompt \
|
|
62
|
+
--subject "wireless earbuds" --action "rotate" \
|
|
63
|
+
--environment "desk" --shots 3 --style cinematic > /dev/null
|
|
64
|
+
rm -rf /tmp/brandly-e2e-*
|
|
65
|
+
@echo "E2E smoke test passed."
|
|
66
|
+
|
|
67
|
+
## Upgrade dev dependencies
|
|
68
|
+
upgrade: ## upgrade
|
|
69
|
+
$(PIP) install --upgrade -e ".[dev]"
|
|
70
|
+
|
|
71
|
+
## Sync API keys into AI tool configs (requires env vars set)
|
|
72
|
+
sync: ## sync
|
|
73
|
+
$(PYTHON) -m brandly_cli.cli sync
|
|
74
|
+
|
|
75
|
+
## Clean build/cache artifacts
|
|
76
|
+
clean: ## clean
|
|
77
|
+
find src -name '__pycache__' -type d -exec rm -rf {} + 2>/dev/null || true
|
|
78
|
+
find tests -name '__pycache__' -type d -exec rm -rf {} + 2>/dev/null || true
|
|
79
|
+
rm -rf .pytest_cache .ruff_cache .mypy_cache htmlcov dist build *.egg-info
|
|
80
|
+
rm -rf /tmp/brandly-e2e-*
|
|
81
|
+
@echo "Cleaned."
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: brandly-cli
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: AI product video orchestrator — add image, video, and sound generation to any AI tool
|
|
5
|
+
Project-URL: Homepage, https://github.com/Dream-Pixels-Forge/brandly-cli
|
|
6
|
+
Project-URL: Repository, https://github.com/Dream-Pixels-Forge/brandly-cli
|
|
7
|
+
Project-URL: Issues, https://github.com/Dream-Pixels-Forge/brandly-cli/issues
|
|
8
|
+
Author-email: Dream Pixels Forge <contact@dreampixelsforge.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
Keywords: agent,ai,cli,generation,image,orchestrator,video
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Multimedia :: Graphics
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Requires-Dist: click>=8.0
|
|
22
|
+
Requires-Dist: httpx>=0.27
|
|
23
|
+
Requires-Dist: pillow>=10.0
|
|
24
|
+
Requires-Dist: pydantic>=2.0
|
|
25
|
+
Requires-Dist: python-dotenv>=1.0
|
|
26
|
+
Requires-Dist: rich>=13.0
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: mypy>=1.0; extra == 'dev'
|
|
29
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
32
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
# Brandly CLI
|
|
36
|
+
|
|
37
|
+
> **AI product video orchestrator** — add image, video, and sound generation capability to any AI tool (OpenCode, Codex, Qwen Code, Claude Code, etc.) via a CLI and Director agent.
|
|
38
|
+
|
|
39
|
+
[](https://pypi.org/project/brandly-cli/)
|
|
40
|
+
[](https://www.python.org/downloads/)
|
|
41
|
+
[](LICENSE)
|
|
42
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli)
|
|
43
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli)
|
|
44
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli/actions)
|
|
45
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli/stargazers)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## What is Brandly?
|
|
50
|
+
|
|
51
|
+
Brandly is an **autonomous video production pipeline** that turns product ideas into platform-ready marketing videos. It provides:
|
|
52
|
+
|
|
53
|
+
- **Image generation** via [Agnes AI](https://apihub.agnes-ai.com) (text-to-image, image-to-image)
|
|
54
|
+
- **Video generation** via Agnes AI (text-to-video, keyframe-controlled, reference-based)
|
|
55
|
+
- **Audio generation** via [MiniMax Audio](https://platform.minimaxi.com) (background music, TTS voiceover)
|
|
56
|
+
- **Multi-agent pipeline** — automated workflow from idea → trends → concept → script → assets → audio → validate → publish
|
|
57
|
+
- **Director orchestrator** — an autonomous agent that guides the entire production process
|
|
58
|
+
- **Credit budgeting** — track spend per phase against a project budget
|
|
59
|
+
- **Style presets** — avoid AI slop with photorealistic, cinematic, editorial, commercial, and documentary presets
|
|
60
|
+
|
|
61
|
+
### v0.3.0 New Features
|
|
62
|
+
|
|
63
|
+
| Feature | Description |
|
|
64
|
+
|---------|-------------|
|
|
65
|
+
| **Stitch** | Multi-shot video assembly with transitions (fade, dissolve, wipe, slide) and color grading |
|
|
66
|
+
| **Export Platforms** | Platform-optimized exports for TikTok, Instagram, YouTube, Facebook |
|
|
67
|
+
| **Thumbnails** | AI-generated thumbnails with text overlays and platform-specific sizing |
|
|
68
|
+
| **Dubbing** | Multi-language video dubbing via MiniMax TTS (10 languages) |
|
|
69
|
+
| **Beat Sync** | Music-reactive editing with beat detection |
|
|
70
|
+
| **Auto-Director** | Script-to-video pipeline automation |
|
|
71
|
+
| **Trends** | Trending format research database (5 categories) |
|
|
72
|
+
| **Analyzer** | Video performance prediction with scoring |
|
|
73
|
+
| **Templates** | Reusable project configurations |
|
|
74
|
+
| **Webhook** | CI/CD integration with job queue |
|
|
75
|
+
| **Sharing** | Cloud export with pluggable providers |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Installation
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pip install brandly-cli
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Configure API Keys
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Agnes AI (image + video generation)
|
|
89
|
+
export AGNES_API_KEY="your-agnes-api-key"
|
|
90
|
+
|
|
91
|
+
# MiniMax Audio (music + TTS)
|
|
92
|
+
export MINIMAX_API_KEY="your-minimax-api-key"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Or create a `.env` file in your project root:
|
|
96
|
+
|
|
97
|
+
```dotenv
|
|
98
|
+
AGNES_API_KEY=your_key_here
|
|
99
|
+
MINIMAX_API_KEY=your_key_here
|
|
100
|
+
AGNES_BASE_URL=https://apihub.agnes-ai.com/v1
|
|
101
|
+
MINIMAX_BASE_URL=https://api.minimaxi.com/v1
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Quick Start
|
|
105
|
+
|
|
106
|
+
### 1. Initialize a Project
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
brandly init \
|
|
110
|
+
--name "SuperWidget Pro" \
|
|
111
|
+
--idea "A revolutionary widget that organizes your desk with AI" \
|
|
112
|
+
--style cinematic \
|
|
113
|
+
--budget 500 \
|
|
114
|
+
--shots 5 \
|
|
115
|
+
--platforms tiktok instagram youtube
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 2. Run the Pipeline
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Check cost estimate first
|
|
122
|
+
brandly estimate --style cinematic --shots 5
|
|
123
|
+
|
|
124
|
+
# Run each phase
|
|
125
|
+
brandly run <project-id> # Start the current phase
|
|
126
|
+
brandly approve <project-id> <phase> # Approve and advance
|
|
127
|
+
|
|
128
|
+
# Or run the full pipeline at once
|
|
129
|
+
brandly director # Shows Director prompt for AI tools
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 3. Generate Media Directly
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Image generation
|
|
136
|
+
brandly image --prompt "product on marble surface, studio lighting" \
|
|
137
|
+
--style-preset cinematic
|
|
138
|
+
|
|
139
|
+
# Video generation
|
|
140
|
+
brandly video <project-id> --prompt "sleek wireless earbuds rotating" \
|
|
141
|
+
--duration 5 --wait
|
|
142
|
+
|
|
143
|
+
# Audio generation
|
|
144
|
+
brandly music --prompt "upbeat electronic background music" --duration 30
|
|
145
|
+
brandly tts "Welcome to SuperWidget Pro"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 4. Export & Share
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Export for platforms
|
|
152
|
+
brandly export <project-id> --platforms tiktok youtube
|
|
153
|
+
|
|
154
|
+
# Generate thumbnails
|
|
155
|
+
brandly thumbnail <project-id>
|
|
156
|
+
|
|
157
|
+
# Stitch clips together
|
|
158
|
+
brandly stitch clip1.mp4 clip2.mp4 --transition fade
|
|
159
|
+
|
|
160
|
+
# Dub to another language
|
|
161
|
+
brandly voice-match input.mp4 --source en --target es
|
|
162
|
+
|
|
163
|
+
# Share to cloud
|
|
164
|
+
brandly share output.mp4 --provider local
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## CLI Reference
|
|
168
|
+
|
|
169
|
+
### Project Management
|
|
170
|
+
|
|
171
|
+
| Command | Description |
|
|
172
|
+
|---------|-------------|
|
|
173
|
+
| `brandly init` / `brandly start` | Start a new video project |
|
|
174
|
+
| `brandly status <id>` | Show project status |
|
|
175
|
+
| `brandly list` | List all projects |
|
|
176
|
+
| `brandly run <id>` | Run the next pipeline phase |
|
|
177
|
+
| `brandly approve <id> <phase>` | Approve a phase and advance |
|
|
178
|
+
| `brandly cancel / pause / resume <id>` | Control project state |
|
|
179
|
+
| `brandly cost <id>` | Show cost summary |
|
|
180
|
+
| `brandly record-cost <id> <phase> <action> <credits>` | Record credit spend |
|
|
181
|
+
|
|
182
|
+
### Media Generation
|
|
183
|
+
|
|
184
|
+
| Command | Description |
|
|
185
|
+
|---------|-------------|
|
|
186
|
+
| `brandly image` | Generate an image via Agnes AI |
|
|
187
|
+
| `brandly video <id>` | Generate a video via Agnes AI |
|
|
188
|
+
| `brandly music` | Generate background music via MiniMax Audio |
|
|
189
|
+
| `brandly tts <text>` | Generate voiceover via TTS |
|
|
190
|
+
| `brandly voices` | List available TTS voices |
|
|
191
|
+
|
|
192
|
+
### Post-Production
|
|
193
|
+
|
|
194
|
+
| Command | Description |
|
|
195
|
+
|---------|-------------|
|
|
196
|
+
| `brandly stitch <clips...>` | Multi-shot video assembly with transitions |
|
|
197
|
+
| `brandly export <id> --platforms <p>` | Export for specific platforms |
|
|
198
|
+
| `brandly thumbnail <id>` | Generate thumbnails from video |
|
|
199
|
+
| `brandly voice-match <video> --source <lang> --target <lang>` | Dub video to another language |
|
|
200
|
+
| `brandly beat-sync <video> <audio>` | Cut video to match beat timestamps |
|
|
201
|
+
| `brandly analyze <video>` | Predict video performance metrics |
|
|
202
|
+
| `brandly share <file>` | Upload to cloud for sharing |
|
|
203
|
+
|
|
204
|
+
### Intelligence
|
|
205
|
+
|
|
206
|
+
| Command | Description |
|
|
207
|
+
|---------|-------------|
|
|
208
|
+
| `brandly trend <category>` | Research trending video formats |
|
|
209
|
+
| `brandly template list` | List available templates |
|
|
210
|
+
| `brandly template use <name>` | Create project from template |
|
|
211
|
+
| `brandly validate <id>` | Run virality validation |
|
|
212
|
+
| `brandly progress <id>` | Show detailed progress |
|
|
213
|
+
| `brandly director` | Show Director agent prompt |
|
|
214
|
+
|
|
215
|
+
### System
|
|
216
|
+
|
|
217
|
+
| Command | Description |
|
|
218
|
+
|---------|-------------|
|
|
219
|
+
| `brandly estimate` | Estimate credit cost |
|
|
220
|
+
| `brandly memory` | View/update user preferences |
|
|
221
|
+
| `brandly config` | Show configuration |
|
|
222
|
+
| `brandly webhook` | Start webhook server (CI/CD) |
|
|
223
|
+
|
|
224
|
+
## Pipeline Phases
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
init → trends → concept → script → asset → audio → re_edit → validate → publish → done
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Each phase has a corresponding agent prompt that defines the task for the AI orchestrator:
|
|
231
|
+
|
|
232
|
+
| Phase | Agent | Purpose |
|
|
233
|
+
|-------|-------|---------|
|
|
234
|
+
| `init` | — | Project initialization |
|
|
235
|
+
| `trends` | trends_agent | Research viral formats for the product category |
|
|
236
|
+
| `concept` | concept_agent | Create 3 video concepts using STAMP framework |
|
|
237
|
+
| `script` | script_agent | Write shot-by-shot script with 8-Layer prompts |
|
|
238
|
+
| `asset` | asset_agent | Select models and generate visual assets |
|
|
239
|
+
| `audio` | audio_agent | Generate music, SFX, and voiceover |
|
|
240
|
+
| `re_edit` | script_agent | Review and refine the script |
|
|
241
|
+
| `validate` | validation_agent | Run virality scoring (requires Higgsfield MCP) |
|
|
242
|
+
| `publish` | publish_agent | Generate platform-specific metadata |
|
|
243
|
+
| `done` | — | Pipeline complete |
|
|
244
|
+
|
|
245
|
+
## Video Styles
|
|
246
|
+
|
|
247
|
+
| Style | Credits (base) | Best For |
|
|
248
|
+
|-------|---------------|----------|
|
|
249
|
+
| `cinematic` | 250 | Premium brand stories |
|
|
250
|
+
| `ugc` | 150 | User-generated content style |
|
|
251
|
+
| `montage` | 200 | Fast-paced highlight reels |
|
|
252
|
+
| `multi_shot` | 300 | Complex multi-scene videos |
|
|
253
|
+
| `continuous` | 200 | Single-take seamless shots |
|
|
254
|
+
| `unboxing` | 180 | Product reveal videos |
|
|
255
|
+
| `lifestyle` | 170 | Contextual product usage |
|
|
256
|
+
| `collage_motion_graphic` | 350 | Animated collage sequences |
|
|
257
|
+
| `brand_short_video` | 280 | Short-form brand content |
|
|
258
|
+
| `explainer_video` | 400 | Educational/instructional |
|
|
259
|
+
|
|
260
|
+
## Style Presets (Avoid AI Slop)
|
|
261
|
+
|
|
262
|
+
| Preset | Description |
|
|
263
|
+
|--------|-------------|
|
|
264
|
+
| `photorealistic` | Camera/lens/grain, natural skin texture |
|
|
265
|
+
| `editorial` | Magazine look, studio lighting |
|
|
266
|
+
| `cinematic` | Anamorphic, film grade, teal & orange |
|
|
267
|
+
| `commercial` | Product photography, clean studio |
|
|
268
|
+
| `documentary` | Photojournalism, available light |
|
|
269
|
+
|
|
270
|
+
## Director Mode
|
|
271
|
+
|
|
272
|
+
The **Director** is an autonomous orchestrator agent. When invoked by an AI tool, it:
|
|
273
|
+
|
|
274
|
+
1. Gathers product info (name, idea, style, budget, platforms)
|
|
275
|
+
2. Creates a project via `brandly init`
|
|
276
|
+
3. Runs the pipeline phase by phase
|
|
277
|
+
4. Checks virality, manages budget, and exports final assets
|
|
278
|
+
|
|
279
|
+
To use it with any AI tool, copy the output of:
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
brandly director
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Project Structure
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
.brandly/
|
|
289
|
+
├── projects/
|
|
290
|
+
│ └── {project-id}/
|
|
291
|
+
│ ├── project.json # Project state
|
|
292
|
+
│ ├── cost.json # Credit spend log
|
|
293
|
+
│ └── artifacts/
|
|
294
|
+
│ └── {phase}/ # Phase outputs (.md, .json)
|
|
295
|
+
├── user-preferences.json # Liked/disliked hooks, style prefs
|
|
296
|
+
└── templates/ # Custom saved templates
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Generated media is stored in:
|
|
300
|
+
- `imagen/{project-id}/` — generated images
|
|
301
|
+
- `videgen/{project-id}/` — generated videos
|
|
302
|
+
- `audgen/{project-id}/` — generated audio
|
|
303
|
+
|
|
304
|
+
## Development
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
# Install in development mode
|
|
308
|
+
pip install -e ".[dev]"
|
|
309
|
+
|
|
310
|
+
# Run tests
|
|
311
|
+
pytest
|
|
312
|
+
|
|
313
|
+
# Run tests with coverage
|
|
314
|
+
pytest --cov=src/brandly_cli
|
|
315
|
+
|
|
316
|
+
# Lint
|
|
317
|
+
ruff check src/
|
|
318
|
+
ruff check src/ --fix
|
|
319
|
+
|
|
320
|
+
# Syntax check
|
|
321
|
+
python -m py_compile src/brandly_cli/*.py
|
|
322
|
+
|
|
323
|
+
# Build
|
|
324
|
+
python -m build
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## Integration with AI Tools
|
|
328
|
+
|
|
329
|
+
### OpenCode
|
|
330
|
+
|
|
331
|
+
Add to `.opencode/package.json`:
|
|
332
|
+
```json
|
|
333
|
+
{ "dependencies": { "brandly": "github:Dream-Pixels-Forge/brandly-plugin" } }
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Register in `opencode.json`:
|
|
337
|
+
```json
|
|
338
|
+
{ "$schema": "https://opencode.ai/config.json", "plugin": ["brandly"] }
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Codex / Qwen Code / Claude Code
|
|
342
|
+
|
|
343
|
+
Use the CLI directly — all commands are designed to be called by agent subprocesses. The Director prompt provides the orchestration logic.
|
|
344
|
+
|
|
345
|
+
## License
|
|
346
|
+
|
|
347
|
+
MIT — Dream Pixels Forge
|