brandly-cli 0.3.0__tar.gz → 0.3.2__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 → brandly_cli-0.3.2}/PKG-INFO +31 -182
- brandly_cli-0.3.2/README.md +162 -0
- brandly_cli-0.3.2/assets/banner.png +0 -0
- brandly_cli-0.3.2/dev-notes/DEVELOPMENT.md +154 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/pyproject.toml +1 -1
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/__about__.py +1 -1
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/cli.py +245 -0
- brandly_cli-0.3.0/README.md +0 -313
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/$null +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/.env.example +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/.github/workflows/ci.yml +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/.github/workflows/release.yml +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/.gitignore +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/.pre-commit-config.yaml +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/Makefile +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/byteplus-ark-cli-1.0.24.tgz +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/dev-notes/AUDIT.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/dev-notes/GOAL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/dev-notes/IMPLEMENTATION.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/dev-notes/PROGRESS.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/dev-notes/SECURITY.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/dev-notes/SPEC.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/generate_svd.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/package/LICENSE +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/package/README.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/package/manifest.json +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/package/package.json +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/package/scripts/postinstall.js +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/package/scripts/run.js +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/scripts/install-hooks.sh +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/README.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-animal-sheet/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-animal-sheet/references/habitats.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-animal-sheet/references/prompt-variants.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-animal-sheet/references/species-guide.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-character-sheet/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-character-sheet/references/common-types.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-character-sheet/references/consistency-checklist.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-character-sheet/references/prompt-variants.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-consistency/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-consistency/references/anchoring-system.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-consistency/references/drift-checklist.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-consistency/references/lock-strength.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-location-sheet/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-location-sheet/references/lighting-setups.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-location-sheet/references/location-types.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-location-sheet/references/prompt-variants.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-mecha-sheet/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-mecha-sheet/references/mecha-types.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-mecha-sheet/references/prompt-variants.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-mecha-sheet/references/technical-reference.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-object-sheet/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-object-sheet/references/photography-setups.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-object-sheet/references/product-categories.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-object-sheet/references/prompt-variants.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-plant-sheet/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-plant-sheet/references/plant-species.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-plant-sheet/references/prompt-variants.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-plant-sheet/references/seasonal-reference.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-production-bible/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-production-bible/references/asset-map.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-production-bible/references/bible-template.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-production-bible/references/example-bible.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-storyboard/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-storyboard/references/examples.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-storyboard/references/pacing-guide.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-storyboard/references/shot-formats.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-vehicle-sheet/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-vehicle-sheet/references/prompt-variants.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-vehicle-sheet/references/shot-angles.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-vehicle-sheet/references/vehicle-types.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-video-generation/SKILL.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-video-generation/references/camera-control.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-video-generation/references/character-consistency.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-video-generation/references/lighting-presets.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-video-generation/references/troubleshooting.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/skills/brandly-video-generation/references/video-styles.md +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/__init__.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/__main__.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/agnes_client.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/analyzer.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/ark_client.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/audio_client.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/autodirector.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/beat_sync.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/captions.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/constants.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/cost_tracker.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/director.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/dubbing.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/edit.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/export_platforms.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/memory.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/minimax_client.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/project_manager.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/sharing.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/stitch.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/style_presets.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/sync.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/templates.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/thumbnails.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/trends.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/types.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/utils.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/video_prompts.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/src/brandly_cli/webhook.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/__init__.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/_check.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_agnes_client.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_analyzer.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_ark_client.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_autodirector.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_beat_sync.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_brandly_cli.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_cli.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_dubbing.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_edit.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_export_platforms.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_reference.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_sharing.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_stitch.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_templates.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_thumbnails.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_trends.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_video_prompts.py +0 -0
- {brandly_cli-0.3.0 → brandly_cli-0.3.2}/tests/test_webhook.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: brandly-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: AI product video orchestrator — add image, video, and sound generation to any AI tool
|
|
5
5
|
Project-URL: Homepage, https://github.com/Dream-Pixels-Forge/brandly-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/Dream-Pixels-Forge/brandly-cli
|
|
@@ -34,6 +34,10 @@ Description-Content-Type: text/markdown
|
|
|
34
34
|
|
|
35
35
|
# Brandly CLI
|
|
36
36
|
|
|
37
|
+
<p align="center">
|
|
38
|
+
<img src="assets/banner.png" alt="Brandly CLI Banner" width="100%">
|
|
39
|
+
</p>
|
|
40
|
+
|
|
37
41
|
> **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
42
|
|
|
39
43
|
[](https://pypi.org/project/brandly-cli/)
|
|
@@ -58,18 +62,18 @@ Brandly is an **autonomous video production pipeline** that turns product ideas
|
|
|
58
62
|
- **Credit budgeting** — track spend per phase against a project budget
|
|
59
63
|
- **Style presets** — avoid AI slop with photorealistic, cinematic, editorial, commercial, and documentary presets
|
|
60
64
|
|
|
61
|
-
### v0.3.
|
|
65
|
+
### v0.3.1 New Features
|
|
62
66
|
|
|
63
67
|
| Feature | Description |
|
|
64
68
|
|---------|-------------|
|
|
65
|
-
| **Stitch** | Multi-shot video assembly with transitions (fade, dissolve
|
|
69
|
+
| **Stitch** | Multi-shot video assembly with transitions (fade, dissolve) and color grading |
|
|
66
70
|
| **Export Platforms** | Platform-optimized exports for TikTok, Instagram, YouTube, Facebook |
|
|
67
|
-
| **Thumbnails** |
|
|
68
|
-
| **Dubbing** | Multi-language video dubbing via MiniMax TTS
|
|
71
|
+
| **Thumbnails** | Keyframe extraction with text overlays |
|
|
72
|
+
| **Dubbing** | Multi-language video dubbing via MiniMax TTS |
|
|
69
73
|
| **Beat Sync** | Music-reactive editing with beat detection |
|
|
70
74
|
| **Auto-Director** | Script-to-video pipeline automation |
|
|
71
|
-
| **Trends** | Trending format research database
|
|
72
|
-
| **Analyzer** | Video performance prediction
|
|
75
|
+
| **Trends** | Trending format research database |
|
|
76
|
+
| **Analyzer** | Video performance prediction & scoring |
|
|
73
77
|
| **Templates** | Reusable project configurations |
|
|
74
78
|
| **Webhook** | CI/CD integration with job queue |
|
|
75
79
|
| **Sharing** | Cloud export with pluggable providers |
|
|
@@ -85,14 +89,11 @@ pip install brandly-cli
|
|
|
85
89
|
### Configure API Keys
|
|
86
90
|
|
|
87
91
|
```bash
|
|
88
|
-
# Agnes AI (image + video generation)
|
|
89
92
|
export AGNES_API_KEY="your-agnes-api-key"
|
|
90
|
-
|
|
91
|
-
# MiniMax Audio (music + TTS)
|
|
92
93
|
export MINIMAX_API_KEY="your-minimax-api-key"
|
|
93
94
|
```
|
|
94
95
|
|
|
95
|
-
Or create a `.env` file
|
|
96
|
+
Or create a `.env` file:
|
|
96
97
|
|
|
97
98
|
```dotenv
|
|
98
99
|
AGNES_API_KEY=your_key_here
|
|
@@ -118,50 +119,30 @@ brandly init \
|
|
|
118
119
|
### 2. Run the Pipeline
|
|
119
120
|
|
|
120
121
|
```bash
|
|
121
|
-
# Check cost estimate first
|
|
122
122
|
brandly estimate --style cinematic --shots 5
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
brandly
|
|
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
|
|
123
|
+
brandly run <project-id>
|
|
124
|
+
brandly approve <project-id> <phase>
|
|
125
|
+
brandly director
|
|
130
126
|
```
|
|
131
127
|
|
|
132
|
-
### 3. Generate Media
|
|
128
|
+
### 3. Generate Media
|
|
133
129
|
|
|
134
130
|
```bash
|
|
135
|
-
|
|
136
|
-
brandly
|
|
137
|
-
|
|
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
|
|
131
|
+
brandly image --prompt "product on marble surface" --style-preset cinematic
|
|
132
|
+
brandly video <project-id> --prompt "sleek earbuds rotating" --duration 5
|
|
133
|
+
brandly music --prompt "upbeat electronic" --duration 30
|
|
145
134
|
brandly tts "Welcome to SuperWidget Pro"
|
|
146
135
|
```
|
|
147
136
|
|
|
148
137
|
### 4. Export & Share
|
|
149
138
|
|
|
150
139
|
```bash
|
|
151
|
-
# Export for platforms
|
|
152
140
|
brandly export <project-id> --platforms tiktok youtube
|
|
153
|
-
|
|
154
|
-
# Generate thumbnails
|
|
155
141
|
brandly thumbnail <project-id>
|
|
156
|
-
|
|
157
|
-
# Stitch clips together
|
|
158
142
|
brandly stitch clip1.mp4 clip2.mp4 --transition fade
|
|
159
|
-
|
|
160
|
-
# Dub to another language
|
|
161
143
|
brandly voice-match input.mp4 --source en --target es
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
brandly share output.mp4 --provider local
|
|
144
|
+
brandly analyze video.mp4
|
|
145
|
+
brandly share output.mp4
|
|
165
146
|
```
|
|
166
147
|
|
|
167
148
|
## CLI Reference
|
|
@@ -175,9 +156,7 @@ brandly share output.mp4 --provider local
|
|
|
175
156
|
| `brandly list` | List all projects |
|
|
176
157
|
| `brandly run <id>` | Run the next pipeline phase |
|
|
177
158
|
| `brandly approve <id> <phase>` | Approve a phase and advance |
|
|
178
|
-
| `brandly cancel / pause / resume <id>` | Control project state |
|
|
179
159
|
| `brandly cost <id>` | Show cost summary |
|
|
180
|
-
| `brandly record-cost <id> <phase> <action> <credits>` | Record credit spend |
|
|
181
160
|
|
|
182
161
|
### Media Generation
|
|
183
162
|
|
|
@@ -185,162 +164,32 @@ brandly share output.mp4 --provider local
|
|
|
185
164
|
|---------|-------------|
|
|
186
165
|
| `brandly image` | Generate an image via Agnes AI |
|
|
187
166
|
| `brandly video <id>` | Generate a video via Agnes AI |
|
|
188
|
-
| `brandly music` | Generate background music
|
|
167
|
+
| `brandly music` | Generate background music |
|
|
189
168
|
| `brandly tts <text>` | Generate voiceover via TTS |
|
|
190
|
-
| `brandly voices` | List available TTS voices |
|
|
191
169
|
|
|
192
170
|
### Post-Production
|
|
193
171
|
|
|
194
172
|
| Command | Description |
|
|
195
173
|
|---------|-------------|
|
|
196
|
-
| `brandly stitch <clips...>` | Multi-shot video assembly
|
|
174
|
+
| `brandly stitch <clips...>` | Multi-shot video assembly |
|
|
197
175
|
| `brandly export <id> --platforms <p>` | Export for specific platforms |
|
|
198
|
-
| `brandly thumbnail <id>` | Generate thumbnails
|
|
199
|
-
| `brandly voice-match <video> --source <lang> --target <lang>` | Dub video
|
|
200
|
-
| `brandly beat-sync <video> <audio>` | Cut video to
|
|
201
|
-
| `brandly analyze <video>` | Predict
|
|
202
|
-
| `brandly share <file>` | Upload
|
|
176
|
+
| `brandly thumbnail <id>` | Generate thumbnails |
|
|
177
|
+
| `brandly voice-match <video> --source <lang> --target <lang>` | Dub video |
|
|
178
|
+
| `brandly beat-sync <video> <audio>` | Cut video to beats |
|
|
179
|
+
| `brandly analyze <video>` | Predict performance metrics |
|
|
180
|
+
| `brandly share <file>` | Upload for cloud sharing |
|
|
203
181
|
|
|
204
182
|
### Intelligence
|
|
205
183
|
|
|
206
184
|
| Command | Description |
|
|
207
185
|
|---------|-------------|
|
|
208
|
-
| `brandly trend <category>` | Research trending
|
|
209
|
-
| `brandly template list` | List
|
|
186
|
+
| `brandly trend <category>` | Research trending formats |
|
|
187
|
+
| `brandly template list` | List templates |
|
|
210
188
|
| `brandly template use <name>` | Create project from template |
|
|
211
189
|
| `brandly validate <id>` | Run virality validation |
|
|
212
|
-
| `brandly progress <id>` | Show detailed progress |
|
|
213
190
|
| `brandly director` | Show Director agent prompt |
|
|
214
191
|
|
|
215
|
-
|
|
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.
|
|
192
|
+
---
|
|
344
193
|
|
|
345
194
|
## License
|
|
346
195
|
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Brandly CLI
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="assets/banner.png" alt="Brandly CLI Banner" width="100%">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
> **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.
|
|
8
|
+
|
|
9
|
+
[](https://pypi.org/project/brandly-cli/)
|
|
10
|
+
[](https://www.python.org/downloads/)
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli)
|
|
13
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli)
|
|
14
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli/actions)
|
|
15
|
+
[](https://github.com/Dream-Pixels-Forge/brandly-cli/stargazers)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## What is Brandly?
|
|
20
|
+
|
|
21
|
+
Brandly is an **autonomous video production pipeline** that turns product ideas into platform-ready marketing videos. It provides:
|
|
22
|
+
|
|
23
|
+
- **Image generation** via [Agnes AI](https://apihub.agnes-ai.com) (text-to-image, image-to-image)
|
|
24
|
+
- **Video generation** via Agnes AI (text-to-video, keyframe-controlled, reference-based)
|
|
25
|
+
- **Audio generation** via [MiniMax Audio](https://platform.minimaxi.com) (background music, TTS voiceover)
|
|
26
|
+
- **Multi-agent pipeline** — automated workflow from idea → trends → concept → script → assets → audio → validate → publish
|
|
27
|
+
- **Director orchestrator** — an autonomous agent that guides the entire production process
|
|
28
|
+
- **Credit budgeting** — track spend per phase against a project budget
|
|
29
|
+
- **Style presets** — avoid AI slop with photorealistic, cinematic, editorial, commercial, and documentary presets
|
|
30
|
+
|
|
31
|
+
### v0.3.1 New Features
|
|
32
|
+
|
|
33
|
+
| Feature | Description |
|
|
34
|
+
|---------|-------------|
|
|
35
|
+
| **Stitch** | Multi-shot video assembly with transitions (fade, dissolve) and color grading |
|
|
36
|
+
| **Export Platforms** | Platform-optimized exports for TikTok, Instagram, YouTube, Facebook |
|
|
37
|
+
| **Thumbnails** | Keyframe extraction with text overlays |
|
|
38
|
+
| **Dubbing** | Multi-language video dubbing via MiniMax TTS |
|
|
39
|
+
| **Beat Sync** | Music-reactive editing with beat detection |
|
|
40
|
+
| **Auto-Director** | Script-to-video pipeline automation |
|
|
41
|
+
| **Trends** | Trending format research database |
|
|
42
|
+
| **Analyzer** | Video performance prediction & scoring |
|
|
43
|
+
| **Templates** | Reusable project configurations |
|
|
44
|
+
| **Webhook** | CI/CD integration with job queue |
|
|
45
|
+
| **Sharing** | Cloud export with pluggable providers |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install brandly-cli
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Configure API Keys
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
export AGNES_API_KEY="your-agnes-api-key"
|
|
59
|
+
export MINIMAX_API_KEY="your-minimax-api-key"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Or create a `.env` file:
|
|
63
|
+
|
|
64
|
+
```dotenv
|
|
65
|
+
AGNES_API_KEY=your_key_here
|
|
66
|
+
MINIMAX_API_KEY=your_key_here
|
|
67
|
+
AGNES_BASE_URL=https://apihub.agnes-ai.com/v1
|
|
68
|
+
MINIMAX_BASE_URL=https://api.minimaxi.com/v1
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Quick Start
|
|
72
|
+
|
|
73
|
+
### 1. Initialize a Project
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
brandly init \
|
|
77
|
+
--name "SuperWidget Pro" \
|
|
78
|
+
--idea "A revolutionary widget that organizes your desk with AI" \
|
|
79
|
+
--style cinematic \
|
|
80
|
+
--budget 500 \
|
|
81
|
+
--shots 5 \
|
|
82
|
+
--platforms tiktok instagram youtube
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 2. Run the Pipeline
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
brandly estimate --style cinematic --shots 5
|
|
89
|
+
brandly run <project-id>
|
|
90
|
+
brandly approve <project-id> <phase>
|
|
91
|
+
brandly director
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 3. Generate Media
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
brandly image --prompt "product on marble surface" --style-preset cinematic
|
|
98
|
+
brandly video <project-id> --prompt "sleek earbuds rotating" --duration 5
|
|
99
|
+
brandly music --prompt "upbeat electronic" --duration 30
|
|
100
|
+
brandly tts "Welcome to SuperWidget Pro"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 4. Export & Share
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
brandly export <project-id> --platforms tiktok youtube
|
|
107
|
+
brandly thumbnail <project-id>
|
|
108
|
+
brandly stitch clip1.mp4 clip2.mp4 --transition fade
|
|
109
|
+
brandly voice-match input.mp4 --source en --target es
|
|
110
|
+
brandly analyze video.mp4
|
|
111
|
+
brandly share output.mp4
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## CLI Reference
|
|
115
|
+
|
|
116
|
+
### Project Management
|
|
117
|
+
|
|
118
|
+
| Command | Description |
|
|
119
|
+
|---------|-------------|
|
|
120
|
+
| `brandly init` / `brandly start` | Start a new video project |
|
|
121
|
+
| `brandly status <id>` | Show project status |
|
|
122
|
+
| `brandly list` | List all projects |
|
|
123
|
+
| `brandly run <id>` | Run the next pipeline phase |
|
|
124
|
+
| `brandly approve <id> <phase>` | Approve a phase and advance |
|
|
125
|
+
| `brandly cost <id>` | Show cost summary |
|
|
126
|
+
|
|
127
|
+
### Media Generation
|
|
128
|
+
|
|
129
|
+
| Command | Description |
|
|
130
|
+
|---------|-------------|
|
|
131
|
+
| `brandly image` | Generate an image via Agnes AI |
|
|
132
|
+
| `brandly video <id>` | Generate a video via Agnes AI |
|
|
133
|
+
| `brandly music` | Generate background music |
|
|
134
|
+
| `brandly tts <text>` | Generate voiceover via TTS |
|
|
135
|
+
|
|
136
|
+
### Post-Production
|
|
137
|
+
|
|
138
|
+
| Command | Description |
|
|
139
|
+
|---------|-------------|
|
|
140
|
+
| `brandly stitch <clips...>` | Multi-shot video assembly |
|
|
141
|
+
| `brandly export <id> --platforms <p>` | Export for specific platforms |
|
|
142
|
+
| `brandly thumbnail <id>` | Generate thumbnails |
|
|
143
|
+
| `brandly voice-match <video> --source <lang> --target <lang>` | Dub video |
|
|
144
|
+
| `brandly beat-sync <video> <audio>` | Cut video to beats |
|
|
145
|
+
| `brandly analyze <video>` | Predict performance metrics |
|
|
146
|
+
| `brandly share <file>` | Upload for cloud sharing |
|
|
147
|
+
|
|
148
|
+
### Intelligence
|
|
149
|
+
|
|
150
|
+
| Command | Description |
|
|
151
|
+
|---------|-------------|
|
|
152
|
+
| `brandly trend <category>` | Research trending formats |
|
|
153
|
+
| `brandly template list` | List templates |
|
|
154
|
+
| `brandly template use <name>` | Create project from template |
|
|
155
|
+
| `brandly validate <id>` | Run virality validation |
|
|
156
|
+
| `brandly director` | Show Director agent prompt |
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## License
|
|
161
|
+
|
|
162
|
+
MIT — Dream Pixels Forge
|
|
Binary file
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Brandly CLI — Development Guide
|
|
2
|
+
|
|
3
|
+
> This file contains development, architecture, and integration details. For end-user documentation, see [README.md](../README.md).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Pipeline Phases
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
init → trends → concept → script → asset → audio → re_edit → validate → publish → done
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
| Phase | Agent | Purpose |
|
|
14
|
+
|-------|-------|---------|
|
|
15
|
+
| `init` | — | Project initialization |
|
|
16
|
+
| `trends` | trends_agent | Research viral formats for the product category |
|
|
17
|
+
| `concept` | concept_agent | Create 3 video concepts using STAMP framework |
|
|
18
|
+
| `script` | script_agent | Write shot-by-shot script with 8-Layer prompts |
|
|
19
|
+
| `asset` | asset_agent | Select models and generate visual assets |
|
|
20
|
+
| `audio` | audio_agent | Generate music, SFX, and voiceover |
|
|
21
|
+
| `re_edit` | script_agent | Review and refine the script |
|
|
22
|
+
| `validate` | validation_agent | Run virality scoring |
|
|
23
|
+
| `publish` | publish_agent | Generate platform-specific metadata |
|
|
24
|
+
| `done` | — | Pipeline complete |
|
|
25
|
+
|
|
26
|
+
## Video Styles
|
|
27
|
+
|
|
28
|
+
| Style | Credits (base) | Best For |
|
|
29
|
+
|-------|---------------|----------|
|
|
30
|
+
| `cinematic` | 250 | Premium brand stories |
|
|
31
|
+
| `ugc` | 150 | User-generated content style |
|
|
32
|
+
| `montage` | 200 | Fast-paced highlight reels |
|
|
33
|
+
| `multi_shot` | 300 | Complex multi-scene videos |
|
|
34
|
+
| `continuous` | 200 | Single-take seamless shots |
|
|
35
|
+
| `unboxing` | 180 | Product reveal videos |
|
|
36
|
+
| `lifestyle` | 170 | Contextual product usage |
|
|
37
|
+
| `collage_motion_graphic` | 350 | Animated collage sequences |
|
|
38
|
+
| `brand_short_video` | 280 | Short-form brand content |
|
|
39
|
+
| `explainer_video` | 400 | Educational/instructional |
|
|
40
|
+
|
|
41
|
+
## Style Presets (Avoid AI Slop)
|
|
42
|
+
|
|
43
|
+
| Preset | Description |
|
|
44
|
+
|--------|-------------|
|
|
45
|
+
| `photorealistic` | Camera/lens/grain, natural skin texture |
|
|
46
|
+
| `editorial` | Magazine look, studio lighting |
|
|
47
|
+
| `cinematic` | Anamorphic, film grade, teal & orange |
|
|
48
|
+
| `commercial` | Product photography, clean studio |
|
|
49
|
+
| `documentary` | Photojournalism, available light |
|
|
50
|
+
|
|
51
|
+
## Director Mode
|
|
52
|
+
|
|
53
|
+
The **Director** is an autonomous orchestrator agent. When invoked by an AI tool, it:
|
|
54
|
+
|
|
55
|
+
1. Gathers product info (name, idea, style, budget, platforms)
|
|
56
|
+
2. Creates a project via `brandly init`
|
|
57
|
+
3. Runs the pipeline phase by phase
|
|
58
|
+
4. Checks virality, manages budget, and exports final assets
|
|
59
|
+
|
|
60
|
+
To use it with any AI tool, copy the output of:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
brandly director
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Project Structure
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
.brandly/
|
|
70
|
+
├── projects/
|
|
71
|
+
│ └── {project-id}/
|
|
72
|
+
│ ├── project.json # Project state
|
|
73
|
+
│ ├── cost.json # Credit spend log
|
|
74
|
+
│ └── artifacts/
|
|
75
|
+
│ └── {phase}/ # Phase outputs (.md, .json)
|
|
76
|
+
├── user-preferences.json # Liked/disliked hooks, style prefs
|
|
77
|
+
└── templates/ # Custom saved templates
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Generated media is stored in:
|
|
81
|
+
- `imagen/{project-id}/` — generated images
|
|
82
|
+
- `videgen/{project-id}/` — generated videos
|
|
83
|
+
- `audgen/{project-id}/` — generated audio
|
|
84
|
+
|
|
85
|
+
## Development
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Install in development mode
|
|
89
|
+
pip install -e ".[dev]"
|
|
90
|
+
|
|
91
|
+
# Run tests
|
|
92
|
+
pytest
|
|
93
|
+
|
|
94
|
+
# Run tests with coverage
|
|
95
|
+
pytest --cov=src/brandly_cli
|
|
96
|
+
|
|
97
|
+
# Lint
|
|
98
|
+
ruff check src/
|
|
99
|
+
ruff check src/ --fix
|
|
100
|
+
|
|
101
|
+
# Syntax check
|
|
102
|
+
python -m py_compile src/brandly_cli/*.py
|
|
103
|
+
|
|
104
|
+
# Build
|
|
105
|
+
python -m build
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## CI/CD
|
|
109
|
+
|
|
110
|
+
- **GitHub Actions**: `.github/workflows/ci.yml` runs tests, lint, and syntax checks
|
|
111
|
+
- **PyPI Publishing**: `.github/workflows/release.yml` publishes on release via OIDC trusted publishing
|
|
112
|
+
- **Pre-commit hooks**: `.pre-commit-config.yaml` with ruff + pytest
|
|
113
|
+
|
|
114
|
+
## Architecture
|
|
115
|
+
|
|
116
|
+
### Core Modules
|
|
117
|
+
|
|
118
|
+
| Module | Purpose |
|
|
119
|
+
|--------|---------|
|
|
120
|
+
| `cli.py` | Click command definitions |
|
|
121
|
+
| `project_manager.py` | Project CRUD operations |
|
|
122
|
+
| `edit.py` | FFmpeg video editing |
|
|
123
|
+
| `stitch.py` | Multi-shot assembly |
|
|
124
|
+
| `export_platforms.py` | Platform-specific exports |
|
|
125
|
+
| `thumbnails.py` | Keyframe extraction |
|
|
126
|
+
| `dubbing.py` | Multi-language dubbing |
|
|
127
|
+
| `beat_sync.py` | Music-reactive editing |
|
|
128
|
+
| `autodirector.py` | Script-to-video pipeline |
|
|
129
|
+
| `trends.py` | Trend research database |
|
|
130
|
+
| `analyzer.py` | Performance prediction |
|
|
131
|
+
| `templates.py` | Project templates |
|
|
132
|
+
| `webhook.py` | CI/CD webhook server |
|
|
133
|
+
| `sharing.py` | Cloud export providers |
|
|
134
|
+
|
|
135
|
+
### API Providers
|
|
136
|
+
|
|
137
|
+
| Provider | Purpose |
|
|
138
|
+
|----------|---------|
|
|
139
|
+
| `agnes_client.py` | Image + video generation |
|
|
140
|
+
| `ark_client.py` | BytePlus Ark (Seedream/Seedance) |
|
|
141
|
+
| `minimax_client.py` | Music + TTS |
|
|
142
|
+
|
|
143
|
+
### Key Dependencies
|
|
144
|
+
|
|
145
|
+
- `click` — CLI framework
|
|
146
|
+
- `pydantic` — Data validation
|
|
147
|
+
- `httpx` — Async HTTP client
|
|
148
|
+
- `rich` — Terminal UI
|
|
149
|
+
- `pillow` — Image processing
|
|
150
|
+
- `pytest` / `pytest-asyncio` — Testing
|
|
151
|
+
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
MIT — Dream Pixels Forge
|