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.
Files changed (270) hide show
  1. agent_recipes/__init__.py +27 -0
  2. agent_recipes/recipe_runtime/__init__.py +28 -0
  3. agent_recipes/recipe_runtime/core.py +385 -0
  4. agent_recipes/templates/ai-ab-hook-tester/recipe.yaml +45 -0
  5. agent_recipes/templates/ai-ab-hook-tester/tools.py +169 -0
  6. agent_recipes/templates/ai-angle-generator/recipe.yaml +49 -0
  7. agent_recipes/templates/ai-angle-generator/tools.py +182 -0
  8. agent_recipes/templates/ai-api-doc-generator/README.md +59 -0
  9. agent_recipes/templates/ai-api-doc-generator/TEMPLATE.yaml +29 -0
  10. agent_recipes/templates/ai-api-tester/README.md +60 -0
  11. agent_recipes/templates/ai-api-tester/TEMPLATE.yaml +29 -0
  12. agent_recipes/templates/ai-audio-enhancer/README.md +59 -0
  13. agent_recipes/templates/ai-audio-enhancer/TEMPLATE.yaml +28 -0
  14. agent_recipes/templates/ai-audio-normalizer/README.md +13 -0
  15. agent_recipes/templates/ai-audio-normalizer/TEMPLATE.yaml +44 -0
  16. agent_recipes/templates/ai-audio-splitter/README.md +14 -0
  17. agent_recipes/templates/ai-audio-splitter/TEMPLATE.yaml +47 -0
  18. agent_recipes/templates/ai-background-music-generator/README.md +59 -0
  19. agent_recipes/templates/ai-background-music-generator/TEMPLATE.yaml +28 -0
  20. agent_recipes/templates/ai-background-remover/README.md +60 -0
  21. agent_recipes/templates/ai-background-remover/TEMPLATE.yaml +27 -0
  22. agent_recipes/templates/ai-barcode-scanner/README.md +60 -0
  23. agent_recipes/templates/ai-barcode-scanner/TEMPLATE.yaml +26 -0
  24. agent_recipes/templates/ai-blog-generator/README.md +59 -0
  25. agent_recipes/templates/ai-blog-generator/TEMPLATE.yaml +28 -0
  26. agent_recipes/templates/ai-brief-generator/recipe.yaml +52 -0
  27. agent_recipes/templates/ai-brief-generator/tools.py +231 -0
  28. agent_recipes/templates/ai-broll-builder/recipe.yaml +47 -0
  29. agent_recipes/templates/ai-broll-builder/tools.py +204 -0
  30. agent_recipes/templates/ai-calendar-scheduler/README.md +60 -0
  31. agent_recipes/templates/ai-calendar-scheduler/TEMPLATE.yaml +29 -0
  32. agent_recipes/templates/ai-changelog-generator/README.md +14 -0
  33. agent_recipes/templates/ai-changelog-generator/TEMPLATE.yaml +46 -0
  34. agent_recipes/templates/ai-chart-generator/README.md +61 -0
  35. agent_recipes/templates/ai-chart-generator/TEMPLATE.yaml +32 -0
  36. agent_recipes/templates/ai-code-documenter/README.md +12 -0
  37. agent_recipes/templates/ai-code-documenter/TEMPLATE.yaml +37 -0
  38. agent_recipes/templates/ai-code-refactorer/README.md +59 -0
  39. agent_recipes/templates/ai-code-refactorer/TEMPLATE.yaml +28 -0
  40. agent_recipes/templates/ai-code-reviewer/README.md +59 -0
  41. agent_recipes/templates/ai-code-reviewer/TEMPLATE.yaml +31 -0
  42. agent_recipes/templates/ai-color-palette-extractor/README.md +60 -0
  43. agent_recipes/templates/ai-color-palette-extractor/TEMPLATE.yaml +27 -0
  44. agent_recipes/templates/ai-comment-miner/recipe.yaml +40 -0
  45. agent_recipes/templates/ai-comment-miner/tools.py +141 -0
  46. agent_recipes/templates/ai-commit-message-generator/README.md +59 -0
  47. agent_recipes/templates/ai-commit-message-generator/TEMPLATE.yaml +31 -0
  48. agent_recipes/templates/ai-content-calendar/recipe.yaml +43 -0
  49. agent_recipes/templates/ai-content-calendar/tools.py +170 -0
  50. agent_recipes/templates/ai-context-enricher/recipe.yaml +48 -0
  51. agent_recipes/templates/ai-context-enricher/tools.py +258 -0
  52. agent_recipes/templates/ai-contract-analyzer/README.md +60 -0
  53. agent_recipes/templates/ai-contract-analyzer/TEMPLATE.yaml +34 -0
  54. agent_recipes/templates/ai-csv-cleaner/README.md +13 -0
  55. agent_recipes/templates/ai-csv-cleaner/TEMPLATE.yaml +45 -0
  56. agent_recipes/templates/ai-cta-generator/recipe.yaml +54 -0
  57. agent_recipes/templates/ai-cta-generator/tools.py +174 -0
  58. agent_recipes/templates/ai-daily-news-show/recipe.yaml +103 -0
  59. agent_recipes/templates/ai-daily-news-show/tools.py +308 -0
  60. agent_recipes/templates/ai-data-anonymizer/README.md +60 -0
  61. agent_recipes/templates/ai-data-anonymizer/TEMPLATE.yaml +31 -0
  62. agent_recipes/templates/ai-data-profiler/README.md +14 -0
  63. agent_recipes/templates/ai-data-profiler/TEMPLATE.yaml +42 -0
  64. agent_recipes/templates/ai-dependency-auditor/README.md +12 -0
  65. agent_recipes/templates/ai-dependency-auditor/TEMPLATE.yaml +37 -0
  66. agent_recipes/templates/ai-doc-translator/README.md +12 -0
  67. agent_recipes/templates/ai-doc-translator/TEMPLATE.yaml +41 -0
  68. agent_recipes/templates/ai-duplicate-finder/README.md +59 -0
  69. agent_recipes/templates/ai-duplicate-finder/TEMPLATE.yaml +28 -0
  70. agent_recipes/templates/ai-ebook-converter/README.md +60 -0
  71. agent_recipes/templates/ai-ebook-converter/TEMPLATE.yaml +27 -0
  72. agent_recipes/templates/ai-email-parser/README.md +59 -0
  73. agent_recipes/templates/ai-email-parser/TEMPLATE.yaml +29 -0
  74. agent_recipes/templates/ai-etl-pipeline/README.md +60 -0
  75. agent_recipes/templates/ai-etl-pipeline/TEMPLATE.yaml +30 -0
  76. agent_recipes/templates/ai-excel-formula-generator/README.md +59 -0
  77. agent_recipes/templates/ai-excel-formula-generator/TEMPLATE.yaml +28 -0
  78. agent_recipes/templates/ai-face-blur/README.md +60 -0
  79. agent_recipes/templates/ai-face-blur/TEMPLATE.yaml +28 -0
  80. agent_recipes/templates/ai-fact-checker/recipe.yaml +52 -0
  81. agent_recipes/templates/ai-fact-checker/tools.py +279 -0
  82. agent_recipes/templates/ai-faq-generator/README.md +59 -0
  83. agent_recipes/templates/ai-faq-generator/TEMPLATE.yaml +28 -0
  84. agent_recipes/templates/ai-file-organizer/README.md +59 -0
  85. agent_recipes/templates/ai-file-organizer/TEMPLATE.yaml +29 -0
  86. agent_recipes/templates/ai-folder-packager/README.md +15 -0
  87. agent_recipes/templates/ai-folder-packager/TEMPLATE.yaml +48 -0
  88. agent_recipes/templates/ai-form-filler/README.md +60 -0
  89. agent_recipes/templates/ai-form-filler/TEMPLATE.yaml +30 -0
  90. agent_recipes/templates/ai-hashtag-optimizer/recipe.yaml +45 -0
  91. agent_recipes/templates/ai-hashtag-optimizer/tools.py +134 -0
  92. agent_recipes/templates/ai-hook-generator/recipe.yaml +50 -0
  93. agent_recipes/templates/ai-hook-generator/tools.py +177 -0
  94. agent_recipes/templates/ai-image-captioner/README.md +59 -0
  95. agent_recipes/templates/ai-image-captioner/TEMPLATE.yaml +28 -0
  96. agent_recipes/templates/ai-image-cataloger/README.md +13 -0
  97. agent_recipes/templates/ai-image-cataloger/TEMPLATE.yaml +39 -0
  98. agent_recipes/templates/ai-image-optimizer/README.md +13 -0
  99. agent_recipes/templates/ai-image-optimizer/TEMPLATE.yaml +43 -0
  100. agent_recipes/templates/ai-image-resizer/README.md +12 -0
  101. agent_recipes/templates/ai-image-resizer/TEMPLATE.yaml +39 -0
  102. agent_recipes/templates/ai-image-tagger/README.md +59 -0
  103. agent_recipes/templates/ai-image-tagger/TEMPLATE.yaml +28 -0
  104. agent_recipes/templates/ai-image-upscaler/README.md +60 -0
  105. agent_recipes/templates/ai-image-upscaler/TEMPLATE.yaml +27 -0
  106. agent_recipes/templates/ai-invoice-processor/README.md +60 -0
  107. agent_recipes/templates/ai-invoice-processor/TEMPLATE.yaml +34 -0
  108. agent_recipes/templates/ai-json-to-csv/README.md +12 -0
  109. agent_recipes/templates/ai-json-to-csv/TEMPLATE.yaml +36 -0
  110. agent_recipes/templates/ai-log-analyzer/README.md +59 -0
  111. agent_recipes/templates/ai-log-analyzer/TEMPLATE.yaml +28 -0
  112. agent_recipes/templates/ai-markdown-to-pdf/README.md +12 -0
  113. agent_recipes/templates/ai-markdown-to-pdf/TEMPLATE.yaml +40 -0
  114. agent_recipes/templates/ai-meeting-summarizer/README.md +59 -0
  115. agent_recipes/templates/ai-meeting-summarizer/TEMPLATE.yaml +32 -0
  116. agent_recipes/templates/ai-meta-tag-generator/README.md +59 -0
  117. agent_recipes/templates/ai-meta-tag-generator/TEMPLATE.yaml +28 -0
  118. agent_recipes/templates/ai-news-capture-pack/recipe.yaml +42 -0
  119. agent_recipes/templates/ai-news-capture-pack/tools.py +150 -0
  120. agent_recipes/templates/ai-news-crawler/recipe.yaml +99 -0
  121. agent_recipes/templates/ai-news-crawler/tools.py +417 -0
  122. agent_recipes/templates/ai-news-deduper/recipe.yaml +47 -0
  123. agent_recipes/templates/ai-news-deduper/tools.py +235 -0
  124. agent_recipes/templates/ai-newsletter-generator/README.md +59 -0
  125. agent_recipes/templates/ai-newsletter-generator/TEMPLATE.yaml +28 -0
  126. agent_recipes/templates/ai-note-summarizer/README.md +59 -0
  127. agent_recipes/templates/ai-note-summarizer/TEMPLATE.yaml +28 -0
  128. agent_recipes/templates/ai-pdf-summarizer/README.md +12 -0
  129. agent_recipes/templates/ai-pdf-summarizer/TEMPLATE.yaml +40 -0
  130. agent_recipes/templates/ai-pdf-to-markdown/README.md +19 -0
  131. agent_recipes/templates/ai-pdf-to-markdown/TEMPLATE.yaml +63 -0
  132. agent_recipes/templates/ai-performance-analyzer/recipe.yaml +45 -0
  133. agent_recipes/templates/ai-performance-analyzer/tools.py +159 -0
  134. agent_recipes/templates/ai-podcast-cleaner/README.md +117 -0
  135. agent_recipes/templates/ai-podcast-cleaner/TEMPLATE.yaml +117 -0
  136. agent_recipes/templates/ai-podcast-cleaner/agents.yaml +59 -0
  137. agent_recipes/templates/ai-podcast-cleaner/workflow.yaml +77 -0
  138. agent_recipes/templates/ai-podcast-transcriber/README.md +59 -0
  139. agent_recipes/templates/ai-podcast-transcriber/TEMPLATE.yaml +32 -0
  140. agent_recipes/templates/ai-post-copy-generator/recipe.yaml +41 -0
  141. agent_recipes/templates/ai-post-copy-generator/tools.py +105 -0
  142. agent_recipes/templates/ai-product-description-generator/README.md +59 -0
  143. agent_recipes/templates/ai-product-description-generator/TEMPLATE.yaml +28 -0
  144. agent_recipes/templates/ai-publisher-pack/recipe.yaml +44 -0
  145. agent_recipes/templates/ai-publisher-pack/tools.py +252 -0
  146. agent_recipes/templates/ai-qr-code-generator/README.md +60 -0
  147. agent_recipes/templates/ai-qr-code-generator/TEMPLATE.yaml +26 -0
  148. agent_recipes/templates/ai-regex-generator/README.md +59 -0
  149. agent_recipes/templates/ai-regex-generator/TEMPLATE.yaml +28 -0
  150. agent_recipes/templates/ai-repo-readme/README.md +13 -0
  151. agent_recipes/templates/ai-repo-readme/TEMPLATE.yaml +42 -0
  152. agent_recipes/templates/ai-report-generator/README.md +61 -0
  153. agent_recipes/templates/ai-report-generator/TEMPLATE.yaml +32 -0
  154. agent_recipes/templates/ai-resume-parser/README.md +60 -0
  155. agent_recipes/templates/ai-resume-parser/TEMPLATE.yaml +33 -0
  156. agent_recipes/templates/ai-rss-aggregator/README.md +60 -0
  157. agent_recipes/templates/ai-rss-aggregator/TEMPLATE.yaml +30 -0
  158. agent_recipes/templates/ai-schema-generator/README.md +12 -0
  159. agent_recipes/templates/ai-schema-generator/TEMPLATE.yaml +34 -0
  160. agent_recipes/templates/ai-screen-recorder/recipe.yaml +43 -0
  161. agent_recipes/templates/ai-screen-recorder/tools.py +184 -0
  162. agent_recipes/templates/ai-screenshot-capture/recipe.yaml +45 -0
  163. agent_recipes/templates/ai-screenshot-capture/tools.py +231 -0
  164. agent_recipes/templates/ai-screenshot-ocr/README.md +12 -0
  165. agent_recipes/templates/ai-screenshot-ocr/TEMPLATE.yaml +37 -0
  166. agent_recipes/templates/ai-script-writer/recipe.yaml +58 -0
  167. agent_recipes/templates/ai-script-writer/tools.py +297 -0
  168. agent_recipes/templates/ai-sentiment-analyzer/README.md +59 -0
  169. agent_recipes/templates/ai-sentiment-analyzer/TEMPLATE.yaml +28 -0
  170. agent_recipes/templates/ai-seo-optimizer/README.md +59 -0
  171. agent_recipes/templates/ai-seo-optimizer/TEMPLATE.yaml +28 -0
  172. agent_recipes/templates/ai-signal-ranker/recipe.yaml +54 -0
  173. agent_recipes/templates/ai-signal-ranker/tools.py +256 -0
  174. agent_recipes/templates/ai-sitemap-generator/README.md +59 -0
  175. agent_recipes/templates/ai-sitemap-generator/TEMPLATE.yaml +26 -0
  176. agent_recipes/templates/ai-sitemap-scraper/README.md +13 -0
  177. agent_recipes/templates/ai-sitemap-scraper/TEMPLATE.yaml +41 -0
  178. agent_recipes/templates/ai-slide-generator/README.md +60 -0
  179. agent_recipes/templates/ai-slide-generator/TEMPLATE.yaml +29 -0
  180. agent_recipes/templates/ai-slide-to-notes/README.md +12 -0
  181. agent_recipes/templates/ai-slide-to-notes/TEMPLATE.yaml +37 -0
  182. agent_recipes/templates/ai-social-media-generator/README.md +59 -0
  183. agent_recipes/templates/ai-social-media-generator/TEMPLATE.yaml +28 -0
  184. agent_recipes/templates/ai-sql-generator/README.md +59 -0
  185. agent_recipes/templates/ai-sql-generator/TEMPLATE.yaml +28 -0
  186. agent_recipes/templates/ai-subtitle-generator/README.md +59 -0
  187. agent_recipes/templates/ai-subtitle-generator/TEMPLATE.yaml +31 -0
  188. agent_recipes/templates/ai-test-generator/README.md +59 -0
  189. agent_recipes/templates/ai-test-generator/TEMPLATE.yaml +28 -0
  190. agent_recipes/templates/ai-translation-batch/README.md +59 -0
  191. agent_recipes/templates/ai-translation-batch/TEMPLATE.yaml +28 -0
  192. agent_recipes/templates/ai-url-to-markdown/README.md +14 -0
  193. agent_recipes/templates/ai-url-to-markdown/TEMPLATE.yaml +44 -0
  194. agent_recipes/templates/ai-video-chapter-generator/README.md +59 -0
  195. agent_recipes/templates/ai-video-chapter-generator/TEMPLATE.yaml +32 -0
  196. agent_recipes/templates/ai-video-compressor/README.md +59 -0
  197. agent_recipes/templates/ai-video-compressor/TEMPLATE.yaml +28 -0
  198. agent_recipes/templates/ai-video-editor/README.md +254 -0
  199. agent_recipes/templates/ai-video-editor/TEMPLATE.yaml +139 -0
  200. agent_recipes/templates/ai-video-editor/agents.yaml +36 -0
  201. agent_recipes/templates/ai-video-editor/requirements.txt +8 -0
  202. agent_recipes/templates/ai-video-editor/scripts/run.sh +10 -0
  203. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__init__.py +45 -0
  204. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__main__.py +8 -0
  205. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/__init__.cpython-312.pyc +0 -0
  206. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/cli.cpython-312.pyc +0 -0
  207. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/config.cpython-312.pyc +0 -0
  208. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/ffmpeg_probe.cpython-312.pyc +0 -0
  209. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/heuristics.cpython-312.pyc +0 -0
  210. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/llm_plan.cpython-312.pyc +0 -0
  211. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/models.cpython-312.pyc +0 -0
  212. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/pipeline.cpython-312.pyc +0 -0
  213. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/render.cpython-312.pyc +0 -0
  214. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/timeline.cpython-312.pyc +0 -0
  215. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/transcribe.cpython-312.pyc +0 -0
  216. agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/utils.cpython-312.pyc +0 -0
  217. agent_recipes/templates/ai-video-editor/src/ai_video_editor/cli.py +343 -0
  218. agent_recipes/templates/ai-video-editor/src/ai_video_editor/config.py +102 -0
  219. agent_recipes/templates/ai-video-editor/src/ai_video_editor/ffmpeg_probe.py +92 -0
  220. agent_recipes/templates/ai-video-editor/src/ai_video_editor/heuristics.py +119 -0
  221. agent_recipes/templates/ai-video-editor/src/ai_video_editor/llm_plan.py +277 -0
  222. agent_recipes/templates/ai-video-editor/src/ai_video_editor/models.py +343 -0
  223. agent_recipes/templates/ai-video-editor/src/ai_video_editor/pipeline.py +287 -0
  224. agent_recipes/templates/ai-video-editor/src/ai_video_editor/render.py +274 -0
  225. agent_recipes/templates/ai-video-editor/src/ai_video_editor/timeline.py +278 -0
  226. agent_recipes/templates/ai-video-editor/src/ai_video_editor/transcribe.py +233 -0
  227. agent_recipes/templates/ai-video-editor/src/ai_video_editor/utils.py +222 -0
  228. agent_recipes/templates/ai-video-editor/src/input.mov +0 -0
  229. agent_recipes/templates/ai-video-editor/src/out.mp4 +0 -0
  230. agent_recipes/templates/ai-video-editor/tests/test_heuristics.py +130 -0
  231. agent_recipes/templates/ai-video-editor/tests/test_models.py +152 -0
  232. agent_recipes/templates/ai-video-editor/tests/test_timeline.py +105 -0
  233. agent_recipes/templates/ai-video-editor/workflow.yaml +51 -0
  234. agent_recipes/templates/ai-video-highlight-extractor/README.md +60 -0
  235. agent_recipes/templates/ai-video-highlight-extractor/TEMPLATE.yaml +33 -0
  236. agent_recipes/templates/ai-video-merger/recipe.yaml +40 -0
  237. agent_recipes/templates/ai-video-merger/tools.py +172 -0
  238. agent_recipes/templates/ai-video-thumbnails/README.md +16 -0
  239. agent_recipes/templates/ai-video-thumbnails/TEMPLATE.yaml +53 -0
  240. agent_recipes/templates/ai-video-to-gif/README.md +14 -0
  241. agent_recipes/templates/ai-video-to-gif/TEMPLATE.yaml +64 -0
  242. agent_recipes/templates/ai-voice-cloner/README.md +59 -0
  243. agent_recipes/templates/ai-voice-cloner/TEMPLATE.yaml +31 -0
  244. agent_recipes/templates/ai-voiceover-generator/recipe.yaml +41 -0
  245. agent_recipes/templates/ai-voiceover-generator/tools.py +194 -0
  246. agent_recipes/templates/ai-watermark-adder/README.md +59 -0
  247. agent_recipes/templates/ai-watermark-adder/TEMPLATE.yaml +26 -0
  248. agent_recipes/templates/ai-watermark-remover/README.md +60 -0
  249. agent_recipes/templates/ai-watermark-remover/TEMPLATE.yaml +32 -0
  250. agent_recipes/templates/data-transformer/README.md +75 -0
  251. agent_recipes/templates/data-transformer/TEMPLATE.yaml +63 -0
  252. agent_recipes/templates/data-transformer/agents.yaml +70 -0
  253. agent_recipes/templates/data-transformer/workflow.yaml +92 -0
  254. agent_recipes/templates/shorts-generator/README.md +61 -0
  255. agent_recipes/templates/shorts-generator/TEMPLATE.yaml +65 -0
  256. agent_recipes/templates/shorts-generator/agents.yaml +66 -0
  257. agent_recipes/templates/shorts-generator/workflow.yaml +86 -0
  258. agent_recipes/templates/transcript-generator/README.md +103 -0
  259. agent_recipes/templates/transcript-generator/TEMPLATE.yaml +57 -0
  260. agent_recipes/templates/transcript-generator/agents.yaml +62 -0
  261. agent_recipes/templates/transcript-generator/workflow.yaml +82 -0
  262. agent_recipes/templates/video-editor/README.md +70 -0
  263. agent_recipes/templates/video-editor/TEMPLATE.yaml +55 -0
  264. agent_recipes/templates/video-editor/agents.yaml +68 -0
  265. agent_recipes/templates/video-editor/workflow.yaml +92 -0
  266. agent_recipes-0.0.5.dist-info/METADATA +145 -0
  267. agent_recipes-0.0.5.dist-info/RECORD +269 -0
  268. agent_recipes-0.0.5.dist-info/WHEEL +5 -0
  269. agent_recipes-0.0.5.dist-info/top_level.txt +1 -0
  270. /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,194 @@
