agent-recipes 0.0.5__py3-none-any.whl
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.
- agent_recipes/__init__.py +27 -0
- agent_recipes/recipe_runtime/__init__.py +28 -0
- agent_recipes/recipe_runtime/core.py +385 -0
- agent_recipes/templates/ai-ab-hook-tester/recipe.yaml +45 -0
- agent_recipes/templates/ai-ab-hook-tester/tools.py +169 -0
- agent_recipes/templates/ai-angle-generator/recipe.yaml +49 -0
- agent_recipes/templates/ai-angle-generator/tools.py +182 -0
- agent_recipes/templates/ai-api-doc-generator/README.md +59 -0
- agent_recipes/templates/ai-api-doc-generator/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-api-tester/README.md +60 -0
- agent_recipes/templates/ai-api-tester/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-audio-enhancer/README.md +59 -0
- agent_recipes/templates/ai-audio-enhancer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-audio-normalizer/README.md +13 -0
- agent_recipes/templates/ai-audio-normalizer/TEMPLATE.yaml +44 -0
- agent_recipes/templates/ai-audio-splitter/README.md +14 -0
- agent_recipes/templates/ai-audio-splitter/TEMPLATE.yaml +47 -0
- agent_recipes/templates/ai-background-music-generator/README.md +59 -0
- agent_recipes/templates/ai-background-music-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-background-remover/README.md +60 -0
- agent_recipes/templates/ai-background-remover/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-barcode-scanner/README.md +60 -0
- agent_recipes/templates/ai-barcode-scanner/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-blog-generator/README.md +59 -0
- agent_recipes/templates/ai-blog-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-brief-generator/recipe.yaml +52 -0
- agent_recipes/templates/ai-brief-generator/tools.py +231 -0
- agent_recipes/templates/ai-broll-builder/recipe.yaml +47 -0
- agent_recipes/templates/ai-broll-builder/tools.py +204 -0
- agent_recipes/templates/ai-calendar-scheduler/README.md +60 -0
- agent_recipes/templates/ai-calendar-scheduler/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-changelog-generator/README.md +14 -0
- agent_recipes/templates/ai-changelog-generator/TEMPLATE.yaml +46 -0
- agent_recipes/templates/ai-chart-generator/README.md +61 -0
- agent_recipes/templates/ai-chart-generator/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-code-documenter/README.md +12 -0
- agent_recipes/templates/ai-code-documenter/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-code-refactorer/README.md +59 -0
- agent_recipes/templates/ai-code-refactorer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-code-reviewer/README.md +59 -0
- agent_recipes/templates/ai-code-reviewer/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-color-palette-extractor/README.md +60 -0
- agent_recipes/templates/ai-color-palette-extractor/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-comment-miner/recipe.yaml +40 -0
- agent_recipes/templates/ai-comment-miner/tools.py +141 -0
- agent_recipes/templates/ai-commit-message-generator/README.md +59 -0
- agent_recipes/templates/ai-commit-message-generator/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-content-calendar/recipe.yaml +43 -0
- agent_recipes/templates/ai-content-calendar/tools.py +170 -0
- agent_recipes/templates/ai-context-enricher/recipe.yaml +48 -0
- agent_recipes/templates/ai-context-enricher/tools.py +258 -0
- agent_recipes/templates/ai-contract-analyzer/README.md +60 -0
- agent_recipes/templates/ai-contract-analyzer/TEMPLATE.yaml +34 -0
- agent_recipes/templates/ai-csv-cleaner/README.md +13 -0
- agent_recipes/templates/ai-csv-cleaner/TEMPLATE.yaml +45 -0
- agent_recipes/templates/ai-cta-generator/recipe.yaml +54 -0
- agent_recipes/templates/ai-cta-generator/tools.py +174 -0
- agent_recipes/templates/ai-daily-news-show/recipe.yaml +103 -0
- agent_recipes/templates/ai-daily-news-show/tools.py +308 -0
- agent_recipes/templates/ai-data-anonymizer/README.md +60 -0
- agent_recipes/templates/ai-data-anonymizer/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-data-profiler/README.md +14 -0
- agent_recipes/templates/ai-data-profiler/TEMPLATE.yaml +42 -0
- agent_recipes/templates/ai-dependency-auditor/README.md +12 -0
- agent_recipes/templates/ai-dependency-auditor/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-doc-translator/README.md +12 -0
- agent_recipes/templates/ai-doc-translator/TEMPLATE.yaml +41 -0
- agent_recipes/templates/ai-duplicate-finder/README.md +59 -0
- agent_recipes/templates/ai-duplicate-finder/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-ebook-converter/README.md +60 -0
- agent_recipes/templates/ai-ebook-converter/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-email-parser/README.md +59 -0
- agent_recipes/templates/ai-email-parser/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-etl-pipeline/README.md +60 -0
- agent_recipes/templates/ai-etl-pipeline/TEMPLATE.yaml +30 -0
- agent_recipes/templates/ai-excel-formula-generator/README.md +59 -0
- agent_recipes/templates/ai-excel-formula-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-face-blur/README.md +60 -0
- agent_recipes/templates/ai-face-blur/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-fact-checker/recipe.yaml +52 -0
- agent_recipes/templates/ai-fact-checker/tools.py +279 -0
- agent_recipes/templates/ai-faq-generator/README.md +59 -0
- agent_recipes/templates/ai-faq-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-file-organizer/README.md +59 -0
- agent_recipes/templates/ai-file-organizer/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-folder-packager/README.md +15 -0
- agent_recipes/templates/ai-folder-packager/TEMPLATE.yaml +48 -0
- agent_recipes/templates/ai-form-filler/README.md +60 -0
- agent_recipes/templates/ai-form-filler/TEMPLATE.yaml +30 -0
- agent_recipes/templates/ai-hashtag-optimizer/recipe.yaml +45 -0
- agent_recipes/templates/ai-hashtag-optimizer/tools.py +134 -0
- agent_recipes/templates/ai-hook-generator/recipe.yaml +50 -0
- agent_recipes/templates/ai-hook-generator/tools.py +177 -0
- agent_recipes/templates/ai-image-captioner/README.md +59 -0
- agent_recipes/templates/ai-image-captioner/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-image-cataloger/README.md +13 -0
- agent_recipes/templates/ai-image-cataloger/TEMPLATE.yaml +39 -0
- agent_recipes/templates/ai-image-optimizer/README.md +13 -0
- agent_recipes/templates/ai-image-optimizer/TEMPLATE.yaml +43 -0
- agent_recipes/templates/ai-image-resizer/README.md +12 -0
- agent_recipes/templates/ai-image-resizer/TEMPLATE.yaml +39 -0
- agent_recipes/templates/ai-image-tagger/README.md +59 -0
- agent_recipes/templates/ai-image-tagger/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-image-upscaler/README.md +60 -0
- agent_recipes/templates/ai-image-upscaler/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-invoice-processor/README.md +60 -0
- agent_recipes/templates/ai-invoice-processor/TEMPLATE.yaml +34 -0
- agent_recipes/templates/ai-json-to-csv/README.md +12 -0
- agent_recipes/templates/ai-json-to-csv/TEMPLATE.yaml +36 -0
- agent_recipes/templates/ai-log-analyzer/README.md +59 -0
- agent_recipes/templates/ai-log-analyzer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-markdown-to-pdf/README.md +12 -0
- agent_recipes/templates/ai-markdown-to-pdf/TEMPLATE.yaml +40 -0
- agent_recipes/templates/ai-meeting-summarizer/README.md +59 -0
- agent_recipes/templates/ai-meeting-summarizer/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-meta-tag-generator/README.md +59 -0
- agent_recipes/templates/ai-meta-tag-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-news-capture-pack/recipe.yaml +42 -0
- agent_recipes/templates/ai-news-capture-pack/tools.py +150 -0
- agent_recipes/templates/ai-news-crawler/recipe.yaml +99 -0
- agent_recipes/templates/ai-news-crawler/tools.py +417 -0
- agent_recipes/templates/ai-news-deduper/recipe.yaml +47 -0
- agent_recipes/templates/ai-news-deduper/tools.py +235 -0
- agent_recipes/templates/ai-newsletter-generator/README.md +59 -0
- agent_recipes/templates/ai-newsletter-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-note-summarizer/README.md +59 -0
- agent_recipes/templates/ai-note-summarizer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-pdf-summarizer/README.md +12 -0
- agent_recipes/templates/ai-pdf-summarizer/TEMPLATE.yaml +40 -0
- agent_recipes/templates/ai-pdf-to-markdown/README.md +19 -0
- agent_recipes/templates/ai-pdf-to-markdown/TEMPLATE.yaml +63 -0
- agent_recipes/templates/ai-performance-analyzer/recipe.yaml +45 -0
- agent_recipes/templates/ai-performance-analyzer/tools.py +159 -0
- agent_recipes/templates/ai-podcast-cleaner/README.md +117 -0
- agent_recipes/templates/ai-podcast-cleaner/TEMPLATE.yaml +117 -0
- agent_recipes/templates/ai-podcast-cleaner/agents.yaml +59 -0
- agent_recipes/templates/ai-podcast-cleaner/workflow.yaml +77 -0
- agent_recipes/templates/ai-podcast-transcriber/README.md +59 -0
- agent_recipes/templates/ai-podcast-transcriber/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-post-copy-generator/recipe.yaml +41 -0
- agent_recipes/templates/ai-post-copy-generator/tools.py +105 -0
- agent_recipes/templates/ai-product-description-generator/README.md +59 -0
- agent_recipes/templates/ai-product-description-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-publisher-pack/recipe.yaml +44 -0
- agent_recipes/templates/ai-publisher-pack/tools.py +252 -0
- agent_recipes/templates/ai-qr-code-generator/README.md +60 -0
- agent_recipes/templates/ai-qr-code-generator/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-regex-generator/README.md +59 -0
- agent_recipes/templates/ai-regex-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-repo-readme/README.md +13 -0
- agent_recipes/templates/ai-repo-readme/TEMPLATE.yaml +42 -0
- agent_recipes/templates/ai-report-generator/README.md +61 -0
- agent_recipes/templates/ai-report-generator/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-resume-parser/README.md +60 -0
- agent_recipes/templates/ai-resume-parser/TEMPLATE.yaml +33 -0
- agent_recipes/templates/ai-rss-aggregator/README.md +60 -0
- agent_recipes/templates/ai-rss-aggregator/TEMPLATE.yaml +30 -0
- agent_recipes/templates/ai-schema-generator/README.md +12 -0
- agent_recipes/templates/ai-schema-generator/TEMPLATE.yaml +34 -0
- agent_recipes/templates/ai-screen-recorder/recipe.yaml +43 -0
- agent_recipes/templates/ai-screen-recorder/tools.py +184 -0
- agent_recipes/templates/ai-screenshot-capture/recipe.yaml +45 -0
- agent_recipes/templates/ai-screenshot-capture/tools.py +231 -0
- agent_recipes/templates/ai-screenshot-ocr/README.md +12 -0
- agent_recipes/templates/ai-screenshot-ocr/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-script-writer/recipe.yaml +58 -0
- agent_recipes/templates/ai-script-writer/tools.py +297 -0
- agent_recipes/templates/ai-sentiment-analyzer/README.md +59 -0
- agent_recipes/templates/ai-sentiment-analyzer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-seo-optimizer/README.md +59 -0
- agent_recipes/templates/ai-seo-optimizer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-signal-ranker/recipe.yaml +54 -0
- agent_recipes/templates/ai-signal-ranker/tools.py +256 -0
- agent_recipes/templates/ai-sitemap-generator/README.md +59 -0
- agent_recipes/templates/ai-sitemap-generator/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-sitemap-scraper/README.md +13 -0
- agent_recipes/templates/ai-sitemap-scraper/TEMPLATE.yaml +41 -0
- agent_recipes/templates/ai-slide-generator/README.md +60 -0
- agent_recipes/templates/ai-slide-generator/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-slide-to-notes/README.md +12 -0
- agent_recipes/templates/ai-slide-to-notes/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-social-media-generator/README.md +59 -0
- agent_recipes/templates/ai-social-media-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-sql-generator/README.md +59 -0
- agent_recipes/templates/ai-sql-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-subtitle-generator/README.md +59 -0
- agent_recipes/templates/ai-subtitle-generator/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-test-generator/README.md +59 -0
- agent_recipes/templates/ai-test-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-translation-batch/README.md +59 -0
- agent_recipes/templates/ai-translation-batch/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-url-to-markdown/README.md +14 -0
- agent_recipes/templates/ai-url-to-markdown/TEMPLATE.yaml +44 -0
- agent_recipes/templates/ai-video-chapter-generator/README.md +59 -0
- agent_recipes/templates/ai-video-chapter-generator/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-video-compressor/README.md +59 -0
- agent_recipes/templates/ai-video-compressor/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-video-editor/README.md +254 -0
- agent_recipes/templates/ai-video-editor/TEMPLATE.yaml +139 -0
- agent_recipes/templates/ai-video-editor/agents.yaml +36 -0
- agent_recipes/templates/ai-video-editor/requirements.txt +8 -0
- agent_recipes/templates/ai-video-editor/scripts/run.sh +10 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__init__.py +45 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__main__.py +8 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/__init__.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/cli.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/config.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/ffmpeg_probe.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/heuristics.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/llm_plan.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/models.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/pipeline.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/render.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/timeline.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/transcribe.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/utils.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/cli.py +343 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/config.py +102 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/ffmpeg_probe.py +92 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/heuristics.py +119 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/llm_plan.py +277 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/models.py +343 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/pipeline.py +287 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/render.py +274 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/timeline.py +278 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/transcribe.py +233 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/utils.py +222 -0
- agent_recipes/templates/ai-video-editor/src/input.mov +0 -0
- agent_recipes/templates/ai-video-editor/src/out.mp4 +0 -0
- agent_recipes/templates/ai-video-editor/tests/test_heuristics.py +130 -0
- agent_recipes/templates/ai-video-editor/tests/test_models.py +152 -0
- agent_recipes/templates/ai-video-editor/tests/test_timeline.py +105 -0
- agent_recipes/templates/ai-video-editor/workflow.yaml +51 -0
- agent_recipes/templates/ai-video-highlight-extractor/README.md +60 -0
- agent_recipes/templates/ai-video-highlight-extractor/TEMPLATE.yaml +33 -0
- agent_recipes/templates/ai-video-merger/recipe.yaml +40 -0
- agent_recipes/templates/ai-video-merger/tools.py +172 -0
- agent_recipes/templates/ai-video-thumbnails/README.md +16 -0
- agent_recipes/templates/ai-video-thumbnails/TEMPLATE.yaml +53 -0
- agent_recipes/templates/ai-video-to-gif/README.md +14 -0
- agent_recipes/templates/ai-video-to-gif/TEMPLATE.yaml +64 -0
- agent_recipes/templates/ai-voice-cloner/README.md +59 -0
- agent_recipes/templates/ai-voice-cloner/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-voiceover-generator/recipe.yaml +41 -0
- agent_recipes/templates/ai-voiceover-generator/tools.py +194 -0
- agent_recipes/templates/ai-watermark-adder/README.md +59 -0
- agent_recipes/templates/ai-watermark-adder/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-watermark-remover/README.md +60 -0
- agent_recipes/templates/ai-watermark-remover/TEMPLATE.yaml +32 -0
- agent_recipes/templates/data-transformer/README.md +75 -0
- agent_recipes/templates/data-transformer/TEMPLATE.yaml +63 -0
- agent_recipes/templates/data-transformer/agents.yaml +70 -0
- agent_recipes/templates/data-transformer/workflow.yaml +92 -0
- agent_recipes/templates/shorts-generator/README.md +61 -0
- agent_recipes/templates/shorts-generator/TEMPLATE.yaml +65 -0
- agent_recipes/templates/shorts-generator/agents.yaml +66 -0
- agent_recipes/templates/shorts-generator/workflow.yaml +86 -0
- agent_recipes/templates/transcript-generator/README.md +103 -0
- agent_recipes/templates/transcript-generator/TEMPLATE.yaml +57 -0
- agent_recipes/templates/transcript-generator/agents.yaml +62 -0
- agent_recipes/templates/transcript-generator/workflow.yaml +82 -0
- agent_recipes/templates/video-editor/README.md +70 -0
- agent_recipes/templates/video-editor/TEMPLATE.yaml +55 -0
- agent_recipes/templates/video-editor/agents.yaml +68 -0
- agent_recipes/templates/video-editor/workflow.yaml +92 -0
- agent_recipes-0.0.5.dist-info/METADATA +145 -0
- agent_recipes-0.0.5.dist-info/RECORD +269 -0
- agent_recipes-0.0.5.dist-info/WHEEL +5 -0
- agent_recipes-0.0.5.dist-info/top_level.txt +1 -0
- /236/326/177nE/243/231/214/232/265/322m/201/253/353/022C/372/321/266/b/225^=/272/017t/262/3337/310@/315wb/341pB/277z/216/330/314/004/265B/213/375/236/203/026/373/307/354z41/347#/374q/262/22589/032/276 /277/244Vh/322/017/004/224/215/004/367/377/375/335/n +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Shorts Generator
|
|
2
|
+
|
|
3
|
+
Generate short-form video clips from long videos for social media platforms.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Multi-platform support**: TikTok, YouTube Shorts, Instagram Reels
|
|
8
|
+
- **AI content analysis**: Identifies viral-worthy moments
|
|
9
|
+
- **Auto-captioning**: Platform-optimized captions
|
|
10
|
+
- **Multiple aspect ratios**: 9:16, 1:1, 16:9
|
|
11
|
+
|
|
12
|
+
## Requirements
|
|
13
|
+
|
|
14
|
+
- `OPENAI_API_KEY` environment variable
|
|
15
|
+
- Optional: `moviepy`, `pillow` for video processing
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
### CLI
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Basic usage
|
|
23
|
+
praisonai run shorts-generator ./video.mp4
|
|
24
|
+
|
|
25
|
+
# Custom settings
|
|
26
|
+
praisonai run shorts-generator ./video.mp4 --duration 30 --clips 5
|
|
27
|
+
|
|
28
|
+
# Different aspect ratio
|
|
29
|
+
praisonai run shorts-generator ./video.mp4 --aspect 1:1
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Python API
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
from praisonaiagents import Workflow
|
|
36
|
+
|
|
37
|
+
workflow = Workflow.from_template(
|
|
38
|
+
"shorts-generator",
|
|
39
|
+
config={
|
|
40
|
+
"input": "./video.mp4",
|
|
41
|
+
"duration": 45,
|
|
42
|
+
"num_clips": 5,
|
|
43
|
+
"caption_style": "bold"
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
result = workflow.run()
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Configuration
|
|
50
|
+
|
|
51
|
+
| Parameter | Type | Default | Description |
|
|
52
|
+
|-----------|------|---------|-------------|
|
|
53
|
+
| `input` | string | required | Video file path or YouTube URL |
|
|
54
|
+
| `duration` | integer | 60 | Target clip duration (15-90 seconds) |
|
|
55
|
+
| `aspect_ratio` | string | "9:16" | Aspect ratio: 9:16, 1:1, 16:9 |
|
|
56
|
+
| `caption_style` | string | "modern" | Caption style: modern, classic, minimal, bold |
|
|
57
|
+
| `num_clips` | integer | 3 | Number of clips to generate |
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
Apache-2.0
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: shorts-generator
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Generate short-form video clips from long videos for social media
|
|
4
|
+
author: praisonai
|
|
5
|
+
license: Apache-2.0
|
|
6
|
+
tags: [video, shorts, clips, social-media, tiktok, youtube-shorts, reels]
|
|
7
|
+
|
|
8
|
+
requires:
|
|
9
|
+
tools: [youtube_tool]
|
|
10
|
+
packages: [moviepy, pillow]
|
|
11
|
+
env: [OPENAI_API_KEY]
|
|
12
|
+
|
|
13
|
+
workflow: workflow.yaml
|
|
14
|
+
agents: agents.yaml
|
|
15
|
+
|
|
16
|
+
config:
|
|
17
|
+
input:
|
|
18
|
+
type: string
|
|
19
|
+
required: true
|
|
20
|
+
description: Video file path or YouTube URL
|
|
21
|
+
duration:
|
|
22
|
+
type: integer
|
|
23
|
+
default: 60
|
|
24
|
+
description: Target clip duration in seconds (15-90)
|
|
25
|
+
aspect_ratio:
|
|
26
|
+
type: string
|
|
27
|
+
default: "9:16"
|
|
28
|
+
enum: ["9:16", "1:1", "16:9"]
|
|
29
|
+
caption_style:
|
|
30
|
+
type: string
|
|
31
|
+
default: "modern"
|
|
32
|
+
enum: [modern, classic, minimal, bold]
|
|
33
|
+
num_clips:
|
|
34
|
+
type: integer
|
|
35
|
+
default: 3
|
|
36
|
+
description: Number of clips to generate
|
|
37
|
+
|
|
38
|
+
defaults:
|
|
39
|
+
duration: 60
|
|
40
|
+
aspect_ratio: "9:16"
|
|
41
|
+
caption_style: modern
|
|
42
|
+
num_clips: 3
|
|
43
|
+
|
|
44
|
+
cli:
|
|
45
|
+
command: shorts
|
|
46
|
+
args:
|
|
47
|
+
- name: input
|
|
48
|
+
positional: true
|
|
49
|
+
description: Video file path or YouTube URL
|
|
50
|
+
- name: --duration
|
|
51
|
+
default: 60
|
|
52
|
+
description: Target clip duration in seconds
|
|
53
|
+
- name: --aspect
|
|
54
|
+
default: "9:16"
|
|
55
|
+
description: Aspect ratio (9:16, 1:1, 16:9)
|
|
56
|
+
- name: --style
|
|
57
|
+
default: modern
|
|
58
|
+
description: Caption style
|
|
59
|
+
- name: --clips
|
|
60
|
+
default: 3
|
|
61
|
+
description: Number of clips to generate
|
|
62
|
+
examples:
|
|
63
|
+
- praisonai run shorts-generator ./video.mp4
|
|
64
|
+
- praisonai run shorts-generator ./video.mp4 --duration 30 --clips 5
|
|
65
|
+
- praisonai run shorts-generator "https://youtube.com/watch?v=xxx" --aspect 1:1
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
agents:
|
|
2
|
+
analyzer:
|
|
3
|
+
name: ContentAnalyzer
|
|
4
|
+
role: Video Content Analyst
|
|
5
|
+
goal: Identify engaging moments for short clips
|
|
6
|
+
backstory: |
|
|
7
|
+
I am an expert at analyzing video content for viral potential.
|
|
8
|
+
I understand what makes content engaging on social media platforms
|
|
9
|
+
and can identify the most shareable moments in any video.
|
|
10
|
+
instructions: |
|
|
11
|
+
Analyze video transcript and identify:
|
|
12
|
+
1. Hook moments (first 3 seconds grabbers)
|
|
13
|
+
2. Key insights or memorable quotes
|
|
14
|
+
3. Emotional peaks and reactions
|
|
15
|
+
4. Call-to-action opportunities
|
|
16
|
+
5. Viral-worthy segments
|
|
17
|
+
tools: [youtube_tool]
|
|
18
|
+
verbose: true
|
|
19
|
+
|
|
20
|
+
clipper:
|
|
21
|
+
name: VideoClipper
|
|
22
|
+
role: Video Editor
|
|
23
|
+
goal: Extract and format video clips
|
|
24
|
+
backstory: |
|
|
25
|
+
I am a professional video editor specializing in short-form content.
|
|
26
|
+
I know how to cut videos for maximum impact while maintaining
|
|
27
|
+
proper pacing and visual quality.
|
|
28
|
+
instructions: |
|
|
29
|
+
Extract clips from the video:
|
|
30
|
+
- Include 1-2 second buffer at start/end
|
|
31
|
+
- Ensure clean cuts at natural breaks
|
|
32
|
+
- Maintain audio sync
|
|
33
|
+
- Apply aspect ratio cropping
|
|
34
|
+
verbose: true
|
|
35
|
+
|
|
36
|
+
captioner:
|
|
37
|
+
name: Captioner
|
|
38
|
+
role: Caption Designer
|
|
39
|
+
goal: Generate engaging captions for clips
|
|
40
|
+
backstory: |
|
|
41
|
+
I specialize in creating captions that boost engagement and
|
|
42
|
+
accessibility. I understand platform-specific caption styles
|
|
43
|
+
and what makes text readable on mobile screens.
|
|
44
|
+
instructions: |
|
|
45
|
+
Create captions for each clip:
|
|
46
|
+
- Readable in 2-3 seconds per line
|
|
47
|
+
- Include relevant emoji where appropriate
|
|
48
|
+
- Hook viewers in first line
|
|
49
|
+
- End with engagement prompt
|
|
50
|
+
verbose: true
|
|
51
|
+
|
|
52
|
+
optimizer:
|
|
53
|
+
name: PlatformOptimizer
|
|
54
|
+
role: Social Media Specialist
|
|
55
|
+
goal: Optimize clips for platform requirements
|
|
56
|
+
backstory: |
|
|
57
|
+
I am a social media expert who understands the algorithms and
|
|
58
|
+
best practices for TikTok, YouTube Shorts, and Instagram Reels.
|
|
59
|
+
I know how to maximize reach and engagement.
|
|
60
|
+
instructions: |
|
|
61
|
+
Optimize each clip for social media:
|
|
62
|
+
- Add trending hashtags
|
|
63
|
+
- Suggest posting times
|
|
64
|
+
- Create thumbnail recommendations
|
|
65
|
+
- Write platform-specific descriptions
|
|
66
|
+
verbose: true
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: Shorts Generator
|
|
2
|
+
description: Generate short-form video clips from long videos
|
|
3
|
+
|
|
4
|
+
workflow:
|
|
5
|
+
verbose: true
|
|
6
|
+
stream: true
|
|
7
|
+
|
|
8
|
+
variables:
|
|
9
|
+
input: "{{input}}"
|
|
10
|
+
duration: "{{duration}}"
|
|
11
|
+
aspect_ratio: "{{aspect_ratio}}"
|
|
12
|
+
caption_style: "{{caption_style}}"
|
|
13
|
+
num_clips: "{{num_clips}}"
|
|
14
|
+
|
|
15
|
+
agents:
|
|
16
|
+
analyzer:
|
|
17
|
+
name: ContentAnalyzer
|
|
18
|
+
role: Video Content Analyst
|
|
19
|
+
goal: Identify engaging moments for short clips
|
|
20
|
+
instructions: |
|
|
21
|
+
Analyze video transcript and identify:
|
|
22
|
+
1. Hook moments (first 3 seconds grabbers)
|
|
23
|
+
2. Key insights or memorable quotes
|
|
24
|
+
3. Emotional peaks and reactions
|
|
25
|
+
4. Call-to-action opportunities
|
|
26
|
+
5. Viral-worthy segments
|
|
27
|
+
Return timestamps and descriptions for {{num_clips}} best moments.
|
|
28
|
+
tools: [youtube_tool]
|
|
29
|
+
|
|
30
|
+
clipper:
|
|
31
|
+
name: VideoClipper
|
|
32
|
+
role: Video Editor
|
|
33
|
+
goal: Extract and format video clips
|
|
34
|
+
instructions: |
|
|
35
|
+
Extract clips from the video:
|
|
36
|
+
- Target duration: {{duration}} seconds
|
|
37
|
+
- Aspect ratio: {{aspect_ratio}}
|
|
38
|
+
- Include 1-2 second buffer at start/end
|
|
39
|
+
- Ensure clean cuts at natural breaks
|
|
40
|
+
|
|
41
|
+
captioner:
|
|
42
|
+
name: Captioner
|
|
43
|
+
role: Caption Designer
|
|
44
|
+
goal: Generate engaging captions for clips
|
|
45
|
+
instructions: |
|
|
46
|
+
Create captions for each clip:
|
|
47
|
+
- Style: {{caption_style}}
|
|
48
|
+
- Readable in 2-3 seconds per line
|
|
49
|
+
- Include relevant emoji where appropriate
|
|
50
|
+
- Hook viewers in first line
|
|
51
|
+
- End with engagement prompt
|
|
52
|
+
|
|
53
|
+
optimizer:
|
|
54
|
+
name: PlatformOptimizer
|
|
55
|
+
role: Social Media Specialist
|
|
56
|
+
goal: Optimize clips for platform requirements
|
|
57
|
+
instructions: |
|
|
58
|
+
Optimize each clip for social media:
|
|
59
|
+
- Add trending hashtags
|
|
60
|
+
- Suggest posting times
|
|
61
|
+
- Create thumbnail recommendations
|
|
62
|
+
- Write platform-specific descriptions
|
|
63
|
+
|
|
64
|
+
steps:
|
|
65
|
+
- name: analyze
|
|
66
|
+
agent: analyzer
|
|
67
|
+
action: "Analyze video and identify {{num_clips}} best moments: {{input}}"
|
|
68
|
+
output_variable: moments
|
|
69
|
+
|
|
70
|
+
- name: extract
|
|
71
|
+
agent: clipper
|
|
72
|
+
action: "Extract clips at identified timestamps"
|
|
73
|
+
context_from: [analyze]
|
|
74
|
+
output_variable: clips
|
|
75
|
+
|
|
76
|
+
- name: caption
|
|
77
|
+
agent: captioner
|
|
78
|
+
action: "Generate captions for each clip"
|
|
79
|
+
context_from: [extract]
|
|
80
|
+
output_variable: captioned_clips
|
|
81
|
+
|
|
82
|
+
- name: optimize
|
|
83
|
+
agent: optimizer
|
|
84
|
+
action: "Optimize clips for social media platforms"
|
|
85
|
+
context_from: [caption]
|
|
86
|
+
output_variable: final_clips
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Transcript Generator
|
|
2
|
+
|
|
3
|
+
Generate transcripts from audio/video files using AI speech recognition.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Multi-source input**: Local files or YouTube URLs
|
|
8
|
+
- **Language detection**: Automatic or specify language
|
|
9
|
+
- **Multiple output formats**: TXT, SRT, VTT, JSON
|
|
10
|
+
- **AI cleanup**: Optional LLM-powered transcript cleanup
|
|
11
|
+
|
|
12
|
+
## Requirements
|
|
13
|
+
|
|
14
|
+
- `OPENAI_API_KEY` environment variable
|
|
15
|
+
- Optional: `youtube_tool` for YouTube URL support
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
### CLI
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Basic usage
|
|
23
|
+
praisonai run transcript-generator ./audio.mp3
|
|
24
|
+
|
|
25
|
+
# With format
|
|
26
|
+
praisonai run transcript-generator ./video.mp4 --format srt
|
|
27
|
+
|
|
28
|
+
# YouTube URL
|
|
29
|
+
praisonai run transcript-generator "https://youtube.com/watch?v=xxx" --language en
|
|
30
|
+
|
|
31
|
+
# Skip cleanup
|
|
32
|
+
praisonai run transcript-generator ./audio.mp3 --no-cleanup
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Python API
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
from praisonaiagents import Workflow
|
|
39
|
+
|
|
40
|
+
# Load and run template
|
|
41
|
+
workflow = Workflow.from_template(
|
|
42
|
+
"transcript-generator",
|
|
43
|
+
config={
|
|
44
|
+
"input": "./audio.mp3",
|
|
45
|
+
"output_format": "srt",
|
|
46
|
+
"language": "en"
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
result = workflow.run()
|
|
50
|
+
print(result["output"])
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Configuration
|
|
54
|
+
|
|
55
|
+
| Parameter | Type | Default | Description |
|
|
56
|
+
|-----------|------|---------|-------------|
|
|
57
|
+
| `input` | string | required | Audio/video file path or YouTube URL |
|
|
58
|
+
| `output_format` | string | "txt" | Output format: txt, srt, vtt, json |
|
|
59
|
+
| `language` | string | "auto" | Language code or 'auto' for detection |
|
|
60
|
+
| `cleanup` | boolean | true | Apply LLM cleanup for readability |
|
|
61
|
+
|
|
62
|
+
## Output Formats
|
|
63
|
+
|
|
64
|
+
### TXT
|
|
65
|
+
Plain text with paragraphs.
|
|
66
|
+
|
|
67
|
+
### SRT (SubRip)
|
|
68
|
+
```
|
|
69
|
+
1
|
|
70
|
+
00:00:00,000 --> 00:00:05,000
|
|
71
|
+
First line of transcript.
|
|
72
|
+
|
|
73
|
+
2
|
|
74
|
+
00:00:05,000 --> 00:00:10,000
|
|
75
|
+
Second line of transcript.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### VTT (WebVTT)
|
|
79
|
+
```
|
|
80
|
+
WEBVTT
|
|
81
|
+
|
|
82
|
+
00:00:00.000 --> 00:00:05.000
|
|
83
|
+
First line of transcript.
|
|
84
|
+
|
|
85
|
+
00:00:05.000 --> 00:00:10.000
|
|
86
|
+
Second line of transcript.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### JSON
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"segments": [
|
|
93
|
+
{"start": 0.0, "end": 5.0, "text": "First line"},
|
|
94
|
+
{"start": 5.0, "end": 10.0, "text": "Second line"}
|
|
95
|
+
],
|
|
96
|
+
"language": "en",
|
|
97
|
+
"duration": 10.0
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## License
|
|
102
|
+
|
|
103
|
+
Apache-2.0
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: transcript-generator
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Generate transcripts from audio/video files using AI speech recognition
|
|
4
|
+
author: praisonai
|
|
5
|
+
license: Apache-2.0
|
|
6
|
+
tags: [audio, video, transcript, speech-to-text, whisper]
|
|
7
|
+
|
|
8
|
+
requires:
|
|
9
|
+
tools: [youtube_tool]
|
|
10
|
+
packages: [openai]
|
|
11
|
+
env: [OPENAI_API_KEY]
|
|
12
|
+
|
|
13
|
+
workflow: workflow.yaml
|
|
14
|
+
agents: agents.yaml
|
|
15
|
+
|
|
16
|
+
config:
|
|
17
|
+
input:
|
|
18
|
+
type: string
|
|
19
|
+
required: true
|
|
20
|
+
description: Path to audio/video file or YouTube URL
|
|
21
|
+
output_format:
|
|
22
|
+
type: string
|
|
23
|
+
default: "txt"
|
|
24
|
+
enum: [txt, srt, vtt, json]
|
|
25
|
+
language:
|
|
26
|
+
type: string
|
|
27
|
+
default: "auto"
|
|
28
|
+
description: Language code (e.g., en, es, fr) or 'auto' for detection
|
|
29
|
+
cleanup:
|
|
30
|
+
type: boolean
|
|
31
|
+
default: true
|
|
32
|
+
description: Apply LLM cleanup for readability
|
|
33
|
+
|
|
34
|
+
defaults:
|
|
35
|
+
output_format: txt
|
|
36
|
+
language: auto
|
|
37
|
+
cleanup: true
|
|
38
|
+
|
|
39
|
+
cli:
|
|
40
|
+
command: transcript
|
|
41
|
+
args:
|
|
42
|
+
- name: input
|
|
43
|
+
positional: true
|
|
44
|
+
description: Audio/video file path or YouTube URL
|
|
45
|
+
- name: --format
|
|
46
|
+
default: txt
|
|
47
|
+
description: Output format (txt, srt, vtt, json)
|
|
48
|
+
- name: --language
|
|
49
|
+
default: auto
|
|
50
|
+
description: Language code or 'auto'
|
|
51
|
+
- name: --no-cleanup
|
|
52
|
+
flag: true
|
|
53
|
+
description: Skip LLM cleanup step
|
|
54
|
+
examples:
|
|
55
|
+
- praisonai run transcript-generator ./audio.mp3
|
|
56
|
+
- praisonai run transcript-generator ./video.mp4 --format srt
|
|
57
|
+
- praisonai run transcript-generator "https://youtube.com/watch?v=xxx" --language en
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
agents:
|
|
2
|
+
ingester:
|
|
3
|
+
name: MediaIngester
|
|
4
|
+
role: Media Handler
|
|
5
|
+
goal: Download or load media files for processing
|
|
6
|
+
backstory: |
|
|
7
|
+
I am an expert at handling various media formats and sources.
|
|
8
|
+
I can download from YouTube, process local files, and prepare
|
|
9
|
+
audio for transcription.
|
|
10
|
+
instructions: |
|
|
11
|
+
Handle media input:
|
|
12
|
+
- If YouTube URL, extract audio using youtube_tool
|
|
13
|
+
- If local file, verify it exists and is accessible
|
|
14
|
+
- Return the path to the audio file ready for transcription
|
|
15
|
+
tools: [youtube_tool]
|
|
16
|
+
verbose: true
|
|
17
|
+
|
|
18
|
+
transcriber:
|
|
19
|
+
name: Transcriber
|
|
20
|
+
role: Speech Recognition Specialist
|
|
21
|
+
goal: Convert audio to text using AI speech recognition
|
|
22
|
+
backstory: |
|
|
23
|
+
I specialize in converting spoken audio to accurate text.
|
|
24
|
+
I use state-of-the-art AI models to transcribe speech with
|
|
25
|
+
high accuracy across multiple languages.
|
|
26
|
+
instructions: |
|
|
27
|
+
Transcribe the audio file:
|
|
28
|
+
- Use OpenAI Whisper API for transcription
|
|
29
|
+
- Detect language automatically if not specified
|
|
30
|
+
- Return raw transcript text with timestamps if available
|
|
31
|
+
verbose: true
|
|
32
|
+
|
|
33
|
+
editor:
|
|
34
|
+
name: TranscriptEditor
|
|
35
|
+
role: Content Editor
|
|
36
|
+
goal: Clean up and format the transcript for readability
|
|
37
|
+
backstory: |
|
|
38
|
+
I am a professional editor who specializes in making transcripts
|
|
39
|
+
readable while preserving the original meaning and intent.
|
|
40
|
+
instructions: |
|
|
41
|
+
Clean up the transcript:
|
|
42
|
+
- Fix punctuation and capitalization
|
|
43
|
+
- Add paragraph breaks at natural pauses
|
|
44
|
+
- Remove filler words (um, uh, like)
|
|
45
|
+
- Preserve speaker intent and meaning
|
|
46
|
+
- Do NOT change the actual content or meaning
|
|
47
|
+
verbose: true
|
|
48
|
+
|
|
49
|
+
exporter:
|
|
50
|
+
name: FormatExporter
|
|
51
|
+
role: Format Specialist
|
|
52
|
+
goal: Export transcript in the requested format
|
|
53
|
+
backstory: |
|
|
54
|
+
I am an expert at formatting text into various standard formats
|
|
55
|
+
including plain text, subtitles, and structured data.
|
|
56
|
+
instructions: |
|
|
57
|
+
Export the transcript in the requested format:
|
|
58
|
+
- txt: Plain text with paragraphs
|
|
59
|
+
- srt: SubRip subtitle format with timestamps
|
|
60
|
+
- vtt: WebVTT format with timestamps
|
|
61
|
+
- json: Structured JSON with segments and metadata
|
|
62
|
+
verbose: true
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: Transcript Generator
|
|
2
|
+
description: Generate transcripts from audio/video files
|
|
3
|
+
|
|
4
|
+
workflow:
|
|
5
|
+
verbose: true
|
|
6
|
+
stream: true
|
|
7
|
+
|
|
8
|
+
variables:
|
|
9
|
+
input: "{{input}}"
|
|
10
|
+
output_format: "{{output_format}}"
|
|
11
|
+
language: "{{language}}"
|
|
12
|
+
cleanup: "{{cleanup}}"
|
|
13
|
+
|
|
14
|
+
agents:
|
|
15
|
+
ingester:
|
|
16
|
+
name: MediaIngester
|
|
17
|
+
role: Media Handler
|
|
18
|
+
goal: Download or load media files for processing
|
|
19
|
+
instructions: |
|
|
20
|
+
Handle media input:
|
|
21
|
+
- If YouTube URL, extract audio using youtube_tool
|
|
22
|
+
- If local file, verify it exists and is accessible
|
|
23
|
+
- Return the path to the audio file ready for transcription
|
|
24
|
+
tools: [youtube_tool]
|
|
25
|
+
|
|
26
|
+
transcriber:
|
|
27
|
+
name: Transcriber
|
|
28
|
+
role: Speech Recognition Specialist
|
|
29
|
+
goal: Convert audio to text using AI speech recognition
|
|
30
|
+
instructions: |
|
|
31
|
+
Transcribe the audio file:
|
|
32
|
+
- Use OpenAI Whisper API for transcription
|
|
33
|
+
- Detect language automatically if not specified
|
|
34
|
+
- Return raw transcript text with timestamps if available
|
|
35
|
+
|
|
36
|
+
editor:
|
|
37
|
+
name: TranscriptEditor
|
|
38
|
+
role: Content Editor
|
|
39
|
+
goal: Clean up and format the transcript for readability
|
|
40
|
+
instructions: |
|
|
41
|
+
Clean up the transcript:
|
|
42
|
+
- Fix punctuation and capitalization
|
|
43
|
+
- Add paragraph breaks at natural pauses
|
|
44
|
+
- Remove filler words (um, uh, like)
|
|
45
|
+
- Preserve speaker intent and meaning
|
|
46
|
+
- Do NOT change the actual content or meaning
|
|
47
|
+
|
|
48
|
+
exporter:
|
|
49
|
+
name: FormatExporter
|
|
50
|
+
role: Format Specialist
|
|
51
|
+
goal: Export transcript in the requested format
|
|
52
|
+
instructions: |
|
|
53
|
+
Export the transcript in {{output_format}} format:
|
|
54
|
+
- txt: Plain text with paragraphs
|
|
55
|
+
- srt: SubRip subtitle format with timestamps
|
|
56
|
+
- vtt: WebVTT format with timestamps
|
|
57
|
+
- json: Structured JSON with segments and metadata
|
|
58
|
+
|
|
59
|
+
steps:
|
|
60
|
+
- name: ingest
|
|
61
|
+
agent: ingester
|
|
62
|
+
action: "Load or download media from: {{input}}"
|
|
63
|
+
output_variable: media_path
|
|
64
|
+
|
|
65
|
+
- name: transcribe
|
|
66
|
+
agent: transcriber
|
|
67
|
+
action: "Transcribe audio file. Language: {{language}}"
|
|
68
|
+
context_from: [ingest]
|
|
69
|
+
output_variable: raw_transcript
|
|
70
|
+
|
|
71
|
+
- name: cleanup
|
|
72
|
+
agent: editor
|
|
73
|
+
action: "Clean up transcript for readability"
|
|
74
|
+
context_from: [transcribe]
|
|
75
|
+
condition: "{{cleanup}}"
|
|
76
|
+
output_variable: clean_transcript
|
|
77
|
+
|
|
78
|
+
- name: export
|
|
79
|
+
agent: exporter
|
|
80
|
+
action: "Export to {{output_format}} format"
|
|
81
|
+
context_from: [cleanup, transcribe]
|
|
82
|
+
output_variable: final_output
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Video Editor
|
|
2
|
+
|
|
3
|
+
AI-powered video editing with natural language commands.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Natural language editing**: Describe edits in plain English
|
|
8
|
+
- **Multiple operations**: Trim, effects, audio, text overlays
|
|
9
|
+
- **Preview mode**: Generate low-res preview before final render
|
|
10
|
+
- **Quality assurance**: Automatic QC checks
|
|
11
|
+
|
|
12
|
+
## Requirements
|
|
13
|
+
|
|
14
|
+
- `OPENAI_API_KEY` environment variable
|
|
15
|
+
- Optional: `moviepy`, `ffmpeg-python` for video processing
|
|
16
|
+
- `ffmpeg` installed on system
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
### CLI
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Basic editing
|
|
24
|
+
praisonai run video-editor ./raw.mp4 -o ./final.mp4 -i "Trim first 10s, add fade in"
|
|
25
|
+
|
|
26
|
+
# Speed change
|
|
27
|
+
praisonai run video-editor ./video.mp4 -i "Speed up 1.5x, add background music"
|
|
28
|
+
|
|
29
|
+
# Text overlay
|
|
30
|
+
praisonai run video-editor ./clip.mp4 -i "Add text 'Hello World' at center"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Python API
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
from praisonaiagents import Workflow
|
|
37
|
+
|
|
38
|
+
workflow = Workflow.from_template(
|
|
39
|
+
"video-editor",
|
|
40
|
+
config={
|
|
41
|
+
"input": "./raw.mp4",
|
|
42
|
+
"output": "./final.mp4",
|
|
43
|
+
"instructions": "Trim first 10 seconds, add fade in and out",
|
|
44
|
+
"preview": True
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
result = workflow.run()
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Supported Operations
|
|
51
|
+
|
|
52
|
+
- **Trim/Cut**: Remove sections, extract clips
|
|
53
|
+
- **Speed**: Speed up, slow down, reverse
|
|
54
|
+
- **Effects**: Fade, blur, color correction, filters
|
|
55
|
+
- **Audio**: Volume, mute, add music, extract audio
|
|
56
|
+
- **Text**: Overlays, subtitles, watermarks
|
|
57
|
+
- **Transitions**: Cross-fade, wipe, dissolve
|
|
58
|
+
|
|
59
|
+
## Configuration
|
|
60
|
+
|
|
61
|
+
| Parameter | Type | Default | Description |
|
|
62
|
+
|-----------|------|---------|-------------|
|
|
63
|
+
| `input` | string | required | Input video file path |
|
|
64
|
+
| `output` | string | auto | Output video file path |
|
|
65
|
+
| `instructions` | string | required | Natural language editing instructions |
|
|
66
|
+
| `preview` | boolean | true | Generate preview before final render |
|
|
67
|
+
|
|
68
|
+
## License
|
|
69
|
+
|
|
70
|
+
Apache-2.0
|