feedeas 0.1.0-alpha.1 → 0.1.0-alpha.3
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/.env.example +15 -0
- package/README.md +131 -5
- package/bun.lock +38 -1
- package/dist/cli/index.js +901 -36
- package/dist/ui/index.html +2 -2
- package/docs/IMAGINE_COMMAND.md +470 -0
- package/docs/IMAGINE_QUICK_REF.md +136 -0
- package/docs/IMPLEMENTATION_SUMMARY.md +152 -0
- package/example-workflow.sh +82 -0
- package/package.json +5 -3
- package/src/cli/commands/example.ts +122 -0
- package/src/cli/commands/imagine.ts +209 -0
- package/src/cli/commands/inspect.ts +41 -0
- package/src/cli/commands/record.ts +267 -0
- package/src/cli/commands/schema.ts +143 -0
- package/src/cli/commands/set-scene.ts +51 -0
- package/src/cli/commands/validate.ts +86 -0
- package/src/cli/index.ts +194 -46
- package/src/cli/server/api.ts +84 -4
- package/src/ui/App.tsx +38 -534
- package/src/ui/components/CanvasPreview.tsx +414 -0
- package/src/ui/components/EntityList.tsx +139 -0
- package/src/ui/components/Header.tsx +61 -0
- package/src/ui/components/PropertyPanel.tsx +313 -0
- package/src/ui/components/Timeline.tsx +304 -0
- package/src/ui/context/ProjectContext.tsx +127 -0
- package/src/ui/store/reducer.ts +119 -0
- package/src/ui/types.ts +85 -0
- package/vite.config.ts +8 -0
- package/dist/ui/assets/index-CVEIKd3u.js +0 -14
- package/dist/ui/assets/index-cRTfA0UF.css +0 -1
- package/reference_app_ignore_this.tsx +0 -544
package/.env.example
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Feedeas Environment Variables
|
|
2
|
+
|
|
3
|
+
# Gemini API Key (for 'imagine' command)
|
|
4
|
+
# Get your API key at: https://aistudio.google.com/app/apikey
|
|
5
|
+
GEMINI_API_KEY=your-gemini-api-key-here
|
|
6
|
+
|
|
7
|
+
# Setup Instructions:
|
|
8
|
+
# 1. Copy this file to .env
|
|
9
|
+
# 2. Replace the placeholder value with your actual Gemini API key
|
|
10
|
+
# 3. The CLI will automatically load this value
|
|
11
|
+
#
|
|
12
|
+
# Example:
|
|
13
|
+
# cp .env.example .env
|
|
14
|
+
# # Edit .env with your API key
|
|
15
|
+
# feedeas imagine "a beautiful sunset"
|
package/README.md
CHANGED
|
@@ -1,15 +1,141 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Feedeas
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Feedeas** is an agentic video creation tool that allows you to programmatically create videos using JSON scene definitions. Perfect for automated content generation, social media posts, and AI-driven video workflows.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎬 **Programmatic Video Creation** - Define scenes using simple JSON
|
|
8
|
+
- 🎨 **AI Image Generation** - Built-in support for Google Imagen AI
|
|
9
|
+
- 🖼️ **Rich Media Support** - Text, images, and audio with transitions
|
|
10
|
+
- 🤖 **Agent-Friendly** - Designed for AI agents and automation
|
|
11
|
+
- 🎯 **Interactive Editor** - Web-based UI for visual editing
|
|
12
|
+
- ⚡ **Fast Rendering** - Powered by Playwright and FFmpeg
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
### Installation
|
|
4
17
|
|
|
5
18
|
```bash
|
|
6
19
|
bun install
|
|
20
|
+
bun run build
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Basic Usage
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Create a scene template
|
|
27
|
+
feedeas example basic > scene.json
|
|
28
|
+
|
|
29
|
+
# Validate the scene
|
|
30
|
+
feedeas validate scene.json
|
|
31
|
+
|
|
32
|
+
# Open interactive editor
|
|
33
|
+
feedeas edit
|
|
34
|
+
|
|
35
|
+
# Render to video
|
|
36
|
+
feedeas record --project scene.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Commands
|
|
40
|
+
|
|
41
|
+
### Video Creation
|
|
42
|
+
|
|
43
|
+
- `feedeas edit [dir]` - Start the interactive editor
|
|
44
|
+
- `feedeas record` - Render scene to video
|
|
45
|
+
- `feedeas snap <time>` - Take a snapshot at specific time
|
|
46
|
+
- `feedeas validate <file>` - Validate scene JSON
|
|
47
|
+
|
|
48
|
+
### AI Image Generation
|
|
49
|
+
|
|
50
|
+
Generate images using Google's Imagen AI (via Gemini API):
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Setup (one-time): Get API key from https://aistudio.google.com/app/apikey
|
|
54
|
+
export GEMINI_API_KEY="your-api-key"
|
|
55
|
+
|
|
56
|
+
# Basic usage - saves to assets/mountain.png
|
|
57
|
+
feedeas imagine "A serene mountain landscape"
|
|
58
|
+
|
|
59
|
+
# Multiple images - saves to assets/pattern_1.png, pattern_2.png, etc.
|
|
60
|
+
feedeas imagine "Abstract art" -n 4 -o pattern.png
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Images save to `./assets/` by default** - perfect for video workflows!
|
|
64
|
+
|
|
65
|
+
**[📖 Full Imagine Command Documentation](./docs/IMAGINE_COMMAND.md)**
|
|
66
|
+
|
|
67
|
+
### Scene Management
|
|
68
|
+
|
|
69
|
+
- `feedeas example [type]` - Generate example scenes
|
|
70
|
+
- `feedeas set-scene <file>` - Create/update scene programmatically
|
|
71
|
+
- `feedeas inspect` - Inspect project assets
|
|
72
|
+
- `feedeas schema` - Show entity schema information
|
|
73
|
+
|
|
74
|
+
## Project Structure
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
your-project/
|
|
78
|
+
├── scene_1.json # Scene definition
|
|
79
|
+
├── assets/ # Images, audio files
|
|
80
|
+
│ ├── background.png
|
|
81
|
+
│ ├── music.mp3
|
|
82
|
+
│ └── ...
|
|
83
|
+
└── output.mp4 # Generated video
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Scene File Format
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"meta": {
|
|
91
|
+
"width": 1080,
|
|
92
|
+
"height": 1350,
|
|
93
|
+
"duration": 5
|
|
94
|
+
},
|
|
95
|
+
"entities": [
|
|
96
|
+
{
|
|
97
|
+
"id": "text-1",
|
|
98
|
+
"type": "text",
|
|
99
|
+
"text": "Hello, World!",
|
|
100
|
+
"startTime": 0,
|
|
101
|
+
"duration": 5,
|
|
102
|
+
"x": 100,
|
|
103
|
+
"y": 500,
|
|
104
|
+
"fontSize": 80,
|
|
105
|
+
"color": "#ffffff",
|
|
106
|
+
"enter": { "type": "fade", "duration": 0.5 }
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
7
110
|
```
|
|
8
111
|
|
|
9
|
-
|
|
112
|
+
## Documentation
|
|
113
|
+
|
|
114
|
+
- [Imagine Command Guide](./docs/IMAGINE_COMMAND.md) - AI image generation
|
|
115
|
+
- Run `feedeas --help` for full CLI documentation
|
|
116
|
+
- Run `feedeas <command> --help` for command-specific help
|
|
117
|
+
|
|
118
|
+
## Development
|
|
10
119
|
|
|
11
120
|
```bash
|
|
12
|
-
|
|
121
|
+
# Run in development mode
|
|
122
|
+
bun run dev
|
|
123
|
+
|
|
124
|
+
# Build CLI and UI
|
|
125
|
+
bun run build
|
|
126
|
+
|
|
127
|
+
# Run CLI directly
|
|
128
|
+
bun run feedeas
|
|
13
129
|
```
|
|
14
130
|
|
|
15
|
-
|
|
131
|
+
## Requirements
|
|
132
|
+
|
|
133
|
+
- [Bun](https://bun.sh) v1.2.2 or later
|
|
134
|
+
- Node.js 20.19+ or 22.12+ (for Vite)
|
|
135
|
+
- FFmpeg (for video rendering)
|
|
136
|
+
- Gemini API key (for AI image generation) - Get free at https://aistudio.google.com/app/apikey
|
|
137
|
+
|
|
138
|
+
## License
|
|
139
|
+
|
|
140
|
+
This project was created using `bun init` in bun v1.2.2.
|
|
141
|
+
|
package/bun.lock
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"@vitejs/plugin-react": "^5.1.2",
|
|
20
20
|
"autoprefixer": "^10.4.23",
|
|
21
21
|
"bun-types": "^1.3.6",
|
|
22
|
+
"playwright": "^1.57.0",
|
|
22
23
|
"postcss": "^8.5.6",
|
|
23
24
|
"tailwindcss": "^4.1.18",
|
|
24
25
|
"vite": "^7.3.1",
|
|
@@ -271,7 +272,7 @@
|
|
|
271
272
|
|
|
272
273
|
"fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="],
|
|
273
274
|
|
|
274
|
-
"fsevents": ["fsevents@2.3.
|
|
275
|
+
"fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="],
|
|
275
276
|
|
|
276
277
|
"gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="],
|
|
277
278
|
|
|
@@ -337,6 +338,10 @@
|
|
|
337
338
|
|
|
338
339
|
"picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
|
|
339
340
|
|
|
341
|
+
"playwright": ["playwright@1.57.0", "", { "dependencies": { "playwright-core": "1.57.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw=="],
|
|
342
|
+
|
|
343
|
+
"playwright-core": ["playwright-core@1.57.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ=="],
|
|
344
|
+
|
|
340
345
|
"postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
|
|
341
346
|
|
|
342
347
|
"postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="],
|
|
@@ -388,5 +393,37 @@
|
|
|
388
393
|
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
|
|
389
394
|
|
|
390
395
|
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
396
|
+
|
|
397
|
+
"rollup/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
|
398
|
+
|
|
399
|
+
"vite/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
|
400
|
+
|
|
401
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="],
|
|
402
|
+
|
|
403
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
404
|
+
|
|
405
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
406
|
+
|
|
407
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
408
|
+
|
|
409
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="],
|
|
410
|
+
|
|
411
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="],
|
|
412
|
+
|
|
413
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
|
|
414
|
+
|
|
415
|
+
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
416
|
+
|
|
417
|
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
418
|
+
|
|
419
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="],
|
|
420
|
+
|
|
421
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
422
|
+
|
|
423
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
424
|
+
|
|
425
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
426
|
+
|
|
427
|
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/core/@emnapi/wasi-threads/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
391
428
|
}
|
|
392
429
|
}
|