1
+ """
2
+ AI Voiceover Generator Tools
3
+
4
+ Generate voice overs using TTS:
5
+ - OpenAI TTS
6
+ - Multiple voices
7
+ - Speed control
8
+ """
9
+
10
+ import logging
11
+ import os
12
+ from datetime import datetime
13
+ from pathlib import Path
14
+ from typing import Any, Dict, Optional
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ def generate_voiceover(
20
+ text: str,
21
+ output_path: Optional[str] = None,
22
+ voice: str = "alloy",
23
+ model: str = "tts-1",
24
+ speed: float = 1.0,
25
+ ) -> Dict[str, Any]:
26
+ """
27
+ Generate voiceover from text using OpenAI TTS.
28
+
29
+ Args:
30
+ text: Text to convert to speech
31
+ output_path: Output audio file path
32
+ voice: Voice to use (alloy, echo, fable, onyx, nova, shimmer)
33
+ model: TTS model (tts-1, tts-1-hd)
34
+ speed: Speech speed (0.25 to 4.0)
35
+
36
+ Returns:
37
+ Dictionary with audio info
38
+ """
39
+ import requests
40
+
41
+ api_key = os.environ.get("OPENAI_API_KEY")
42
+ if not api_key:
43
+ return {"error": "OPENAI_API_KEY not set"}
44
+
45
+ if not output_path:
46
+ timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
47
+ output_path = f"voiceover_{timestamp}.mp3"
48
+
49
+ Path(output_path).parent.mkdir(parents=True, exist_ok=True)
50
+
51
+ try:
52
+ response = requests.post(
53
+ "https://api.openai.com/v1/audio/speech",
54
+ headers={
55
+ "Authorization": f"Bearer {api_key}",
56
+ "Content-Type": "application/json",
57
+ },
58
+ json={
59
+ "model": model,
60
+ "input": text,
61
+ "voice": voice,
62
+ "speed": speed,
63
+ },
64
+ timeout=120,
65
+ )
66
+ response.raise_for_status()
67
+
68
+ with open(output_path, "wb") as f:
69
+ f.write(response.content)
70
+
71
+ return {
72
+ "path": output_path,
73
+ "voice": voice,
74
+ "model": model,
75
+ "text_length": len(text),
76
+ "size_bytes": len(response.content),
77
+ }
78
+
79
+ except Exception as e:
80
+ logger.error(f"Error generating voiceover: {e}")
81
+ return {"error": str(e)}
82
+
83
+
84
+ def generate_speech(
85
+ script: str,
86
+ output_dir: Optional[str] = None,
87
+ voice: str = "alloy",
88
+ chunk_size: int = 4000,
89
+ ) -> Dict[str, Any]:
90
+ """
91
+ Generate speech from a longer script, chunking if needed.
92
+
93
+ Args:
94
+ script: Full script text
95
+ output_dir: Output directory
96
+ voice: Voice to use
97
+ chunk_size: Max characters per chunk
98
+
99
+ Returns:
100
+ Dictionary with audio files
101
+ """
102
+ output_dir = output_dir or "./voiceovers"
103
+ Path(output_dir).mkdir(parents=True, exist_ok=True)
104
+
105
+ # Split into chunks if needed
106
+ chunks = []
107
+ if len(script) > chunk_size:
108
+ words = script.split()
109
+ current_chunk = []
110
+ current_length = 0
111
+
112
+ for word in words:
113
+ if current_length + len(word) + 1 > chunk_size:
114
+ chunks.append(" ".join(current_chunk))
115
+ current_chunk = [word]
116
+ current_length = len(word)
117
+ else:
118
+ current_chunk.append(word)
119
+ current_length += len(word) + 1
120
+
121
+ if current_chunk:
122
+ chunks.append(" ".join(current_chunk))
123
+ else:
124
+ chunks = [script]
125
+
126
+ audio_files = []
127
+
128
+ for i, chunk in enumerate(chunks):
129
+ output_path = os.path.join(output_dir, f"speech_{i:03d}.mp3")
130
+ result = generate_voiceover(chunk, output_path, voice)
131
+
132
+ if "path" in result:
133
+ audio_files.append(result["path"])
134
+ else:
135
+ logger.warning(f"Error generating chunk {i}: {result.get('error')}")
136
+
137
+ # Concatenate if multiple files
138
+ if len(audio_files) > 1:
139
+ final_path = os.path.join(output_dir, "speech_full.mp3")
140
+ concat_audio(audio_files, final_path)
141
+ return {
142
+ "path": final_path,
143
+ "chunks": len(audio_files),
144
+ "chunk_files": audio_files,
145
+ }
146
+ elif audio_files:
147
+ return {
148
+ "path": audio_files[0],
149
+ "chunks": 1,
150
+ }
151
+ else:
152
+ return {"error": "No audio generated"}
153
+
154
+
155
+ def concat_audio(
156
+ audio_files: list,
157
+ output_path: str,
158
+ ) -> Dict[str, Any]:
159
+ """
160
+ Concatenate multiple audio files.
161
+
162
+ Args:
163
+ audio_files: List of audio file paths
164
+ output_path: Output file path
165
+
166
+ Returns:
167
+ Dictionary with output info
168
+ """
169
+ import subprocess
170
+ import tempfile
171
+
172
+ try:
173
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".txt", delete=False) as f:
174
+ for audio in audio_files:
175
+ f.write(f"file '{audio}'\n")
176
+ concat_file = f.name
177
+
178
+ cmd = [
179
+ "ffmpeg", "-y",
180
+ "-f", "concat",
181
+ "-safe", "0",
182
+ "-i", concat_file,
183
+ "-c", "copy",
184
+ output_path
185
+ ]
186
+
187
+ subprocess.run(cmd, capture_output=True, check=True)
188
+ os.unlink(concat_file)
189
+
190
+ return {"path": output_path}
191
+
192
+ except Exception as e:
193
+ logger.error(f"Error concatenating audio: {e}")
194
+ return {"error": str(e)}
@@ -0,0 +1,59 @@
1
+ # Watermark Adder
2
+
3
+ Batch add watermarks/logos to images
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install agent-recipes
9
+ ```
10
+
11
+ ## CLI Usage
12
+
13
+ ```bash
14
+ # Basic usage
15
+ praison recipes run ai-watermark-adder <input>
16
+
17
+ # With output directory
18
+ praison recipes run ai-watermark-adder <input> --output ./output/
19
+
20
+ # Dry run (check dependencies only)
21
+ praison recipes run ai-watermark-adder <input> --dry-run
22
+
23
+ # Show recipe info
24
+ praison recipes info ai-watermark-adder
25
+
26
+ # Check dependencies
27
+ praison recipes doctor ai-watermark-adder
28
+ ```
29
+
30
+ ## Python Usage
31
+
32
+ ```python
33
+ from praisonaiagents import Agent
34
+ from agent_recipes import load_recipe
35
+
36
+ # Load and run recipe
37
+ recipe = load_recipe("ai-watermark-adder")
38
+ result = recipe.run(input="<your-input>")
39
+ print(result)
40
+ ```
41
+
42
+ ## Requirements
43
+
44
+ ### Packages
45
+ - pillow
46
+
47
+ ### Environment Variables
48
+ - None
49
+
50
+ ### External Tools
51
+ - None
52
+
53
+ ## Tags
54
+
55
+ `image`, `watermark`, `branding`
56
+
57
+ ## License
58
+
59
+ Apache-2.0
@@ -0,0 +1,26 @@
1
+ name: ai-watermark-adder
2
+ version: "1.0.0"
3
+ description: Batch add watermarks/logos to images
4
+ author: praison
5
+ license: Apache-2.0
6
+ tags:
7
+ - image
8
+ - watermark
9
+ - branding
10
+
11
+ requires:
12
+ tools:
13
+ - image_tool
14
+ packages:
15
+ - pillow
16
+
17
+ cli:
18
+ command: praison recipes run ai-watermark-adder
19
+ examples:
20
+ - praison recipes run ai-watermark-adder <input>
21
+ - praison recipes run ai-watermark-adder <input> --output ./output/
22
+ - praison recipes run ai-watermark-adder <input> --dry-run
23
+
24
+ safety:
25
+ dry_run_default: true
26
+ overwrites_files: true
@@ -0,0 +1,60 @@
1
+ # Watermark Remover
2
+
3
+ Remove watermarks from images (COPYRIGHT WARNING)
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install agent-recipes
9
+ ```
10
+
11
+ ## CLI Usage
12
+
13
+ ```bash
14
+ # Basic usage
15
+ praison recipes run ai-watermark-remover <input>
16
+
17
+ # With output directory
18
+ praison recipes run ai-watermark-remover <input> --output ./output/
19
+
20
+ # Dry run (check dependencies only)
21
+ praison recipes run ai-watermark-remover <input> --dry-run
22
+
23
+ # Show recipe info
24
+ praison recipes info ai-watermark-remover
25
+
26
+ # Check dependencies
27
+ praison recipes doctor ai-watermark-remover
28
+ ```
29
+
30
+ ## Python Usage
31
+
32
+ ```python
33
+ from praisonaiagents import Agent
34
+ from agent_recipes import load_recipe
35
+
36
+ # Load and run recipe
37
+ recipe = load_recipe("ai-watermark-remover")
38
+ result = recipe.run(input="<your-input>")
39
+ print(result)
40
+ ```
41
+
42
+ ## Requirements
43
+
44
+ ### Packages
45
+ - openai
46
+ - pillow
47
+
48
+ ### Environment Variables
49
+ - OPENAI_API_KEY
50
+
51
+ ### External Tools
52
+ - None
53
+
54
+ ## Tags
55
+
56
+ `image`, `watermark`, `removal`
57
+
58
+ ## License
59
+
60
+ Apache-2.0
@@ -0,0 +1,32 @@
1
+ name: ai-watermark-remover
2
+ version: "1.0.0"
3
+ description: Remove watermarks from images (COPYRIGHT WARNING)
4
+ author: praison
5
+ license: Apache-2.0
6
+ tags:
7
+ - image
8
+ - watermark
9
+ - removal
10
+
11
+ requires:
12
+ tools:
13
+ - vision_tool
14
+ - image_tool
15
+ packages:
16
+ - openai
17
+ - pillow
18
+ env:
19
+ - OPENAI_API_KEY
20
+
21
+ cli:
22
+ command: praison recipes run ai-watermark-remover
23
+ examples:
24
+ - praison recipes run ai-watermark-remover <input>
25
+ - praison recipes run ai-watermark-remover <input> --output ./output/
26
+ - praison recipes run ai-watermark-remover <input> --dry-run
27
+
28
+ safety:
29
+ dry_run_default: true
30
+ overwrites_files: true
31
+ requires_consent: true
32
+ consent_message: "Only use on images you have rights to modify."
@@ -0,0 +1,75 @@
1
+ # Data Transformer
2
+
3
+ Transform data between formats with AI-assisted schema mapping.
4
+
5
+ ## Features
6
+
7
+ - **Multi-format support**: CSV, JSON, XML, Excel
8
+ - **AI schema inference**: Automatic detection of data types and patterns
9
+ - **Smart mapping**: AI-assisted field mapping between schemas
10
+ - **Validation**: Optional output validation
11
+
12
+ ## Requirements
13
+
14
+ - `OPENAI_API_KEY` environment variable
15
+ - Optional: `pandas` for data processing
16
+
17
+ ## Usage
18
+
19
+ ### CLI
20
+
21
+ ```bash
22
+ # Basic transformation
23
+ praisonai run data-transformer ./data.csv -o ./output.json
24
+
25
+ # With target schema
26
+ praisonai run data-transformer ./legacy.xml -o ./modern.json --schema ./schema.json
27
+
28
+ # Natural language schema
29
+ praisonai run data-transformer ./data.csv -o ./output.json --schema "Salesforce Contact format"
30
+ ```
31
+
32
+ ### Python API
33
+
34
+ ```python
35
+ from praisonaiagents import Workflow
36
+
37
+ workflow = Workflow.from_template(
38
+ "data-transformer",
39
+ config={
40
+ "input": "./data.csv",
41
+ "output": "./output.json",
42
+ "target_schema": "Salesforce Contact format",
43
+ "validation": True
44
+ }
45
+ )
46
+ result = workflow.run()
47
+ ```
48
+
49
+ ## Supported Formats
50
+
51
+ ### Input
52
+ - CSV (comma, tab, pipe delimited)
53
+ - JSON (objects, arrays)
54
+ - XML
55
+ - Excel (.xlsx, .xls)
56
+
57
+ ### Output
58
+ - JSON
59
+ - CSV
60
+ - XML
61
+ - Excel
62
+
63
+ ## Configuration
64
+
65
+ | Parameter | Type | Default | Description |
66
+ |-----------|------|---------|-------------|
67
+ | `input` | string | required | Input file path |
68
+ | `output` | string | required | Output file path |
69
+ | `target_schema` | string | auto | Target schema file or description |
70
+ | `validation` | boolean | true | Validate output against schema |
71
+ | `sample_size` | integer | 100 | Rows to sample for inference |
72
+
73
+ ## License
74
+
75
+ Apache-2.0
@@ -0,0 +1,63 @@
1
+ name: data-transformer
2
+ version: "1.0.0"
3
+ description: Transform data between formats with AI-assisted schema mapping
4
+ author: praisonai
5
+ license: Apache-2.0
6
+ tags: [data, etl, transform, csv, json, xml, schema]
7
+
8
+ requires:
9
+ tools: [csv_tool, json_tool, file_tool]
10
+ packages: [pandas]
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: Input file (CSV, JSON, XML, Excel)
21
+ output:
22
+ type: string
23
+ required: true
24
+ description: Output file path
25
+ target_schema:
26
+ type: string
27
+ description: Target schema file or description
28
+ validation:
29
+ type: boolean
30
+ default: true
31
+ description: Validate output against schema
32
+ sample_size:
33
+ type: integer
34
+ default: 100
35
+ description: Rows to sample for schema inference
36
+
37
+ defaults:
38
+ validation: true
39
+ sample_size: 100
40
+
41
+ cli:
42
+ command: transform
43
+ args:
44
+ - name: input
45
+ positional: true
46
+ description: Input file (CSV, JSON, XML, Excel)
47
+ - name: --output
48
+ short: -o
49
+ required: true
50
+ description: Output file path
51
+ - name: --schema
52
+ short: -s
53
+ description: Target schema file or description
54
+ - name: --no-validate
55
+ flag: true
56
+ description: Skip validation step
57
+ - name: --sample
58
+ default: 100
59
+ description: Sample size for schema inference
60
+ examples:
61
+ - praisonai run data-transformer ./data.csv -o ./output.json
62
+ - praisonai run data-transformer ./legacy.xml -o ./modern.json --schema ./schema.json
63
+ - praisonai run data-transformer ./data.csv -o ./output.json --schema "Salesforce Contact format"
@@ -0,0 +1,70 @@
1
+ agents:
2
+ schema_inferrer:
3
+ name: SchemaInferrer
4
+ role: Data Analyst
5
+ goal: Infer source data schema
6
+ backstory: |
7
+ I am an expert at analyzing data files and understanding their structure.
8
+ I can detect patterns, data types, and quality issues in any format.
9
+ instructions: |
10
+ Analyze the input file and infer its schema:
11
+ - Detect file format (CSV, JSON, XML, Excel)
12
+ - Identify column names and data types
13
+ - Detect patterns (dates, emails, phones, etc.)
14
+ - Note any data quality issues
15
+ Return a structured schema definition.
16
+ tools: [csv_tool, json_tool, file_tool]
17
+ verbose: true
18
+
19
+ mapper:
20
+ name: SchemaMapper
21
+ role: Data Engineer
22
+ goal: Create field mappings between schemas
23
+ backstory: |
24
+ I specialize in data integration and schema mapping. I understand
25
+ how to match fields between different data models and identify
26
+ the transformations needed.
27
+ instructions: |
28
+ Map source fields to target schema:
29
+ - Match by name similarity
30
+ - Match by data type compatibility
31
+ - Match by sample value patterns
32
+ - Flag ambiguous mappings for review
33
+ - Suggest transformations needed
34
+ Return a mapping specification.
35
+ verbose: true
36
+
37
+ transformer:
38
+ name: DataTransformer
39
+ role: ETL Engineer
40
+ goal: Execute data transformation
41
+ backstory: |
42
+ I am an ETL specialist who can transform data between any formats.
43
+ I handle type conversions, formatting, and data quality issues
44
+ while maintaining data integrity.
45
+ instructions: |
46
+ Transform data according to mapping:
47
+ - Read source data
48
+ - Apply field mappings
49
+ - Execute transformations
50
+ - Handle null values and defaults
51
+ - Write to output format
52
+ tools: [csv_tool, json_tool, file_tool]
53
+ verbose: true
54
+
55
+ validator:
56
+ name: DataValidator
57
+ role: QA Engineer
58
+ goal: Validate transformed data
59
+ backstory: |
60
+ I am a data quality specialist who ensures transformed data
61
+ meets all requirements and constraints. I catch issues before
62
+ they cause problems downstream.
63
+ instructions: |
64
+ Validate the transformed data:
65
+ - Schema compliance check
66
+ - Data type correctness
67
+ - Required field presence
68
+ - Value range constraints
69
+ Return validation report.
70
+ verbose: true
@@ -0,0 +1,92 @@
1
+ name: Data Transformer
2
+ description: Transform data between formats with AI-assisted schema mapping
3
+
4
+ workflow:
5
+ verbose: true
6
+ stream: true
7
+
8
+ variables:
9
+ input: "{{input}}"
10
+ output: "{{output}}"
11
+ target_schema: "{{target_schema}}"
12
+ validation: "{{validation}}"
13
+ sample_size: "{{sample_size}}"
14
+
15
+ agents:
16
+ schema_inferrer:
17
+ name: SchemaInferrer
18
+ role: Data Analyst
19
+ goal: Infer source data schema
20
+ instructions: |
21
+ Analyze the input file and infer its schema:
22
+ - Detect file format (CSV, JSON, XML, Excel)
23
+ - Sample {{sample_size}} rows for analysis
24
+ - Identify column names and data types
25
+ - Detect patterns (dates, emails, phones, etc.)
26
+ - Note any data quality issues
27
+ Return a structured schema definition.
28
+ tools: [csv_tool, json_tool, file_tool]
29
+
30
+ mapper:
31
+ name: SchemaMapper
32
+ role: Data Engineer
33
+ goal: Create field mappings between schemas
34
+ instructions: |
35
+ Map source fields to target schema:
36
+ - Match by name similarity
37
+ - Match by data type compatibility
38
+ - Match by sample value patterns
39
+ - Flag ambiguous mappings for review
40
+ - Suggest transformations needed
41
+ Return a mapping specification.
42
+
43
+ transformer:
44
+ name: DataTransformer
45
+ role: ETL Engineer
46
+ goal: Execute data transformation
47
+ instructions: |
48
+ Transform data according to mapping:
49
+ - Read source data
50
+ - Apply field mappings
51
+ - Execute transformations (type conversion, formatting)
52
+ - Handle null values and defaults
53
+ - Write to output format
54
+ tools: [csv_tool, json_tool, file_tool]
55
+
56
+ validator:
57
+ name: DataValidator
58
+ role: QA Engineer
59
+ goal: Validate transformed data
60
+ instructions: |
61
+ Validate the transformed data:
62
+ - Schema compliance check
63
+ - Data type correctness
64
+ - Required field presence
65
+ - Value range constraints
66
+ - Referential integrity (if applicable)
67
+ Return validation report.
68
+
69
+ steps:
70
+ - name: infer_schema
71
+ agent: schema_inferrer
72
+ action: "Analyze source file and infer schema: {{input}}"
73
+ output_variable: source_schema
74
+
75
+ - name: create_mapping
76
+ agent: mapper
77
+ action: "Create mapping to target: {{target_schema}}"
78
+ context_from: [infer_schema]
79
+ output_variable: field_mapping
80
+
81
+ - name: transform
82
+ agent: transformer
83
+ action: "Transform data and write to: {{output}}"
84
+ context_from: [create_mapping]
85
+ output_variable: transform_result
86
+
87
+ - name: validate
88
+ agent: validator
89
+ action: "Validate output against schema"
90
+ context_from: [transform]
91
+ condition: "{{validation}}"
92
+ output_variable: validation_report