@growthub/cli 0.3.54 → 0.3.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -156
- package/assets/worker-kits/growthub-ai-website-cloner-v1/.env.example +7 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/QUICKSTART.md +116 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/NEW-CLIENT.md +22 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/_template/brand-kit.md +27 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/growthub/brand-kit.md +26 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/bundles/growthub-ai-website-cloner-v1.json +53 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/ai-website-cloner-fork-integration.md +118 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/design-token-system.md +135 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/multi-phase-pipeline.md +129 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/parallel-builder-dispatch.md +103 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/clone-brief-sample.md +54 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/component-spec-sample.md +123 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/platform-handoff-sample.md +102 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/visual-qa-sample.md +119 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/README.md +71 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/kit-standard.md +47 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/kit.json +105 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output/README.md +26 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output-standards.md +75 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/runtime-assumptions.md +70 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/check-deps.sh +50 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/clone-fork.sh +66 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/verify-env.mjs +78 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/skills.md +186 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/asset-manifest.md +57 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/builder-dispatch-plan.md +92 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/clone-brief.md +59 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/component-spec.md +124 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/design-token-extraction.md +89 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/platform-handoff.md +114 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/reconnaissance-report.md +77 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/visual-qa-checklist.md +107 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/validation-checklist.md +76 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/workers/ai-website-cloner-operator/CLAUDE.md +256 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/.env.example +40 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/QUICKSTART.md +114 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/NEW-CLIENT.md +42 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/_template/brand-kit.md +49 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/growthub/brand-kit.md +50 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/bundles/growthub-open-montage-studio-v1.json +55 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/cms-node-bridge.md +152 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/open-montage-fork-integration.md +120 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/pipeline-reference.md +147 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/provider-adapter-layer.md +105 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/cms-node-video-gen-sample.md +109 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/pipeline-selection-sample.md +67 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/platform-ready-handoff-sample.md +101 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/video-production-brief-sample.md +68 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/README.md +7 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/kit-standard.md +45 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/kit.json +107 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/output/README.md +34 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/output-standards.md +79 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/runtime-assumptions.md +86 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/check-deps.sh +43 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/clone-fork.sh +53 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/verify-env.mjs +102 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/skills.md +254 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/asset-tracking.md +46 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/cms-node-pipeline-mapping.md +64 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/generation-batch-plan.md +70 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/pipeline-selection-brief.md +67 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/platform-ready-execution-handoff.md +103 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/prompt-matrix.md +48 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/provider-selection-brief.md +86 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/review-qa-checklist.md +59 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/scene-plan.md +65 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/video-production-brief.md +58 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/validation-checklist.md +46 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/workers/open-montage-studio-operator/CLAUDE.md +304 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/.env.example +15 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/QUICKSTART.md +90 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/NEW-CLIENT.md +57 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/_template/brand-kit.md +88 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/growthub/brand-kit.md +92 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/bundles/growthub-twenty-crm-v1.json +56 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/api-and-webhooks.md +296 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/data-model-layer.md +172 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/twenty-fork-integration.md +213 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-playbook-sample.md +172 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-setup-sample.md +100 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/lead-enrichment-sample.md +117 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/pipeline-automation-sample.md +132 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/README.md +114 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/kit-standard.md +61 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/kit.json +108 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/output/README.md +46 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/output-standards.md +175 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/runtime-assumptions.md +150 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/check-deps.sh +56 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/clone-fork.sh +77 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/verify-env.mjs +105 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/skills.md +401 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/api-query-plan.md +179 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-playbook.md +155 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-setup-brief.md +94 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/custom-object-design.md +115 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/data-model-design.md +112 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/enrichment-field-map.md +100 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/import-mapping.md +139 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/integration-handoff.md +190 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/lead-enrichment-pipeline.md +128 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/pipeline-automation-brief.md +88 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/webhook-integration-spec.md +129 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/workspace-config-checklist.md +129 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/validation-checklist.md +115 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/workers/twenty-crm-operator/CLAUDE.md +310 -0
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"kit": {
|
|
4
|
+
"id": "growthub-open-montage-studio-v1",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"name": "Growthub Agent Worker Kit — Open Montage Studio",
|
|
7
|
+
"description": "Self-contained local execution environment for OpenMontage agentic video production. Produces end-to-end video content through 12 production pipelines — from animated explainers and cinematic trailers to documentary montages and talking heads — with direct CMS node integration for first-party video/image generation.",
|
|
8
|
+
"type": "worker",
|
|
9
|
+
"visibility": "public-open-source",
|
|
10
|
+
"sourceRepo": "growthub-local",
|
|
11
|
+
"family": "studio"
|
|
12
|
+
},
|
|
13
|
+
"entrypoint": {
|
|
14
|
+
"workerId": "open-montage-studio-operator",
|
|
15
|
+
"path": "workers/open-montage-studio-operator/CLAUDE.md"
|
|
16
|
+
},
|
|
17
|
+
"workerIds": [
|
|
18
|
+
"open-montage-studio-operator"
|
|
19
|
+
],
|
|
20
|
+
"agentContractPath": "workers/open-montage-studio-operator/CLAUDE.md",
|
|
21
|
+
"brandTemplatePath": "brands/_template/brand-kit.md",
|
|
22
|
+
"publicExampleBrandPaths": [
|
|
23
|
+
"brands/growthub/brand-kit.md"
|
|
24
|
+
],
|
|
25
|
+
"frozenAssetPaths": [
|
|
26
|
+
"QUICKSTART.md",
|
|
27
|
+
".env.example",
|
|
28
|
+
"skills.md",
|
|
29
|
+
"output-standards.md",
|
|
30
|
+
"runtime-assumptions.md",
|
|
31
|
+
"validation-checklist.md",
|
|
32
|
+
"workers/open-montage-studio-operator/CLAUDE.md",
|
|
33
|
+
"brands/_template/brand-kit.md",
|
|
34
|
+
"brands/growthub/brand-kit.md",
|
|
35
|
+
"brands/NEW-CLIENT.md",
|
|
36
|
+
"setup/clone-fork.sh",
|
|
37
|
+
"setup/verify-env.mjs",
|
|
38
|
+
"setup/check-deps.sh",
|
|
39
|
+
"output/README.md",
|
|
40
|
+
"templates/video-production-brief.md",
|
|
41
|
+
"templates/pipeline-selection-brief.md",
|
|
42
|
+
"templates/provider-selection-brief.md",
|
|
43
|
+
"templates/scene-plan.md",
|
|
44
|
+
"templates/prompt-matrix.md",
|
|
45
|
+
"templates/generation-batch-plan.md",
|
|
46
|
+
"templates/asset-tracking.md",
|
|
47
|
+
"templates/review-qa-checklist.md",
|
|
48
|
+
"templates/platform-ready-execution-handoff.md",
|
|
49
|
+
"templates/cms-node-pipeline-mapping.md",
|
|
50
|
+
"examples/video-production-brief-sample.md",
|
|
51
|
+
"examples/pipeline-selection-sample.md",
|
|
52
|
+
"examples/cms-node-video-gen-sample.md",
|
|
53
|
+
"examples/platform-ready-handoff-sample.md",
|
|
54
|
+
"docs/open-montage-fork-integration.md",
|
|
55
|
+
"docs/provider-adapter-layer.md",
|
|
56
|
+
"docs/cms-node-bridge.md",
|
|
57
|
+
"docs/pipeline-reference.md",
|
|
58
|
+
"growthub-meta/README.md",
|
|
59
|
+
"growthub-meta/kit-standard.md"
|
|
60
|
+
],
|
|
61
|
+
"setupPaths": {
|
|
62
|
+
"quickstart": "QUICKSTART.md",
|
|
63
|
+
"envExample": ".env.example",
|
|
64
|
+
"setupDir": "setup/",
|
|
65
|
+
"outputDir": "output/"
|
|
66
|
+
},
|
|
67
|
+
"outputStandard": {
|
|
68
|
+
"type": "working-directory",
|
|
69
|
+
"description": "Exported folder is intended to be pointed at directly by the agent Working Directory. All outputs are Markdown files written to output/<client-slug>/<project-slug>/.",
|
|
70
|
+
"requiredPaths": [
|
|
71
|
+
"QUICKSTART.md",
|
|
72
|
+
".env.example",
|
|
73
|
+
"kit.json",
|
|
74
|
+
"bundles/growthub-open-montage-studio-v1.json",
|
|
75
|
+
"skills.md",
|
|
76
|
+
"workers/open-montage-studio-operator/CLAUDE.md",
|
|
77
|
+
"brands/_template/brand-kit.md",
|
|
78
|
+
"brands/growthub/brand-kit.md",
|
|
79
|
+
"brands/NEW-CLIENT.md",
|
|
80
|
+
"setup/clone-fork.sh",
|
|
81
|
+
"setup/verify-env.mjs",
|
|
82
|
+
"setup/check-deps.sh",
|
|
83
|
+
"output/README.md",
|
|
84
|
+
"templates",
|
|
85
|
+
"docs",
|
|
86
|
+
"growthub-meta"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"bundles": [
|
|
90
|
+
{
|
|
91
|
+
"id": "growthub-open-montage-studio-v1",
|
|
92
|
+
"version": "1.0.0",
|
|
93
|
+
"path": "bundles/growthub-open-montage-studio-v1.json"
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"executionMode": "export",
|
|
97
|
+
"activationModes": [
|
|
98
|
+
"export"
|
|
99
|
+
],
|
|
100
|
+
"compatibility": {
|
|
101
|
+
"cliMinVersion": "0.3.50"
|
|
102
|
+
},
|
|
103
|
+
"provenance": {
|
|
104
|
+
"sourceRepo": "growthub-local",
|
|
105
|
+
"frozenAt": "2026-04-14T00:00:00.000Z"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Output Directory
|
|
2
|
+
|
|
3
|
+
This directory stores all production artifacts created by the Open Montage Studio Operator.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
output/
|
|
9
|
+
└── <client-slug>/
|
|
10
|
+
└── <project-slug>/
|
|
11
|
+
├── video-production-brief.md
|
|
12
|
+
├── pipeline-selection-brief.md
|
|
13
|
+
├── provider-selection-brief.md
|
|
14
|
+
├── scene-plan.md
|
|
15
|
+
├── prompt-matrix.md
|
|
16
|
+
├── generation-batch-plan.md
|
|
17
|
+
├── asset-tracking.md
|
|
18
|
+
├── review-qa-checklist.md
|
|
19
|
+
├── platform-ready-execution-handoff.md
|
|
20
|
+
├── cms-node-pipeline-mapping.md (if CMS nodes used)
|
|
21
|
+
└── assets/ (if local-fork mode)
|
|
22
|
+
├── images/
|
|
23
|
+
├── video/
|
|
24
|
+
├── audio/
|
|
25
|
+
└── render/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Conventions
|
|
29
|
+
|
|
30
|
+
- One directory per client, one subdirectory per project
|
|
31
|
+
- Use kebab-case for slugs
|
|
32
|
+
- All production artifacts are Markdown files
|
|
33
|
+
- Generated media assets go in `assets/` subdirectories
|
|
34
|
+
- Final render goes in `assets/render/`
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Output Standards — Open Montage Studio
|
|
2
|
+
|
|
3
|
+
All artifacts produced by the Open Montage Studio Operator must follow these standards.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Directory Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
output/<client-slug>/<project-slug>/
|
|
11
|
+
├── video-production-brief.md
|
|
12
|
+
├── pipeline-selection-brief.md
|
|
13
|
+
├── provider-selection-brief.md
|
|
14
|
+
├── scene-plan.md
|
|
15
|
+
├── prompt-matrix.md
|
|
16
|
+
├── generation-batch-plan.md
|
|
17
|
+
├── asset-tracking.md
|
|
18
|
+
├── review-qa-checklist.md
|
|
19
|
+
├── platform-ready-execution-handoff.md
|
|
20
|
+
├── cms-node-pipeline-mapping.md (if CMS nodes used)
|
|
21
|
+
└── assets/ (generated assets, if local-fork mode)
|
|
22
|
+
├── images/
|
|
23
|
+
├── video/
|
|
24
|
+
├── audio/
|
|
25
|
+
└── render/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## File Naming
|
|
31
|
+
|
|
32
|
+
- Use kebab-case for all file names
|
|
33
|
+
- Include the project slug in the directory path, not in each file name
|
|
34
|
+
- Asset files use the pattern: `<scene-number>-<type>-<sequence>.<ext>` (e.g., `01-image-001.png`)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Markdown Standards
|
|
39
|
+
|
|
40
|
+
- All artifacts are Markdown files
|
|
41
|
+
- Use tables for structured data (not inline lists)
|
|
42
|
+
- Use code blocks for commands, paths, and configuration values
|
|
43
|
+
- Every artifact must include a Project Reference header with client, project, pipeline, and date
|
|
44
|
+
- Templates must be filled completely — no empty placeholder fields in final output
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Render Profiles
|
|
49
|
+
|
|
50
|
+
| Profile | Resolution | Aspect Ratio | FPS | Codec | Bitrate |
|
|
51
|
+
|---------|-----------|--------------|-----|-------|---------|
|
|
52
|
+
| YouTube Landscape | 1920x1080 | 16:9 | 30 | H.264 | 8 Mbps |
|
|
53
|
+
| YouTube 4K | 3840x2160 | 16:9 | 30 | H.264 | 35 Mbps |
|
|
54
|
+
| YouTube Shorts | 1080x1920 | 9:16 | 30 | H.264 | 8 Mbps |
|
|
55
|
+
| Instagram Reels | 1080x1920 | 9:16 | 30 | H.264 | 8 Mbps |
|
|
56
|
+
| Instagram Feed | 1080x1080 | 1:1 | 30 | H.264 | 8 Mbps |
|
|
57
|
+
| TikTok | 1080x1920 | 9:16 | 30 | H.264 | 8 Mbps |
|
|
58
|
+
| LinkedIn | 1920x1080 | 16:9 | 30 | H.264 | 8 Mbps |
|
|
59
|
+
| Cinematic | 2560x1080 | 21:9 | 24 | H.264 | 12 Mbps |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Quality Bars
|
|
64
|
+
|
|
65
|
+
- **No slideshow outputs** — image-based videos must score >= 6.0 on the slideshow risk assessment
|
|
66
|
+
- **Audio must be present** — silent video is only acceptable when explicitly requested
|
|
67
|
+
- **Subtitles must be word-level timed** — no sentence-level block captions
|
|
68
|
+
- **Transitions must be intentional** — no default cuts everywhere; vary based on scene mood
|
|
69
|
+
- **Color grading is expected** — unless the user explicitly opts out
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Deliverable Line Format
|
|
74
|
+
|
|
75
|
+
When logging a deliverable in the brand kit:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
- YYYY-MM-DD | OpenMontage Video Package v<N> — <Project Name> | output/<client-slug>/<project-slug>/
|
|
79
|
+
```
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Runtime Assumptions — Open Montage Studio
|
|
2
|
+
|
|
3
|
+
This file documents the runtime environment expectations for the Open Montage Studio Worker Kit.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Modes
|
|
8
|
+
|
|
9
|
+
| Mode | Requirements | Description |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `local-fork` | Python 3.10+, FFmpeg, Node.js 18+, OpenMontage clone | Full tool access — agent runs pipelines directly |
|
|
12
|
+
| `agent-only` | GrowthHub session or zero-key mode | No local clone — CMS nodes or free tools provide generation |
|
|
13
|
+
| `hybrid` | GrowthHub session + partial local tools | CMS nodes for generation + local post-production |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Local-Fork Mode Requirements
|
|
18
|
+
|
|
19
|
+
### System Dependencies
|
|
20
|
+
|
|
21
|
+
| Dependency | Minimum Version | Check Command | Purpose |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| Python | 3.10+ | `python3 --version` | OpenMontage tool execution |
|
|
24
|
+
| FFmpeg | any recent | `ffmpeg -version` | Video encoding, subtitle burn-in, audio mixing |
|
|
25
|
+
| Node.js | 18+ | `node --version` | Remotion composition engine |
|
|
26
|
+
| npm | any recent | `npm --version` | Remotion dependency management |
|
|
27
|
+
|
|
28
|
+
### OpenMontage Clone
|
|
29
|
+
|
|
30
|
+
- Default path: `~/OpenMontage` (override with `OPENMONTAGE_PATH` in `.env`)
|
|
31
|
+
- Setup: `git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup`
|
|
32
|
+
- The clone includes Python requirements, Remotion composer, and Piper TTS
|
|
33
|
+
|
|
34
|
+
### API Keys
|
|
35
|
+
|
|
36
|
+
All keys are optional. More keys = more tools available. Recommended setup order:
|
|
37
|
+
|
|
38
|
+
1. Free stock media keys (Pexels, Pixabay) — completely free
|
|
39
|
+
2. Google API key — 1M chars/month free TTS + $300 new account credits
|
|
40
|
+
3. ElevenLabs — 10K chars/month free premium TTS
|
|
41
|
+
4. fal.ai — FLUX images + multi-model video (~$0.03/image)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Agent-Only Mode Requirements
|
|
46
|
+
|
|
47
|
+
- Active GrowthHub session (`growthub auth:login`) for CMS node access
|
|
48
|
+
- OR: zero-key mode (Piper TTS + free archives + Remotion guidance only)
|
|
49
|
+
- No local OpenMontage clone needed
|
|
50
|
+
- Agent produces production artifacts and composition guidance
|
|
51
|
+
- Actual generation happens via CMS hosted execution
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Hybrid Mode Requirements
|
|
56
|
+
|
|
57
|
+
- Active GrowthHub session for CMS node generation
|
|
58
|
+
- Local FFmpeg for post-production (composition, subtitles, audio mixing)
|
|
59
|
+
- Optional: local OpenMontage clone for full Remotion composition
|
|
60
|
+
- CMS node outputs (URLs) are downloaded locally for post-production
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## File System Assumptions
|
|
65
|
+
|
|
66
|
+
- Working directory is this kit folder (exported via `growthub kit download`)
|
|
67
|
+
- Output goes to `output/<client-slug>/<project-slug>/`
|
|
68
|
+
- Brand kits live in `brands/<client-slug>/`
|
|
69
|
+
- The agent reads `skills.md` and templates from relative paths
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Network Assumptions
|
|
74
|
+
|
|
75
|
+
- Internet access required for: provider API calls, CMS node execution, stock media search, web research
|
|
76
|
+
- Local-fork Remotion rendering is fully offline after assets are downloaded
|
|
77
|
+
- FFmpeg post-production is fully offline
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Known Limitations
|
|
82
|
+
|
|
83
|
+
- Piper TTS quality is lower than cloud TTS — acceptable for drafts, recommend ElevenLabs or Google for final output
|
|
84
|
+
- Local GPU video generation (WAN 2.1, Hunyuan) requires NVIDIA GPU with 6-24GB VRAM — not available on most laptops
|
|
85
|
+
- Remotion composition renders images into animated video — not the same as AI-generated motion clips
|
|
86
|
+
- CMS node execution latency depends on GrowthHub hosted infrastructure — may be slower than direct API calls
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Check system dependencies for Open Montage Studio local-fork mode.
|
|
5
|
+
# Exit 0: all dependencies present.
|
|
6
|
+
# Exit 1: one or more dependencies missing.
|
|
7
|
+
|
|
8
|
+
echo "=== Open Montage Studio — Dependency Check ==="
|
|
9
|
+
echo ""
|
|
10
|
+
|
|
11
|
+
MISSING=0
|
|
12
|
+
|
|
13
|
+
check_dep() {
|
|
14
|
+
local name="$1"
|
|
15
|
+
local cmd="$2"
|
|
16
|
+
local min_version="$3"
|
|
17
|
+
local install_hint="$4"
|
|
18
|
+
|
|
19
|
+
if command -v "$cmd" &>/dev/null; then
|
|
20
|
+
local version
|
|
21
|
+
version=$("$cmd" --version 2>&1 | head -1)
|
|
22
|
+
echo " [ok] $name: $version"
|
|
23
|
+
else
|
|
24
|
+
echo " [missing] $name — install: $install_hint"
|
|
25
|
+
MISSING=$((MISSING + 1))
|
|
26
|
+
fi
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
check_dep "Python 3.10+" "python3" "3.10" "python.org or brew install python"
|
|
30
|
+
check_dep "FFmpeg" "ffmpeg" "any" "brew install ffmpeg or ffmpeg.org"
|
|
31
|
+
check_dep "Node.js 18+" "node" "18" "nodejs.org or brew install node"
|
|
32
|
+
check_dep "npm" "npm" "any" "comes with Node.js"
|
|
33
|
+
check_dep "Git" "git" "any" "brew install git"
|
|
34
|
+
|
|
35
|
+
echo ""
|
|
36
|
+
|
|
37
|
+
if [ "$MISSING" -gt 0 ]; then
|
|
38
|
+
echo "[result] $MISSING dependency(s) missing. Install them and rerun this check."
|
|
39
|
+
exit 1
|
|
40
|
+
else
|
|
41
|
+
echo "[result] All dependencies present."
|
|
42
|
+
exit 0
|
|
43
|
+
fi
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Clone and set up OpenMontage for local-fork execution mode.
|
|
5
|
+
# Usage: bash setup/clone-fork.sh [target-dir]
|
|
6
|
+
|
|
7
|
+
TARGET_DIR="${1:-${OPENMONTAGE_PATH:-$HOME/OpenMontage}}"
|
|
8
|
+
|
|
9
|
+
echo "=== OpenMontage Fork Setup ==="
|
|
10
|
+
echo "Target directory: $TARGET_DIR"
|
|
11
|
+
echo ""
|
|
12
|
+
|
|
13
|
+
# ── Step 1: Clone ──
|
|
14
|
+
if [ -d "$TARGET_DIR/.git" ]; then
|
|
15
|
+
echo "[skip] Repository already exists at $TARGET_DIR"
|
|
16
|
+
echo " To update: cd $TARGET_DIR && git pull"
|
|
17
|
+
else
|
|
18
|
+
echo "[clone] Cloning OpenMontage..."
|
|
19
|
+
git clone https://github.com/calesthio/OpenMontage.git "$TARGET_DIR"
|
|
20
|
+
echo "[done] Cloned to $TARGET_DIR"
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# ── Step 2: Install dependencies ──
|
|
24
|
+
echo ""
|
|
25
|
+
echo "[setup] Running make setup..."
|
|
26
|
+
cd "$TARGET_DIR"
|
|
27
|
+
|
|
28
|
+
if [ -f Makefile ]; then
|
|
29
|
+
make setup
|
|
30
|
+
else
|
|
31
|
+
echo "[fallback] No Makefile found. Running manual setup..."
|
|
32
|
+
pip install -r requirements.txt
|
|
33
|
+
cd remotion-composer && npm install && cd ..
|
|
34
|
+
pip install piper-tts
|
|
35
|
+
cp -n .env.example .env 2>/dev/null || true
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# ── Step 3: Verify ──
|
|
39
|
+
echo ""
|
|
40
|
+
echo "[verify] Checking tool registry..."
|
|
41
|
+
python3 -c "from tools.tool_registry import registry; registry.discover(); print('Tool registry: OK')" 2>/dev/null || {
|
|
42
|
+
echo "[warn] Tool registry check failed. This may be normal on first setup."
|
|
43
|
+
echo " Try: cd $TARGET_DIR && python3 -c \"from tools.tool_registry import registry; registry.discover()\""
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
echo ""
|
|
47
|
+
echo "=== Setup Complete ==="
|
|
48
|
+
echo "OpenMontage is ready at: $TARGET_DIR"
|
|
49
|
+
echo ""
|
|
50
|
+
echo "Next steps:"
|
|
51
|
+
echo " 1. Add API keys to $TARGET_DIR/.env (optional — more keys = more tools)"
|
|
52
|
+
echo " 2. Point your agent Working Directory at this kit folder"
|
|
53
|
+
echo " 3. Start a session — the operator will detect the local fork automatically"
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Verify environment configuration for Open Montage Studio.
|
|
5
|
+
* Checks which providers are configured and validates key formats.
|
|
6
|
+
* Exit 0: at least one provider configured or zero-key mode acknowledged.
|
|
7
|
+
* Exit 1: configuration issue found.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { readFileSync, existsSync } from "fs";
|
|
11
|
+
import { resolve, dirname } from "path";
|
|
12
|
+
import { fileURLToPath } from "url";
|
|
13
|
+
|
|
14
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
const kitRoot = resolve(__dirname, "..");
|
|
16
|
+
const envPath = resolve(kitRoot, ".env");
|
|
17
|
+
|
|
18
|
+
// ── Parse .env ──
|
|
19
|
+
|
|
20
|
+
function parseEnv(filePath) {
|
|
21
|
+
if (!existsSync(filePath)) return {};
|
|
22
|
+
const lines = readFileSync(filePath, "utf-8").split("\n");
|
|
23
|
+
const env = {};
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
const trimmed = line.trim();
|
|
26
|
+
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
27
|
+
const eqIndex = trimmed.indexOf("=");
|
|
28
|
+
if (eqIndex === -1) continue;
|
|
29
|
+
const key = trimmed.slice(0, eqIndex).trim();
|
|
30
|
+
const value = trimmed.slice(eqIndex + 1).trim();
|
|
31
|
+
env[key] = value;
|
|
32
|
+
}
|
|
33
|
+
return env;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// ── Provider definitions ──
|
|
37
|
+
|
|
38
|
+
const PROVIDERS = [
|
|
39
|
+
{ key: "FAL_KEY", name: "fal.ai", capabilities: "FLUX images, Kling/Veo/MiniMax video, Recraft", placeholder: "your_fal_key_here" },
|
|
40
|
+
{ key: "PEXELS_API_KEY", name: "Pexels", capabilities: "Free stock photos + videos", placeholder: "your_pexels_key_here" },
|
|
41
|
+
{ key: "PIXABAY_API_KEY", name: "Pixabay", capabilities: "Free stock photos + videos", placeholder: "your_pixabay_key_here" },
|
|
42
|
+
{ key: "UNSPLASH_ACCESS_KEY", name: "Unsplash", capabilities: "Free stock images", placeholder: "your_unsplash_key_here" },
|
|
43
|
+
{ key: "OPENAI_API_KEY", name: "OpenAI", capabilities: "DALL-E 3 images, OpenAI TTS", placeholder: "your_openai_key_here" },
|
|
44
|
+
{ key: "GOOGLE_API_KEY", name: "Google", capabilities: "Google TTS (700+ voices), Imagen images", placeholder: "your_google_key_here" },
|
|
45
|
+
{ key: "ELEVENLABS_API_KEY", name: "ElevenLabs", capabilities: "Premium TTS, music, SFX", placeholder: "your_elevenlabs_key_here" },
|
|
46
|
+
{ key: "SUNO_API_KEY", name: "Suno", capabilities: "AI music generation", placeholder: "your_suno_key_here" },
|
|
47
|
+
{ key: "RUNWAY_API_KEY", name: "Runway", capabilities: "Gen-4 video", placeholder: "your_runway_key_here" },
|
|
48
|
+
{ key: "HEYGEN_API_KEY", name: "HeyGen", capabilities: "Avatar videos", placeholder: "your_heygen_key_here" },
|
|
49
|
+
{ key: "HIGGSFIELD_API_KEY", name: "Higgsfield", capabilities: "Multi-model video orchestrator", placeholder: "your_higgsfield_key_here" },
|
|
50
|
+
{ key: "XAI_API_KEY", name: "xAI Grok", capabilities: "Image + video generation", placeholder: "your_xai_key_here" },
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
// ── Check ──
|
|
54
|
+
|
|
55
|
+
console.log("=== Open Montage Studio — Environment Check ===\n");
|
|
56
|
+
|
|
57
|
+
if (!existsSync(envPath)) {
|
|
58
|
+
console.log("[error] .env file not found at:", envPath);
|
|
59
|
+
console.log(" Run: cp .env.example .env");
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const env = parseEnv(envPath);
|
|
64
|
+
const configured = [];
|
|
65
|
+
const missing = [];
|
|
66
|
+
|
|
67
|
+
for (const provider of PROVIDERS) {
|
|
68
|
+
const value = env[provider.key];
|
|
69
|
+
if (value && value !== provider.placeholder && value.length > 5) {
|
|
70
|
+
configured.push(provider);
|
|
71
|
+
console.log(` [ok] ${provider.name} — ${provider.capabilities}`);
|
|
72
|
+
} else {
|
|
73
|
+
missing.push(provider);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
console.log("");
|
|
78
|
+
|
|
79
|
+
if (configured.length === 0) {
|
|
80
|
+
console.log("[info] No provider keys configured.");
|
|
81
|
+
console.log(" You can still use:");
|
|
82
|
+
console.log(" - GrowthHub CMS nodes (requires growthub auth:login)");
|
|
83
|
+
console.log(" - Zero-key mode: Piper TTS + free archives + Remotion");
|
|
84
|
+
console.log("");
|
|
85
|
+
console.log(" To add providers, edit .env and rerun this script.");
|
|
86
|
+
// Exit 0 — zero-key mode is valid
|
|
87
|
+
process.exit(0);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
console.log(`[summary] ${configured.length} provider(s) configured, ${missing.length} not set.`);
|
|
91
|
+
|
|
92
|
+
// Check OpenMontage path
|
|
93
|
+
const omPath = env.OPENMONTAGE_PATH || resolve(process.env.HOME || "~", "OpenMontage");
|
|
94
|
+
if (existsSync(omPath)) {
|
|
95
|
+
console.log(`[ok] OpenMontage clone found at: ${omPath}`);
|
|
96
|
+
} else {
|
|
97
|
+
console.log(`[info] OpenMontage not found at: ${omPath}`);
|
|
98
|
+
console.log(" Run: bash setup/clone-fork.sh (optional — needed for local-fork mode only)");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
console.log("\n=== Check Complete ===");
|
|
102
|
+
process.exit(0);
|