videobook 0.0.0-stage → 0.1.0

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 (558) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE +21 -0
  3. package/README.md +133 -2
  4. package/bin/videobook.js +7 -0
  5. package/dist/acestep/client.js +203 -0
  6. package/dist/acestep/config.js +62 -0
  7. package/dist/acestep/errors.js +8 -0
  8. package/dist/acestep/process.js +175 -0
  9. package/dist/alive-captions/analyze.js +117 -0
  10. package/dist/alive-captions/audio.js +179 -0
  11. package/dist/alive-captions/frames.js +59 -0
  12. package/dist/alive-captions/model.js +37 -0
  13. package/dist/alive-captions/schema.js +49 -0
  14. package/dist/alive-captions/track.js +9 -0
  15. package/dist/api-key.js +33 -0
  16. package/dist/app-state.js +56 -0
  17. package/dist/app.js +257 -0
  18. package/dist/archive-b2.js +332 -0
  19. package/dist/archive-store.js +169 -0
  20. package/dist/artifact-label.js +36 -0
  21. package/dist/artifact-refs.js +49 -0
  22. package/dist/asset-tag-extraction.js +169 -0
  23. package/dist/asset-tags.js +228 -0
  24. package/dist/asset-usage.js +23 -0
  25. package/dist/audio-cue.js +71 -0
  26. package/dist/audio-encoding.js +32 -0
  27. package/dist/audio-sync-request.js +1 -0
  28. package/dist/audio-sync.js +223 -0
  29. package/dist/audio-trim-range.js +31 -0
  30. package/dist/book-context.js +31 -0
  31. package/dist/book-manager.js +374 -0
  32. package/dist/catalog-gc.js +26 -0
  33. package/dist/chain-executor.js +815 -0
  34. package/dist/chain-generation.js +115 -0
  35. package/dist/chain-plan.js +746 -0
  36. package/dist/chain-step-review.js +60 -0
  37. package/dist/character-name.js +25 -0
  38. package/dist/chat-generation-routing.js +73 -0
  39. package/dist/chat-generation-settings.js +78 -0
  40. package/dist/chat-models.js +44 -0
  41. package/dist/chat-prompt-rewrite.js +67 -0
  42. package/dist/chat-router.js +628 -0
  43. package/dist/chat-view-actions.js +49 -0
  44. package/dist/cli/args.js +192 -0
  45. package/dist/cli/doctor-command.js +255 -0
  46. package/dist/cli/entry.js +2 -0
  47. package/dist/cli/main.js +91 -0
  48. package/dist/cli/mcp-command.js +82 -0
  49. package/dist/cli/mcp-relay.js +51 -0
  50. package/dist/cli/open-browser.js +14 -0
  51. package/dist/cli/run-command.js +187 -0
  52. package/dist/cli/serve-command.js +57 -0
  53. package/dist/cli/stdio-guard.js +8 -0
  54. package/dist/cold-open-model.js +7 -0
  55. package/dist/cold-open.js +79 -0
  56. package/dist/command-reference.js +95 -0
  57. package/dist/content-store.js +74 -0
  58. package/dist/cost.js +8 -0
  59. package/dist/crop-geometry.js +23 -0
  60. package/dist/dancing-workflow.js +446 -0
  61. package/dist/data-home.js +44 -0
  62. package/dist/diagnostics.js +109 -0
  63. package/dist/dialog-quality.js +34 -0
  64. package/dist/downloads-dest.js +56 -0
  65. package/dist/editing-moments.js +194 -0
  66. package/dist/elevenlabs-audio-extension.js +66 -0
  67. package/dist/engine.js +54 -0
  68. package/dist/env-secrets.js +184 -0
  69. package/dist/ffmpeg-binary.js +12 -0
  70. package/dist/ffmpeg.js +425 -0
  71. package/dist/ffprobe-binary.js +55 -0
  72. package/dist/forget-asset.js +216 -0
  73. package/dist/frame-utils.js +27 -0
  74. package/dist/generation-credit-error.js +11 -0
  75. package/dist/generation-input-mentions.js +117 -0
  76. package/dist/generation-input-policy.js +68 -0
  77. package/dist/generation-reference-mentions.js +97 -0
  78. package/dist/goal-characters.js +49 -0
  79. package/dist/goal-plan-v3.js +273 -0
  80. package/dist/goal-plan.js +220 -0
  81. package/dist/goal-planner-prompt.js +28 -0
  82. package/dist/goal-prompt-budget.js +4 -0
  83. package/dist/goal-reference-images.js +25 -0
  84. package/dist/goal-state.js +261 -0
  85. package/dist/goal-stills.js +153 -0
  86. package/dist/goal-store.js +144 -0
  87. package/dist/goal-styles.js +144 -0
  88. package/dist/goal-v3-runtime.js +157 -0
  89. package/dist/guides/character_schema_guide.md +70 -0
  90. package/dist/guides/gpt_image_2_5_prompting_guide.md +21 -0
  91. package/dist/guides/grok_imagine_prompting_guide.md +72 -0
  92. package/dist/guides/image_reproduction_guide.md +84 -0
  93. package/dist/guides/kling_3_0_prompting_guide.md +136 -0
  94. package/dist/guides/nano_banana_pro_prompting_guide.md +28 -0
  95. package/dist/guides/seedance_2_prompting_guide.md +172 -0
  96. package/dist/http-access.js +49 -0
  97. package/dist/http-byte-range.js +31 -0
  98. package/dist/image-compress.js +77 -0
  99. package/dist/image-edit-default.js +1 -0
  100. package/dist/image-edit-models.js +41 -0
  101. package/dist/image-edit-settings.js +11 -0
  102. package/dist/image-region-edit.js +32 -0
  103. package/dist/image-subject-map.js +523 -0
  104. package/dist/image.js +46 -0
  105. package/dist/index.js +12 -0
  106. package/dist/job-deadline.js +60 -0
  107. package/dist/jobs/_alibaba-upload.js +30 -0
  108. package/dist/jobs/_audio-chunks.js +31 -0
  109. package/dist/jobs/_download-into-asset.js +15 -0
  110. package/dist/jobs/_fal-shared.js +22 -0
  111. package/dist/jobs/_fal-upload.js +35 -0
  112. package/dist/jobs/_image-edit-adapter.js +213 -0
  113. package/dist/jobs/_kie-poll.js +119 -0
  114. package/dist/jobs/_kie-upload.js +32 -0
  115. package/dist/jobs/_lease.js +163 -0
  116. package/dist/jobs/_persist-output.js +19 -0
  117. package/dist/jobs/_storage-retry.js +21 -0
  118. package/dist/jobs/_transcribe.js +245 -0
  119. package/dist/jobs/_translate-transcript.js +270 -0
  120. package/dist/jobs/analyze-alive-captions.js +10 -0
  121. package/dist/jobs/analyze-editing-moments.js +104 -0
  122. package/dist/jobs/analyze-jokes.js +143 -0
  123. package/dist/jobs/analyze-keyword-placement.js +155 -0
  124. package/dist/jobs/analyze-music.js +14 -0
  125. package/dist/jobs/analyze-video.js +282 -0
  126. package/dist/jobs/apply-cuts.js +83 -0
  127. package/dist/jobs/apply-sfx.js +107 -0
  128. package/dist/jobs/archive-clip.js +457 -0
  129. package/dist/jobs/assemble-goal.js +98 -0
  130. package/dist/jobs/audio-boost.js +71 -0
  131. package/dist/jobs/audio-mix.js +161 -0
  132. package/dist/jobs/backfill-asset-tags.js +144 -0
  133. package/dist/jobs/burn-watermark.js +316 -0
  134. package/dist/jobs/change-video-speed.js +176 -0
  135. package/dist/jobs/clean-video-audio.js +207 -0
  136. package/dist/jobs/cold-open.js +166 -0
  137. package/dist/jobs/combine-goal.js +108 -0
  138. package/dist/jobs/complete-provider-task.js +185 -0
  139. package/dist/jobs/copy-library-asset.js +33 -0
  140. package/dist/jobs/cost-estimate-assessment.js +113 -0
  141. package/dist/jobs/crop-image.js +47 -0
  142. package/dist/jobs/crop-video.js +71 -0
  143. package/dist/jobs/describe-image.js +181 -0
  144. package/dist/jobs/detect-scenes.js +33 -0
  145. package/dist/jobs/doctor-fix.js +100 -0
  146. package/dist/jobs/download-video.js +426 -0
  147. package/dist/jobs/enqueue-search-index.js +24 -0
  148. package/dist/jobs/even-split.js +122 -0
  149. package/dist/jobs/export-sequence.js +365 -0
  150. package/dist/jobs/extend-audio.js +229 -0
  151. package/dist/jobs/extract-audio.js +72 -0
  152. package/dist/jobs/extract-frame.js +58 -0
  153. package/dist/jobs/extract-notebook-audio.js +82 -0
  154. package/dist/jobs/extract-notebook-frame.js +93 -0
  155. package/dist/jobs/extract-video-clip.js +8 -0
  156. package/dist/jobs/extract-video-poster.js +55 -0
  157. package/dist/jobs/extract-waveform.js +25 -0
  158. package/dist/jobs/finish-goal.js +255 -0
  159. package/dist/jobs/forget-asset.js +11 -0
  160. package/dist/jobs/generate-acestep-cover.js +219 -0
  161. package/dist/jobs/generate-media.js +70 -0
  162. package/dist/jobs/image-subjects.js +1059 -0
  163. package/dist/jobs/index.js +18 -0
  164. package/dist/jobs/inject-first-frame.js +175 -0
  165. package/dist/jobs/isolate-vocals.js +69 -0
  166. package/dist/jobs/kie-paygate.js +177 -0
  167. package/dist/jobs/label-music-sections.js +5 -0
  168. package/dist/jobs/osg-placement.js +135 -0
  169. package/dist/jobs/pad-video.js +72 -0
  170. package/dist/jobs/plan-goal.js +97 -0
  171. package/dist/jobs/post-record.js +21 -0
  172. package/dist/jobs/post-to-x.js +21 -0
  173. package/dist/jobs/prepare-search-reference.js +190 -0
  174. package/dist/jobs/prepare-temporal-search.js +16 -0
  175. package/dist/jobs/process-audio.js +67 -0
  176. package/dist/jobs/process-image.js +58 -0
  177. package/dist/jobs/process-upload.js +166 -0
  178. package/dist/jobs/process-video.js +438 -0
  179. package/dist/jobs/register-all.js +161 -0
  180. package/dist/jobs/relayout-notebook.js +78 -0
  181. package/dist/jobs/remove-sound.js +299 -0
  182. package/dist/jobs/render-project.js +380 -0
  183. package/dist/jobs/render-qr-outro.js +138 -0
  184. package/dist/jobs/render-timeline.js +283 -0
  185. package/dist/jobs/repair-search-indexes.js +42 -0
  186. package/dist/jobs/replace-video-audio.js +64 -0
  187. package/dist/jobs/restore-archive-clip.js +53 -0
  188. package/dist/jobs/reverse-video.js +53 -0
  189. package/dist/jobs/rewrite-script.js +173 -0
  190. package/dist/jobs/run-notebook.js +3335 -0
  191. package/dist/jobs/semantic-index.js +797 -0
  192. package/dist/jobs/smooth-scene-concat.js +257 -0
  193. package/dist/jobs/splice-video.js +280 -0
  194. package/dist/jobs/split-video.js +127 -0
  195. package/dist/jobs/suggest-cuts.js +149 -0
  196. package/dist/jobs/suggest-sfx.js +135 -0
  197. package/dist/jobs/sync-video-to-audio.js +329 -0
  198. package/dist/jobs/tag-asset.js +266 -0
  199. package/dist/jobs/task-failure.js +16 -0
  200. package/dist/jobs/timewarp-video.js +152 -0
  201. package/dist/jobs/transcribe-video-audio.js +117 -0
  202. package/dist/jobs/transcribe.js +35 -0
  203. package/dist/jobs/translate-transcript.js +55 -0
  204. package/dist/jobs/trim-audio.js +133 -0
  205. package/dist/jobs/trim-video.js +291 -0
  206. package/dist/jobs/xai-paygate.js +26 -0
  207. package/dist/keyword-placement-cache.js +74 -0
  208. package/dist/lazy-render.js +142 -0
  209. package/dist/library-browse.js +78 -0
  210. package/dist/lightning-defaults.js +206 -0
  211. package/dist/load-env.js +9 -0
  212. package/dist/local-search-models.js +206 -0
  213. package/dist/local-upload.js +318 -0
  214. package/dist/logger.js +69 -0
  215. package/dist/media/adapters/alibaba.js +20 -0
  216. package/dist/media/adapters/elevenlabs.js +58 -0
  217. package/dist/media/adapters/fal.js +45 -0
  218. package/dist/media/adapters/index.js +26 -0
  219. package/dist/media/adapters/kie.js +120 -0
  220. package/dist/media/adapters/pending.js +21 -0
  221. package/dist/media/adapters/types.js +5 -0
  222. package/dist/media/adapters/xai.js +18 -0
  223. package/dist/media/catalog.js +236 -0
  224. package/dist/media/complete.js +191 -0
  225. package/dist/media/cost.js +45 -0
  226. package/dist/media/descriptor.js +157 -0
  227. package/dist/media/endpoints.js +11 -0
  228. package/dist/media/frame-options.js +18 -0
  229. package/dist/media/insert-video-timing.js +17 -0
  230. package/dist/media/json-schema.js +75 -0
  231. package/dist/media/legacy-task-types.js +129 -0
  232. package/dist/media/listing.js +24 -0
  233. package/dist/media/model-id.js +14 -0
  234. package/dist/media/preview.js +86 -0
  235. package/dist/media/prompt-dialects.js +65 -0
  236. package/dist/media/ref-fields.js +106 -0
  237. package/dist/media/refs.js +131 -0
  238. package/dist/media/request.js +188 -0
  239. package/dist/media/types.js +6 -0
  240. package/dist/media/wire.js +161 -0
  241. package/dist/media-library.js +535 -0
  242. package/dist/media-output-path.js +33 -0
  243. package/dist/multyculty-workflow.js +757 -0
  244. package/dist/notebook-action-catalog.js +608 -0
  245. package/dist/notebook-cell-outputs.js +726 -0
  246. package/dist/notebook-credit-retry.js +45 -0
  247. package/dist/notebook-fixtures.js +8 -0
  248. package/dist/notebook-generation-contract.js +77 -0
  249. package/dist/notebook-generation-controls.js +145 -0
  250. package/dist/notebook-goal-layout.js +40 -0
  251. package/dist/notebook-graph.js +37 -0
  252. package/dist/notebook-image-edit.js +84 -0
  253. package/dist/notebook-initial-generation-prompt.js +222 -0
  254. package/dist/notebook-live-analysis.js +941 -0
  255. package/dist/notebook-media-ops.js +579 -0
  256. package/dist/notebook-mutations.js +20 -0
  257. package/dist/notebook-placement.js +41 -0
  258. package/dist/notebook-provider-failure.js +87 -0
  259. package/dist/notebook-published-post.js +26 -0
  260. package/dist/notebook-reference-resolver.js +227 -0
  261. package/dist/notebook-relayout.js +270 -0
  262. package/dist/notebook-run-plan.js +519 -0
  263. package/dist/notebook-shots.js +162 -0
  264. package/dist/notebook-workflow.js +856 -0
  265. package/dist/openai-intelligence.js +99 -0
  266. package/dist/original-media-file.js +12 -0
  267. package/dist/osg-assets.js +36 -0
  268. package/dist/osg-placement-cache.js +64 -0
  269. package/dist/osg-settings.js +27 -0
  270. package/dist/paid-tools.js +22 -0
  271. package/dist/platform-guidance.js +26 -0
  272. package/dist/posts/dropbox-auth.js +91 -0
  273. package/dist/posts/dropbox-upload.js +132 -0
  274. package/dist/posts/icloud-drive.js +134 -0
  275. package/dist/posts/icloud-status.js +64 -0
  276. package/dist/posts/post-contract.js +2 -0
  277. package/dist/posts/post-copy-format.js +43 -0
  278. package/dist/posts/post-copy.js +193 -0
  279. package/dist/posts/post-folder.js +18 -0
  280. package/dist/posts/post-metrics.js +119 -0
  281. package/dist/posts/post-store.js +340 -0
  282. package/dist/posts/x-post-target.js +43 -0
  283. package/dist/preview-payload.js +90 -0
  284. package/dist/prompt-surfaces.js +22 -0
  285. package/dist/provider-prompt-transform.js +77 -0
  286. package/dist/provider-status-link.js +21 -0
  287. package/dist/provider-task-record.js +78 -0
  288. package/dist/provider-task-status.js +47 -0
  289. package/dist/provider-usage.js +294 -0
  290. package/dist/queue.js +806 -0
  291. package/dist/reference-video-duration.js +17 -0
  292. package/dist/remotion/BlurFillVideo.js +51 -0
  293. package/dist/remotion/KeywordGraphicsOverlay.js +68 -0
  294. package/dist/remotion/OsgOverlay.js +30 -0
  295. package/dist/remotion/QrOutroComposition.js +47 -0
  296. package/dist/remotion/RenderComposition.js +11 -0
  297. package/dist/remotion/browser.js +59 -0
  298. package/dist/remotion/constants.js +35 -0
  299. package/dist/remotion/index.js +66 -0
  300. package/dist/remotion/keyword-graphics.js +151 -0
  301. package/dist/remotion/keyword-placement.js +182 -0
  302. package/dist/remotion/osg-spec.js +198 -0
  303. package/dist/remotion/public/qr-outro-impact.wav +0 -0
  304. package/dist/remotion/qr-outro-audio.js +1 -0
  305. package/dist/remotion/qr-outro-spec.js +211 -0
  306. package/dist/remotion/shared-bundle.js +37 -0
  307. package/dist/remotion/subtitles/AliveCaptions.js +83 -0
  308. package/dist/remotion/subtitles/Highlight.js +58 -0
  309. package/dist/remotion/subtitles/Impact.js +67 -0
  310. package/dist/remotion/subtitles/SubtitleOverlay.js +9 -0
  311. package/dist/remotion/subtitles/alive-layout.js +321 -0
  312. package/dist/remotion/subtitles/alive-types.js +17 -0
  313. package/dist/remotion/subtitles/chunker.js +68 -0
  314. package/dist/remotion/subtitles/segments.js +42 -0
  315. package/dist/remotion/subtitles/styles.js +4 -0
  316. package/dist/remotion/subtitles/types.js +1 -0
  317. package/dist/remotion/util.js +18 -0
  318. package/dist/remotion-cancellation.js +15 -0
  319. package/dist/rename-helpers.js +204 -0
  320. package/dist/rhythm/analyze.js +128 -0
  321. package/dist/rhythm/contract.js +14 -0
  322. package/dist/rhythm/draft-model.js +19 -0
  323. package/dist/rhythm/energy.js +133 -0
  324. package/dist/rhythm/fft.js +44 -0
  325. package/dist/rhythm/model.js +71 -0
  326. package/dist/rhythm/music-analysis.js +124 -0
  327. package/dist/rhythm/music-draft.js +261 -0
  328. package/dist/rhythm/onset.js +101 -0
  329. package/dist/rhythm/run-worker.js +51 -0
  330. package/dist/rhythm/score.js +47 -0
  331. package/dist/rhythm/section-labels.js +168 -0
  332. package/dist/rhythm/sequence-rhythm.js +67 -0
  333. package/dist/rhythm/synthesize.js +103 -0
  334. package/dist/rhythm/timing.js +98 -0
  335. package/dist/rhythm/track.js +320 -0
  336. package/dist/rhythm/visual-fit.js +4 -0
  337. package/dist/rhythm/worker.js +25 -0
  338. package/dist/scene-detect.js +200 -0
  339. package/dist/scene-transition.js +12 -0
  340. package/dist/scheduled-posts.js +200 -0
  341. package/dist/search-index-coverage.js +13 -0
  342. package/dist/search-index-media.js +71 -0
  343. package/dist/search-reference-store.js +60 -0
  344. package/dist/search-scoring.js +17 -0
  345. package/dist/serve.js +150 -0
  346. package/dist/server-lock.js +143 -0
  347. package/dist/server.js +42 -0
  348. package/dist/srt.js +16 -0
  349. package/dist/tag-backfill-state.js +121 -0
  350. package/dist/tag-settings.js +30 -0
  351. package/dist/tag-vocabulary.js +237 -0
  352. package/dist/test-queue-cleanup.js +1 -0
  353. package/dist/time-parse.js +50 -0
  354. package/dist/timeline-helpers.js +554 -0
  355. package/dist/timewarp.js +87 -0
  356. package/dist/tools/_image-inputs.js +9 -0
  357. package/dist/tools/_media-refs.js +84 -0
  358. package/dist/tools/_shared.js +59 -0
  359. package/dist/tools/_suggest-shared.js +279 -0
  360. package/dist/tools/add-timeline-audio.js +73 -0
  361. package/dist/tools/alive-captions.js +157 -0
  362. package/dist/tools/analyze-jokes.js +56 -0
  363. package/dist/tools/analyze-video.js +66 -0
  364. package/dist/tools/animate-keywords.js +217 -0
  365. package/dist/tools/api-status.js +42 -0
  366. package/dist/tools/application-commands.js +34 -0
  367. package/dist/tools/apply-cuts.js +112 -0
  368. package/dist/tools/apply-sfx.js +152 -0
  369. package/dist/tools/apply-watermark.js +670 -0
  370. package/dist/tools/archive-clip.js +74 -0
  371. package/dist/tools/asset-history.js +61 -0
  372. package/dist/tools/asset-manifest.js +24 -0
  373. package/dist/tools/asset-tags.js +151 -0
  374. package/dist/tools/assign-slot.js +97 -0
  375. package/dist/tools/audio-boost.js +107 -0
  376. package/dist/tools/audio-mix.js +121 -0
  377. package/dist/tools/book-usage.js +16 -0
  378. package/dist/tools/chain.js +136 -0
  379. package/dist/tools/change-video-speed.js +105 -0
  380. package/dist/tools/chat-history.js +5 -0
  381. package/dist/tools/chat.js +848 -0
  382. package/dist/tools/clean-video-audio.js +97 -0
  383. package/dist/tools/clear-failed-tasks.js +66 -0
  384. package/dist/tools/cold-open.js +114 -0
  385. package/dist/tools/command-plan.js +1680 -0
  386. package/dist/tools/commands.js +1666 -0
  387. package/dist/tools/concat-images.js +236 -0
  388. package/dist/tools/connect-service.js +55 -0
  389. package/dist/tools/copy-file-to-clipboard.js +58 -0
  390. package/dist/tools/create-character.js +114 -0
  391. package/dist/tools/create-qart.js +253 -0
  392. package/dist/tools/create-qr-outro.js +149 -0
  393. package/dist/tools/create-qrbtf.js +215 -0
  394. package/dist/tools/create-watermark.js +97 -0
  395. package/dist/tools/crop-asset.js +18 -0
  396. package/dist/tools/crop-image.js +120 -0
  397. package/dist/tools/crop-video.js +97 -0
  398. package/dist/tools/delete-asset.js +104 -0
  399. package/dist/tools/describe-image.js +69 -0
  400. package/dist/tools/detect-scenes.js +44 -0
  401. package/dist/tools/doctor.js +126 -0
  402. package/dist/tools/download-video.js +114 -0
  403. package/dist/tools/duplicate-asset.js +184 -0
  404. package/dist/tools/edit-timeline.js +59 -0
  405. package/dist/tools/editing-moments.js +105 -0
  406. package/dist/tools/estimate-cost.js +171 -0
  407. package/dist/tools/even-split.js +295 -0
  408. package/dist/tools/export-asset-file.js +22 -0
  409. package/dist/tools/export-asset.js +140 -0
  410. package/dist/tools/export-sequence.js +250 -0
  411. package/dist/tools/export-to-downloads.js +54 -0
  412. package/dist/tools/export-transcript-srt.js +79 -0
  413. package/dist/tools/extend-audio.js +100 -0
  414. package/dist/tools/extract-audio.js +174 -0
  415. package/dist/tools/extract-frame.js +108 -0
  416. package/dist/tools/extract-notebook-audio.js +173 -0
  417. package/dist/tools/extract-notebook-frame.js +160 -0
  418. package/dist/tools/extract-video-clip.js +101 -0
  419. package/dist/tools/generate-media.js +157 -0
  420. package/dist/tools/generation-payload.js +48 -0
  421. package/dist/tools/get-timeline.js +12 -0
  422. package/dist/tools/get-watermark-config.js +38 -0
  423. package/dist/tools/goal.js +644 -0
  424. package/dist/tools/image-subjects.js +711 -0
  425. package/dist/tools/index.js +323 -0
  426. package/dist/tools/inject-first-frame.js +154 -0
  427. package/dist/tools/invert-image.js +70 -0
  428. package/dist/tools/isolate-vocals.js +66 -0
  429. package/dist/tools/list-assets.js +98 -0
  430. package/dist/tools/list-cell-generations.js +225 -0
  431. package/dist/tools/list-elevenlabs-voices.js +163 -0
  432. package/dist/tools/log-wrapper.js +29 -0
  433. package/dist/tools/make-cover-song.js +95 -0
  434. package/dist/tools/mark-asset-seen.js +23 -0
  435. package/dist/tools/media-library.js +245 -0
  436. package/dist/tools/move-timeline-audio.js +35 -0
  437. package/dist/tools/music-analysis.js +60 -0
  438. package/dist/tools/music-draft.js +29 -0
  439. package/dist/tools/pad-video.js +87 -0
  440. package/dist/tools/post-record.js +83 -0
  441. package/dist/tools/post.js +168 -0
  442. package/dist/tools/prompt-history.js +164 -0
  443. package/dist/tools/provider-key-status.js +248 -0
  444. package/dist/tools/qrbtf-render.js +849 -0
  445. package/dist/tools/read-asset-metadata.js +26 -0
  446. package/dist/tools/read-file-at-commit.js +29 -0
  447. package/dist/tools/read-transcript.js +41 -0
  448. package/dist/tools/reconcile-project-work.js +1452 -0
  449. package/dist/tools/recover-asset.js +28 -0
  450. package/dist/tools/remove-sound.js +72 -0
  451. package/dist/tools/remove-timeline-audio.js +34 -0
  452. package/dist/tools/remove-timeline-slot.js +40 -0
  453. package/dist/tools/rename-all.js +434 -0
  454. package/dist/tools/rename-asset.js +34 -0
  455. package/dist/tools/render-settings.js +47 -0
  456. package/dist/tools/render-timeline.js +120 -0
  457. package/dist/tools/render.js +384 -0
  458. package/dist/tools/reorder-character-images.js +45 -0
  459. package/dist/tools/replace-video-audio.js +133 -0
  460. package/dist/tools/restore-archive-clips.js +209 -0
  461. package/dist/tools/restore-asset-version.js +37 -0
  462. package/dist/tools/retry-generation.js +54 -0
  463. package/dist/tools/reverse-video.js +74 -0
  464. package/dist/tools/rewrite-prompt.js +388 -0
  465. package/dist/tools/rewrite-script.js +67 -0
  466. package/dist/tools/schema-from-apicity.js +66 -0
  467. package/dist/tools/search-archive.js +150 -0
  468. package/dist/tools/semantic-search.js +1214 -0
  469. package/dist/tools/sequence-rhythm.js +43 -0
  470. package/dist/tools/set-character-metadata.js +84 -0
  471. package/dist/tools/set-env-secret.js +40 -0
  472. package/dist/tools/set-osg.js +143 -0
  473. package/dist/tools/show-folder.js +37 -0
  474. package/dist/tools/smooth-scene-concat.js +122 -0
  475. package/dist/tools/splice-video.js +149 -0
  476. package/dist/tools/split-video.js +202 -0
  477. package/dist/tools/suggest-cuts.js +45 -0
  478. package/dist/tools/suggest-sfx.js +43 -0
  479. package/dist/tools/sync-video-to-audio.js +115 -0
  480. package/dist/tools/tag-backfill.js +177 -0
  481. package/dist/tools/timewarp-video.js +85 -0
  482. package/dist/tools/tool-def.js +1 -0
  483. package/dist/tools/tool-json-schema.js +116 -0
  484. package/dist/tools/transcribe.js +90 -0
  485. package/dist/tools/translate-subtitles.js +59 -0
  486. package/dist/tools/trim-audio.js +139 -0
  487. package/dist/tools/trim-video.js +168 -0
  488. package/dist/tools/update-script.js +25 -0
  489. package/dist/tools/update-timeline-audio.js +40 -0
  490. package/dist/tools/upload-file.js +41 -0
  491. package/dist/tools/verify-x-mentions.js +141 -0
  492. package/dist/tools/video-editing-command-contract.js +291 -0
  493. package/dist/tools/video-source-reference.js +30 -0
  494. package/dist/tools/video-time-input.js +18 -0
  495. package/dist/tools/videobook-domain.js +2006 -0
  496. package/dist/tools/wait-for-asset-ready.js +143 -0
  497. package/dist/tools/workspace-actions.js +54 -0
  498. package/dist/transcript-projection.js +202 -0
  499. package/dist/transcript-srt.js +33 -0
  500. package/dist/upload.js +76 -0
  501. package/dist/usage-providers.js +25 -0
  502. package/dist/video-analysis-projection.js +46 -0
  503. package/dist/video-poster.js +33 -0
  504. package/dist/video-proxy.js +99 -0
  505. package/dist/vision-regions.js +111 -0
  506. package/dist/voice-actions.js +90 -0
  507. package/dist/voice-audio.js +55 -0
  508. package/dist/voice-config.js +122 -0
  509. package/dist/voice-continuation.js +54 -0
  510. package/dist/voice-contract.js +1 -0
  511. package/dist/voice-http.js +145 -0
  512. package/dist/voice-reply-progress.js +55 -0
  513. package/dist/voice-session.js +992 -0
  514. package/dist/watermark-badge.js +259 -0
  515. package/dist/watermark-config.js +111 -0
  516. package/dist/watermark-handle-position.js +55 -0
  517. package/dist/watermark-platform.js +15 -0
  518. package/dist/watermark-timing.js +16 -0
  519. package/dist/workspace-action-catalog.js +315 -0
  520. package/dist/workspace-action-contract.js +21 -0
  521. package/dist/workspace-action-groups.js +98 -0
  522. package/dist/workspace-action-surfaces.js +7 -0
  523. package/dist/x/account.js +88 -0
  524. package/dist/x/authenticated-handle.js +30 -0
  525. package/dist/x/oauth-flow.js +191 -0
  526. package/dist/x/post-contract.js +1 -0
  527. package/dist/x/post-metadata.js +44 -0
  528. package/dist/x/post-to-x.js +456 -0
  529. package/dist/x/published-post-cell.js +90 -0
  530. package/dist/x/x-tokens.js +69 -0
  531. package/dist/zod-slots.js +334 -0
  532. package/package.json +92 -4
  533. package/ui/assets/alive-captions-BWb5nLKj.css +1 -0
  534. package/ui/assets/alive-captions-DPEr1nKM.js +1 -0
  535. package/ui/assets/confirm-bodies-D8ouHXKy.js +1 -0
  536. package/ui/assets/confirm-bodies-DrMhaXC6.css +1 -0
  537. package/ui/assets/fullscreen-B7nw4YbE.js +1 -0
  538. package/ui/assets/goal-ui-DK-xTCK0.js +2 -0
  539. package/ui/assets/goal-ui-DXdUM2KF.css +1 -0
  540. package/ui/assets/index-DzPAnCUj.css +1 -0
  541. package/ui/assets/index-kS1905s5.js +37 -0
  542. package/ui/assets/inspector-MlzQbTVo.js +1 -0
  543. package/ui/assets/jobs-ui-CoinOWx0.js +1 -0
  544. package/ui/assets/music-video-Cbe80kmQ.js +1 -0
  545. package/ui/assets/music-video-DPaiKKEq.css +1 -0
  546. package/ui/assets/ui-Oirr9VOf.css +1 -0
  547. package/ui/assets/ui-xo_Y1yQg.js +2 -0
  548. package/ui/assets/vendor-D2rfiZ5j.css +1 -0
  549. package/ui/assets/vendor-DfTCWgKm.js +19 -0
  550. package/ui/assets/vendor-flow-BXbeWxW7.js +7 -0
  551. package/ui/assets/vendor-flow-BnuhLJ6X.css +1 -0
  552. package/ui/assets/vendor-icons-CGqhCIXV.js +1 -0
  553. package/ui/assets/vendor-mcp-BTlEJcHV.js +67 -0
  554. package/ui/assets/vendor-react-Dj7D1fD4.js +9 -0
  555. package/ui/assets/vendor-remotion-CH1HXrlc.js +95 -0
  556. package/ui/assets/videobook-Qlp9HQFu.js +20 -0
  557. package/ui/favicon.svg +8 -0
  558. package/ui/index.html +126 -0
@@ -0,0 +1,70 @@
1
+ # Character extraction guide
2
+
3
+ You are an expert visual analyst. Look at the photograph and emit a structured **character profile** that downstream image-generation models can use to re-render this same identity across different garments, poses, and scenes.
4
+
5
+ Return ONLY a JSON object matching the schema below. Do NOT wrap it in markdown fences or prose.
6
+
7
+ ## Subject kinds
8
+
9
+ Pick exactly one `subject_kind` from this 4-way set, based on what the photograph shows:
10
+
11
+ - `female` — a human female-presenting subject.
12
+ - `male` — a human male-presenting subject.
13
+ - `animal` — a non-human living subject (cat, dog, horse, bird, etc.).
14
+ - `other` — anything else: an object, sculpture, doll, paper figure, mascot costume, abstract form, etc.
15
+
16
+ The schema branches on this field. **Fill the human field set OR the freeform `other` field — never both.**
17
+
18
+ ## Field rules — `female` / `male`
19
+
20
+ For human subjects, fill every required field with **concrete visual descriptors**. Image generators reproduce what they can render — anatomical structure, color, texture, geometry. They don't reproduce vibes from vague adjectives.
21
+
22
+ - ✅ "hooded almond-shaped hazel eyes with thick lower lashes"
23
+ - ❌ "kind, intelligent eyes"
24
+ - ✅ "shoulder-length wavy chestnut hair, side-parted, slight frizz at the temples"
25
+ - ❌ "messy brown hair"
26
+
27
+ **Body measurements (`bust`, `waist`, `hips`) are the primary signal for re-rendering body shape consistently.** The `bust` field is the chest/bust geometry field: for `male` describe chest width, pectoral shape, and ribcage taper; for `female` describe bust size, cup estimate, distribution, and placement. Estimate concrete shape descriptors from the photograph — exact numeric measurements aren't usually possible, but chest width, cup size, waist taper, and hip width almost always are. Face / hair / eyes / skin remain useful but are **secondary** to body measurements.
28
+
29
+ If a detail isn't visible, give the best plausible reading. Never write "unknown" — pick a concrete descriptor.
30
+
31
+ ## Field rules — `animal` / `other`
32
+
33
+ For animal and other subjects, fill **only** the freeform `other` field — a single dense description that downstream models can use to re-render the same subject. Pack it with concrete visual detail.
34
+
35
+ - For `animal`: species, breed, color, coat/fur length and texture, body proportions, distinguishing markings, eye color, ear/tail shape. Example: `"white domestic longhair cat, slender long-bodied build, fluffy medium-long silky fur, heterochromatic blue and golden eyes, pointed ears, plumed tail"`.
36
+ - For `other`: what the subject is, materials, surface texture, color, structural form, distinguishing features. Example: `"origami paper man, folded white cardstock with sharp creases, blank flat face, articulated arms and legs, ~30cm tall"`.
37
+
38
+ Do not fill the human fields (`age`, `ethnicity`, `height`, `build`, `bust`, `waist`, `hips`, `face`, `hair`, `eyes`, `skin`) for `animal` or `other`. Leave them out of the JSON.
39
+
40
+ ## Schema
41
+
42
+ ```json
43
+ {
44
+ "name": "string — optional, leave blank or omit (the user fills this in)",
45
+ "subject_kind": "string — REQUIRED. One of: 'female', 'male', 'animal', 'other'.",
46
+
47
+ // Required ONLY when subject_kind is 'female' or 'male' — omit otherwise.
48
+ "age": "string — e.g. 'early 20s', 'mid-30s', '47'",
49
+ "ethnicity": "string — e.g. 'East Asian', 'Black / West African heritage', 'Latina', 'White / Northern European'",
50
+ "height": "string — height estimate, include a numeric estimate when possible (e.g. 'tall, ~6'0\" / 183cm')",
51
+ "build": "string — body build, e.g. 'lean athletic', 'slender', 'stocky compact'",
52
+ "bust": "string — chest/bust size + shape. For 'male': chest width, pectoral fullness, ribcage taper. For 'female': cup size estimate + distribution.",
53
+ "waist": "string — waist shape and taper",
54
+ "hips": "string — hip shape and width",
55
+ "face": "string — face structure. 1-2 sentences.",
56
+ "hair": "string — color, length, texture, density, hairline; describe the reference hairstyle itself. 1 sentence.",
57
+ "eyes": "string — color, shape, lash density, brow shape. 1 sentence.",
58
+ "skin": "string — skin tone and texture. 1 sentence.",
59
+
60
+ // Required ONLY when subject_kind is 'animal' or 'other' — omit for 'female'/'male'.
61
+ "other": "string — a single dense freeform description packed with concrete visual detail. 1-3 sentences."
62
+ }
63
+ ```
64
+
65
+ ## Constraints
66
+
67
+ - Each descriptive field is at most 2 short sentences (3 for `other`).
68
+ - Total JSON must be under 2000 characters.
69
+ - Do NOT include a `name` value — leave it empty or omit the key. The name is user-owned.
70
+ - Do NOT speculate about profession, mood beyond the photo, or relationships.
@@ -0,0 +1,21 @@
1
+ ---
2
+ source: "https://developers.openai.com/api/docs/guides/image-generation"
3
+ models: "GPT Image 2.5 Sunburst and Flare"
4
+ ---
5
+
6
+ # GPT Image 2.5 Prompting Guide
7
+
8
+ Sunburst is the default for precise image editing. Flare is available for fast everyday generation. Both support text prompts and reference images.
9
+
10
+ Describe the subject, composition, setting, lighting, style, and intended use in clear language. Put essential constraints first. Quote any exact text that must appear and describe its placement and typography.
11
+
12
+ For edits, state what must change and what must remain: identity, pose, framing, colors, layout, or background. Refer to multiple inputs by their order, such as image 1 and image 2, and describe the role of each. Preserve the user's reference order and requested visual details.
13
+
14
+ Videobook uses Kie's GPT Image 2.5 endpoints. Supported controls come from Apicity:
15
+
16
+ - Up to 16 optional reference images; no references selects text-to-image.
17
+ - Aspect ratio: auto, 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, 27:16, 16:27, 9:8, or 8:9.
18
+ - Resolution: 1K, 2K, or 4K. Ratios 27:16, 16:27, 9:8, and 8:9 require 1K.
19
+ - Background: transparent, opaque, or auto.
20
+
21
+ Use only controls exposed by the selected provider. Keep aspect ratio, resolution, and background in their structured fields instead of adding API parameter names to the visual prompt. Do not add quality or NSFW-checker parameters to these Kie requests.
@@ -0,0 +1,72 @@
1
+ ---
2
+ source: "docs.x.ai/docs/guides/image-generation, docs.x.ai/docs/guides/video-generation, grokimagineai.net/prompt-guide, genaintel.com/guides/how-to-prompt-grok-imagine"
3
+ type: reference
4
+ date_added: 2026-02-14
5
+ ---
6
+
7
+ # Grok Imagine Prompting Guide
8
+
9
+ ## Summary
10
+
11
+ Grok Imagine is xAI's multimodal generation system built on the Aurora model, an autoregressive mixture-of-experts network trained on interleaved text and image data. It supports text-to-image, image editing, text-to-video, image-to-video, and video editing. Aurora excels at photorealistic rendering and precise instruction following. Grok Imagine responds best to natural language scene descriptions rather than keyword lists — write prompts like scene direction, not tag stacking.
12
+
13
+ ## Key Takeaways
14
+
15
+ - Prompts should read as natural scene descriptions, not keyword lists — the model interprets context intelligently
16
+ - **Text-to-video formula:** Subject + Movement + Scene + Shot, Style
17
+ - **Image-to-video formula:** Subject + Motion, Background + Motion, Camera + Motion
18
+ - **Five-part structure for images:** Scene (what's happening) + Style (aesthetic) + Mood (emotional direction) + Lighting (time/quality) + Camera (shot type/lens/focus)
19
+ - Place the main subject and action first — the model weights the opening of the prompt most heavily
20
+ - Image-to-video prompts should reduce static element descriptions since the model expands from the input image
21
+ - Negative prompts are ignored by the model — use explicit positive descriptions instead
22
+ - Camera movement commands understood: zoom, pan, tilt, surround, aerial, follow, handheld, lens switching
23
+ - Use "Shot Switch" to separate distinct camera angles in multi-shot sequences
24
+ - Select "unfixed lens" when including camera movement in video generation
25
+ - Intensity modifiers (quickly, violently, with large amplitude, powerfully, wildly) specify motion the model cannot infer from static images
26
+ - Iterative refinement works best when adjusting one variable per iteration (lighting OR camera OR mood)
27
+ - Batch generation supports up to 10 images per request for same-prompt variations
28
+
29
+ ## Style Keywords
30
+
31
+ - **Realism:** photoreal detail, natural lighting, documentary feel
32
+ - **Anime:** vibrant cel-shading, expressive linework
33
+ - **Painterly:** oil-painting texture, impressionist glow
34
+ - **Cinematic:** volumetric lighting, film grain, dynamic shadows
35
+ - **Surreal:** dreamlike distortion, ethereal glow
36
+ - **Graphic Novel:** inked outlines, bold contrasts, neon lines
37
+ - Also supports: pencil sketch, pop art, watercolor, impressionism
38
+
39
+ ## Composition Control
40
+
41
+ - Wide establishing shots for scale and context
42
+ - Low-angle shots for heroic or imposing framing
43
+ - Close-ups for emotion and texture
44
+ - Over-the-shoulder for conversation and tension
45
+ - Shallow depth of field for subject isolation
46
+
47
+ ## Emotion-Driven Language
48
+
49
+ The model responds strongly to atmospheric vocabulary: nostalgic, melancholic, electric, tense, dreamlike. Emotional tone shapes the entire output more than technical descriptors alone.
50
+
51
+ ## Technical Parameters
52
+
53
+ ### Image Generation
54
+ - **Aspect ratios:** 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, auto
55
+ - **Resolution:** 1K or 2K
56
+ - **Batch size:** up to 10 images per request
57
+ - **Pricing:** flat per-image (not token-based)
58
+
59
+ ### Video Generation
60
+ - **Duration:** 1–15 seconds (generation), up to 8.7 seconds (editing)
61
+ - **Resolution:** 480p or 720p
62
+ - **Aspect ratios:** 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3
63
+ - **Lens type:** fixed or unfixed (unfixed required for camera movement)
64
+
65
+ ## Common Mistakes
66
+
67
+ - Tag stacking instead of natural language (produces generic results)
68
+ - Weak verbs — use "surges," "unfurls," "erupts" instead of "standing," "sitting"
69
+ - Missing time-of-day or weather cues
70
+ - Vague aesthetic directions without specific style anchors
71
+ - Conflicting adjective overload
72
+ - Contradicting the input image in image-to-video prompts
@@ -0,0 +1,84 @@
1
+ # Image Reproduction Prompt Guide
2
+
3
+ Your output is fed directly into an image generator. Produce a prompt that — if given to a capable model with no other context — would reproduce the image as closely as possible in subject, framing, light, and feel.
4
+
5
+ ## Output shape
6
+
7
+ Return a JSON object with these fields:
8
+
9
+ ```json
10
+ {
11
+ "prompt": "single paragraph prompt, no line breaks, fed directly to an image model",
12
+ "shot": "shot size + camera angle in standard cinematography terms — see rules below",
13
+ "pose": "pure body pose of any human figure(s) — body geometry only, see rules below"
14
+ }
15
+ ```
16
+
17
+ ## Rules for the `shot` field
18
+
19
+ Format: `"<size>, <angle>"`. Always include both, comma-separated, lowercase.
20
+
21
+ **Size** — pick exactly one (terms from standard cinematography):
22
+
23
+ - `extreme close-up` (ECU/XCU) — a single feature fills the frame (eyes, mouth, hands, a detail)
24
+ - `close-up` (CU) — head fills the frame
25
+ - `medium close-up` (MCU) — head and shoulders, roughly chest-up
26
+ - `medium shot` (MS) — waist up
27
+ - `medium long shot` (MLS) — knees up (also called American shot / cowboy shot)
28
+ - `long shot` (LS) — full figure head to toe, roughly fills frame height
29
+ - `extreme long shot` (ELS/EWS) — figure small inside a dominant environment
30
+
31
+ **Angle** — pick exactly one:
32
+
33
+ - `eye-level` — camera at subject's eye height
34
+ - `low-angle` — camera below subject, looking up
35
+ - `high-angle` — camera above subject, looking down
36
+ - `overhead` — straight down, bird's-eye
37
+ - `dutch` — camera tilted, horizon askew
38
+
39
+ Examples: `"medium close-up, eye-level"`, `"long shot, low-angle"`, `"extreme close-up, overhead"`.
40
+
41
+ If there is no human or recognisable subject (pure landscape, abstract texture), still emit the closest size and angle for the dominant element.
42
+
43
+ ## Rules for the `pose` field
44
+
45
+ Only emit `pose` when the image contains one or more human figures. Describe the body's geometry only:
46
+
47
+ - Weight distribution and stance (e.g. weight on right leg, left foot crossed in front on the ball, contrapposto, kneeling, seated cross-legged, walking mid-stride).
48
+ - Rotation of hips, torso, shoulders, and head relative to camera (e.g. hips three-quarters away, torso twisted back over right shoulder, head turned further than shoulders into three-quarter view).
49
+ - Spine curvature (S-curve, arched, slumped, neutral).
50
+ - Arm and leg positions, including elbow/knee bend and where the hands rest or what they grip.
51
+
52
+ For close-ups where part of the body is out of frame, also describe the **implied posture** suggested by what's visible — what the off-frame body must be doing for the in-frame parts to make sense (e.g. "leaning forward with folded arms resting on a flat surface at chest height", "seated at a table with elbows on the surface", "lying prone with chin propped on hands"). Make this implied-posture clause one sentence at the end of the field.
53
+
54
+ Do NOT mention clothing, hair, facial features, identity, expression, props, setting, or lighting in this field — those belong in `prompt`. Keep it to body geometry a pose-skeleton extractor would care about.
55
+
56
+ ## Rules for the `prompt` field
57
+
58
+ 1. **One paragraph.** No line breaks, no lists, no labels. Continuous prose.
59
+ 2. **Order matters.** Start with subject + action, then composition/framing, then lighting, then camera, then palette, then style/medium, then mood, then post-processing. A reader following the prompt top to bottom should build the image in the right order.
60
+ 3. **Be specific and visual.** "Warm golden-hour key light from camera-right at a low angle, long hard shadows raking across the wall" — not "nice lighting."
61
+ 4. **Name what you can see.** If the light is clearly a window, say window. If it's a rim light, say rim. If it's a ring-light catchlight, say so. Don't invent details you can't see, but don't be vague about what's obvious.
62
+ 5. **Estimate technical parameters** when the image signals them: lens compression (long-lens flattening vs wide-lens distortion), depth of field, shutter artifacts, film stock hints (Portra pastels, Ektachrome greens, Cinestill halation).
63
+ 6. **Match the medium.** A painting gets brush/medium vocabulary, not lens talk. A 3D render gets render-engine/material vocabulary. A photo gets camera/lens/film vocabulary.
64
+ 7. **Mood last.** End on the emotional register so the model weighs subject and craft before feel.
65
+ 8. **No filler.** Drop "a beautiful image of," "stunning," "masterpiece," etc. Describe, don't adjectivize.
66
+ 9. **Do not reference the source.** Don't say "recreate this image" or "in the style of the attached photo." The prompt stands alone.
67
+
68
+ ## Register: authentic photo vs editorial vs non-photo
69
+
70
+ Before writing the prompt, decide what the image *actually is*. Picking the wrong register is the single biggest source of bad reproductions.
71
+
72
+ - **Authentic / phone / social snapshot** — candid framing, imperfect focus, available (non-studio) light, slight clutter, non-posed subject, visible compression or upload artifacts, unretouched skin. This is the default for most user images. Use phone-capture vocabulary, drawn freely from this list as appropriate: *authentic iPhone photo, casual snapshot, handheld, mild grain, subtle facial imperfections, natural under-eye shadows, slight uneven skin tone, very subtle motion softness, no beauty filter, no skin smoothing, unedited skin, slight ISO noise, tiny chromatic aberration around highlights, mild Instagram-upload compression artifacts, slight shadow banding, very subtle sensor noise, slightly lifted blacks from auto-HDR, ordinary daylight / ordinary indoor light*. **Do not** say "editorial photograph", "35mm Portra/Cinestill", "masterpiece", "cinematic", "shot on Arri", or name pro film stocks.
73
+ - **Editorial / studio / film** — controlled light, intentional framing, pro retouching, shallow studio bokeh, obvious film look. Only then use film-stock / lens / grade vocabulary (Portra, Cinestill, halation, teal-orange grade, etc.).
74
+ - **Painting, illustration, 3D render** — use medium vocabulary (brushwork, ink, cel, Unreal Engine 5, PBR, octane). Never mix camera/lens/film talk into a painting.
75
+
76
+ If in doubt, default to **authentic photo**. Most source images are phone captures, and "editorial/cinematic" vocabulary is what makes reproductions look staged and fake.
77
+
78
+ ## Example (authentic phone snapshot — for calibration, not for output)
79
+
80
+ Subject: a pale pink pet pig sitting upright on the back of a small red scooter in daytime traffic, secured with a rope harness, shot from a neighboring car window.
81
+
82
+ Bad: "a cinematic editorial photograph of a pig on a scooter, masterpiece, 35mm Portra, shallow depth of field"
83
+
84
+ Good: "A large pale pink pig sits upright on the rear seat of a small red scooter behind a helmeted rider, held in place with a loose rope harness, rolling through mid-afternoon urban traffic; framed through the open window of a neighboring car with a sliver of the car's door visible in the lower foreground and parked white sedans and low concrete shopfronts receding into the background. Composition is centered on the pig, handheld and slightly tilted, medium telephoto compression flattening the street behind. Ordinary overhead midday daylight, soft overall with a gentle warm cast off the asphalt and no hard shadows. Shot on iPhone at roughly equivalent 50–70mm, deep focus, very slight motion softness from the moving cars. Palette of dusty pink, tomato red, warm grey asphalt, and pale sky. Authentic iPhone photo, mild grain, tiny chromatic aberration around highlights, subtle sensor noise, mild Instagram-upload compression, slightly lifted blacks, no beauty filter, no skin smoothing, unedited. Humorous and surreal but matter-of-fact."
@@ -0,0 +1,136 @@
1
+ ---
2
+ source: "https://blog.fal.ai/kling-3-0-prompting-guide/ , https://www.ambienceai.com/tutorials/kling-prompting-guide , https://filmora.wondershare.com/ai-prompt/kling-ai-negative-prompt.html"
3
+ type: reference
4
+ date_added: 2026-02-13
5
+ ---
6
+
7
+ # Kling 3.0 Prompting Guide
8
+
9
+ Compiled from multiple sources covering Kling 3.0 prompting techniques, camera controls, negative prompts, and multi-shot capabilities.
10
+
11
+ ## Summary
12
+
13
+ Kling 3.0 is a major update to the Kling AI video generation model. Its biggest advancement is understanding **cinematic intent** — it processes prompts more like a director's notes than a list of objects. Key new features include 15-second generation, multi-shot sequences (up to 6 shots), native audio with dialogue, and improved character consistency.
14
+
15
+ ## Prompt Structure
16
+
17
+ The recommended prompt template follows this order:
18
+
19
+ **Scene > Characters > Action > Camera > Audio & Style**
20
+
21
+ Full template: `[Shot type] of [subject] [action/movement], [environment/setting], [camera movement], [lighting/mood], [style/aesthetic]`
22
+
23
+ Example: "Medium shot of a professional chef expertly flipping vegetables in a wok with flames rising, modern restaurant kitchen with stainless steel surfaces, camera slowly dollies forward, dramatic side lighting creating strong shadows, cinematic food photography style, shallow depth of field"
24
+
25
+ ## Cinematic Intent
26
+
27
+ Prompts that reference filmmaking concepts (scene coverage, composition, pacing, continuity) consistently outperform prompts that focus only on visual attributes. The model excels when prompts read like directions to a scene rather than a list of objects.
28
+
29
+ ## Multi-Shot Sequences
30
+
31
+ - Supports up to 6 shots in a single output
32
+ - Clearly label each shot with framing, subject, and motion
33
+ - Don't compress multi-shot narratives into one paragraph
34
+ - Use explicit shot names: profile shots, macro close-ups, tracking shots, POV
35
+
36
+ Example structure:
37
+ ```
38
+ [Scene Setup with atmosphere]
39
+ [Shot 1 description with framing and motion]
40
+ [Character A, tone]: "Dialogue"
41
+ [Immediate action]
42
+ [Character B, tone]: "Response"
43
+ ```
44
+
45
+ ## Camera Movement Types
46
+
47
+ - **Dolly** — forward/backward for reveal shots
48
+ - **Tracking** — following subjects laterally for action
49
+ - **Crane/Jib** — vertical movement with arc for establishing shots
50
+ - **Pan** — horizontal rotation across landscapes
51
+ - **Tilt** — vertical rotation for height emphasis
52
+ - **Orbit** — 360-degree rotation around subjects
53
+ - **Handheld** — natural shake for documentary feel
54
+ - **Steadicam** — smooth floating movement
55
+
56
+ Advanced: dolly zoom (perspective shift), arc tracking (dynamic orbits), crane pans (vertical reveals)
57
+
58
+ Tips: Specify speed ("slow dolly," "rapid pan"), define start/end points, layer movements, match movement to mood, use focal length terms.
59
+
60
+ ## Motion and Temporal Control
61
+
62
+ - Use temporal markers: "initially... then... finally" for progression
63
+ - Specify motion paths: "arc from left to right," "spiral upward"
64
+ - Add motion endpoints: "then settles back into place" to prevent drift
65
+ - Describe camera behavior precisely: stays, freezes, resumes
66
+
67
+ Motion descriptors: gracefully, swiftly, gradually, explosively, smoothly, rhythmically, dynamically
68
+
69
+ ## Native Audio and Dialogue
70
+
71
+ - Specify who speaks and when, especially in multi-character scenes
72
+ - Use consistent character labels: `[Character A: Description]`
73
+ - Bind dialogue to actions: describe the action first, then dialogue
74
+ - Add tone descriptors: "raspy deep voice," "fearful voice"
75
+ - Use temporal markers: "Immediately," "Pause," "Softly speaking"
76
+ - Supports multiple languages, accents, and code-switching
77
+
78
+ ## Elements (Visual Reference Binding)
79
+
80
+ - Elements inject reference images for specific characters, objects, or styles
81
+ - Each element has: `name` (label), `description` (what it is), `element_input_urls` (2-4 reference images)
82
+ - Reference in prompts with `@element_name` syntax — e.g., `@element_dog`
83
+ - The `name` must match the `@` reference in the prompt exactly (without the `@`)
84
+ - Naming convention: lowercase with underscores (`element_dog`, `element_cat`)
85
+ - Minimum 2 reference images per element, maximum 4 (JPG/PNG, max 10MB each)
86
+ - Video elements also supported: MP4/MOV, max 50MB
87
+ - Tracks up to 3 people independently in one scene
88
+ - `@element_name` binds visual identity; `[Character, tone]:` binds dialogue — use both together
89
+ - API field: `kling_elements` array in the request body
90
+
91
+ ## Negative Prompts
92
+
93
+ ### Best Practices
94
+ - Limit to 3-7 items — don't overload
95
+ - Keep language simple and direct
96
+ - Match prompts to the specific scene type
97
+ - Type what you want to avoid directly (e.g., "robots" not "no robots")
98
+ - Be specific rather than vague
99
+
100
+ ### By Scene Type
101
+ - **Cinematic**: grain, lens distortion, flicker, low resolution
102
+ - **Character animation**: extra fingers, deformed limbs, face blur, glitching
103
+ - **Product marketing**: shadows, reflections, motion blur, unnecessary objects
104
+ - **Fashion/runway**: awkward arm movement, double limbs, stutter, poor lighting
105
+ - **Fantasy**: clutter, pixelation, overlapping structures, unnatural lighting
106
+ - **Nature**: blurry motion, incorrect animal anatomy, unnatural colors
107
+ - **Action**: camera shake, motion blur, vehicle clipping, unrealistic physics
108
+
109
+ ### Common Mistakes
110
+ - Using vague terminology instead of specific technical terms
111
+ - Applying generic prompts without considering scene type
112
+ - Including excessive negative prompts that confuse the AI
113
+ - Forgetting to balance positive and negative instructions
114
+
115
+ ## Style Keywords
116
+
117
+ Quality enhancers: cinematic, professional, ultra-detailed, photorealistic, studio-quality, broadcast-ready
118
+
119
+ Atmosphere terms: ethereal, dramatic, moody, vibrant, serene, intense, mysterious, energetic
120
+
121
+ ## Technical Settings
122
+
123
+ - Resolution: 1080p (1920x1080) for professional output
124
+ - Frame rate: 30fps industry standard
125
+ - Duration: 5 seconds (clips) or 10-15 seconds (extended)
126
+ - Quality modes: Standard (faster) vs Cinematic (highest quality)
127
+
128
+ ## Key Takeaways
129
+
130
+ - Write prompts like a director, not a describer
131
+ - Structure: Scene > Characters > Action > Camera > Style
132
+ - Use film terminology for camera and framing
133
+ - Multi-shot: label each shot explicitly, don't compress
134
+ - Negative prompts: targeted and limited (3-7 items)
135
+ - Specify motion endpoints to prevent generation drift
136
+ - Iterate by changing one variable at a time
@@ -0,0 +1,28 @@
1
+ ---
2
+ source: "blog.google/products/gemini/prompting-tips-nano-banana-pro/, wavespeed.ai, minimaxir.com, imagine.art, github.com/ZeroLu/awesome-nanobanana-pro"
3
+ type: reference
4
+ date_added: 2026-02-13
5
+ ---
6
+
7
+ # Nano Banana Pro Prompting Guide
8
+
9
+ ## Summary
10
+
11
+ Nano Banana Pro is Google DeepMind's image generation model built on Gemini 3 Pro, launched November 2025. It introduces thinking mode (the model reasons through prompts before generating), search grounding (real-time Google Search integration for factual accuracy), text rendering (legible multi-language text directly in images), multi-image input (up to 14 reference images), and high-resolution output (up to 4K).
12
+
13
+ ## Key Takeaways
14
+
15
+ - Prompts should follow the structure: Subject/Action + Style/Medium + Setting/Atmosphere + Technical Specs + Mood/Emotion
16
+ - Six essential prompt components: subject, composition, action, setting/location, style, and editing instructions
17
+ - Text rendering excels with specific placement, font, and size instructions — keep to 1-3 text elements per image
18
+ - Thinking mode reasons through the prompt and generates interim "thought images" before the final output
19
+ - Search grounding connects to Google Search for real-time data — trigger with keywords like "search for," "latest," "today," "current"
20
+ - Up to 14 reference images can be provided for character/brand consistency, style direction, and composition guidance
21
+ - Supports 1K, 2K, and 4K resolution output
22
+ - The model pushes toward realism due to RLHF training — surreal or absurd prompts get normalized
23
+ - Explicit negations work reliably: "NEVER include any text, watermarks, or line overlays"
24
+ - Photographic specifications (camera model, lens, lighting) significantly improve professional output quality
25
+ - JSON-structured prompts can help organize complex multi-element compositions
26
+ - Era/aesthetic anchoring through film stocks ("Kodak Portra 400") and time periods triggers consistent visual language
27
+ - Grid generations (2x2, 4x4) work well because autoregressive generation understands previously-rendered sections
28
+ - Cost: base ~$0.039/image, Pro 2K ~$0.134/image; generation time 20s to 1min+
@@ -0,0 +1,172 @@
1
+ ---
2
+ source: "fal.ai/models/bytedance/seedance-2.0/reference-to-video, seedance2api.app/blog/seedance-2-prompt-guide, seed.bytedance.com/en/blog/official-launch-of-seedance-2-0"
3
+ type: reference
4
+ date_added: 2026-05-03
5
+ ---
6
+
7
+ # Seedance 2.0 Prompting Guide
8
+
9
+ ## Summary
10
+
11
+ Seedance 2.0 is ByteDance's multimodal video generation model. It uses a dual-branch Diffusion Transformer — one branch for spatial information (what things look like), one for temporal (how they move). Well-structured prompts feed both branches cleanly. The model exposes director-level camera control via prompt (dolly, tracking, POV switches, handheld) and generates synchronized native audio by default.
12
+
13
+ Three task variants share the same prompt grammar:
14
+ - **t2v** (text-to-video) — prompt only
15
+ - **i2v** (image-to-video) — prompt + a single first-frame image (and optional `end_image_url` last frame)
16
+ - **r2v** (reference-to-video) — prompt + up to 9 images, 3 videos, 3 audio clips (12 files max), referenced by @-tag in the prompt
17
+
18
+ A "fast" mode exists for each variant — same schema, lower quality/latency tradeoff.
19
+
20
+ ## Prompt Structure
21
+
22
+ Five-component formula:
23
+
24
+ **Subject + Action + Camera + Style + Constraints**
25
+
26
+ - **Subject** — who/what appears
27
+ - **Action** — movement and events
28
+ - **Camera** — angle, movement, lens
29
+ - **Style** — aesthetic anchor (specific film/director, not "cinematic")
30
+ - **Constraints** — duration, resolution, physics requirements
31
+
32
+ Keep prompts under ~150 words. Place subject and action first.
33
+
34
+ ## @ Tag Reference Syntax (r2v)
35
+
36
+ Reference uploaded files inline using `@Image1`, `@Video1`, `@Audio1`. Numbers correspond to upload order. `generate_video` in `r2v` mode accepts `refs.image` / `refs.video` / `refs.audio` arrays of artifact ids — index 0 is `@Image1`, index 1 is `@Image2`, etc.
37
+
38
+ Limits per request:
39
+ - Images: `@Image1` … `@Image9` (max 9)
40
+ - Videos: `@Video1` … `@Video3` (max 3, combined 2–15s)
41
+ - Audio: `@Audio1` … `@Audio3` (max 3, combined ≤15s)
42
+ - Total files across modalities: 12
43
+
44
+ ### Image reference roles
45
+
46
+ State the role explicitly so the model knows what to do with each image:
47
+
48
+ - `@Image1 as the first frame` — start the video from this image
49
+ - `@Image1 as the last frame` — end the video at this image
50
+ - `@Image1 as character reference` — preserve appearance throughout
51
+ - `@Image1 as background environment` — use as scene setting
52
+ - `@Image1 as style reference` — match color/texture/mood
53
+
54
+ ### Video reference roles
55
+
56
+ - `Refer to the camera movement of @Video1`
57
+ - `Character moves like @Video1` — transfer choreography
58
+ - `Apply the transition effects from @Video1`
59
+ - `Match the pacing and cuts of @Video1`
60
+
61
+ ### Audio reference roles
62
+
63
+ - `@Audio1 as background soundtrack`
64
+ - `@Audio1 as ambient sound`
65
+ - `@Audio1 as voice style reference`
66
+
67
+ ### Worked example (multi-modal r2v)
68
+
69
+ ```
70
+ Replace the character in @Video1 with @Image1, with @Image1 as the first frame.
71
+ The character should wear virtual sci-fi glasses. Refer to the camera movement
72
+ and close-up surround shots of @Video1, changing from a third-person perspective
73
+ to the character's subjective perspective. Travel through AI virtual glasses and
74
+ arrive at the deep blue universe of @Image2 where several spaceships are seen
75
+ traveling into distance.
76
+ ```
77
+
78
+ This prompt works because every @-tag has an explicit role (`replace … with`, `as the first frame`, `Refer to … of`, `arrive at … of`), the perspective shift is named (third-person → subjective), and the destination scene is anchored visually (`deep blue universe … spaceships`).
79
+
80
+ ### Actor replacement (video source + still identity refs)
81
+
82
+ Use Seedance 2.0 reference-to-video when replacing people in a clip. Pass the source clip in `refs.video` (`@Video1`) and one still per actor in `refs.image` (`@Image1`…), then map each still onto an on-screen person:
83
+
84
+ ```
85
+ Replace the on-screen person matching @Image1 with @Image1 as character reference. Replace the on-screen person matching @Image2 with @Image2 as character reference. Replace the on-screen person matching @Image3 with @Image3 as character reference. Keep camera movement, pacing, and framing of @Video1.
86
+ ```
87
+
88
+ Notebook wiring: connect the source video plus the identity stills to a Seedance generation cell (model `kie:bytedance/seedance-2-5`, mode `r2v`). The runner fills `refs.video` from connected video cells and `refs.image` from connected image cells. The result is a normal generated video artifact (`original.mp4` / `proxy.mp4`), not an orientation render.
89
+
90
+ ## Camera Movement Vocabulary
91
+
92
+ Explicit camera direction is the single highest-leverage prompt component.
93
+
94
+ - Dolly: "slow dolly-in," "push forward"
95
+ - Pan / tilt: "pan right," "tilt upward"
96
+ - Zoom: "slow zoom to close-up," "dolly zoom"
97
+ - Tracking: "tracking shot," "follow from behind," "close-up surround shots"
98
+ - Static: "static wide shot," "camera holds steady"
99
+ - Angle: "extreme wide shot," "low angle," "overhead"
100
+ - Lens: "anamorphic lens flare," "bokeh background"
101
+ - Perspective: "third-person to subjective POV," "first-person handheld"
102
+
103
+ ## Multi-Shot, Scene Cuts, Timestamps
104
+
105
+ A single generation can contain natural cuts (up to 15s). Use scene-cut and timecode language to control pacing:
106
+
107
+ - `Cut scene to …`
108
+ - `At 5 seconds, …`
109
+ - `[00:00-00:04] Shot 1: …`
110
+
111
+ Shot-script template for multi-shot output:
112
+
113
+ ```
114
+ 【Style】Denis Villeneuve sci-fi epic
115
+ 【Duration】10s
116
+ [00:00-00:04] Shot 1: Establishing wide (low-angle dolly-in). Description with physical details.
117
+ [00:04-00:07] Shot 2: Close-up surround (tracking arc). Description.
118
+ [00:07-00:10] Shot 3: POV (handheld). Description.
119
+ Consistency: same wardrobe and lighting across all shots.
120
+ ```
121
+
122
+ ## Variants and Parameters
123
+
124
+ All variants share these output parameters:
125
+
126
+ | Parameter | Values |
127
+ |---|---|
128
+ | `resolution` | `480p`, `720p` (fal.ai also lists `1080p` for r2v) — default `720p` |
129
+ | `duration` | `auto`, `4`–`15` seconds (integer) — default `auto` |
130
+ | `aspect_ratio` | `auto`, `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` |
131
+ | `generate_audio` | bool, default `true` — synchronized music/SFX/dialogue |
132
+ | `seed` | int, optional |
133
+
134
+ Variant-specific inputs:
135
+
136
+ - **t2v** — `prompt` only
137
+ - **i2v** — `prompt` + `image_url` (first frame) + optional `end_image_url` (last frame)
138
+ - **r2v** — `prompt` + `image_urls[≤9]` + `video_urls[≤3]` + `audio_urls[≤3]`, total ≤12
139
+
140
+ ## Style Anchoring
141
+
142
+ Generic terms ("cinematic," "epic") underperform specific anchors. Reference an actual director, film, or art movement: "Denis Villeneuve sci-fi epic," "Wong Kar-wai neon street photography," "Studio Ghibli watercolor backgrounds." Anchor early in the prompt.
143
+
144
+ ## Physics and Body Language
145
+
146
+ Seedance 2.0 simulates fluid dynamics, cloth, and character motion. Prompts that describe physical reactions ("hair lifts in the wind," "fabric ripples as she turns") consistently outperform prompts that describe abstract emotion ("she feels free"). Describe the body, not the feeling.
147
+
148
+ ## Common Mistakes
149
+
150
+ | Mistake | Fix |
151
+ |---|---|
152
+ | Vague subject ("a cool car video") | Add specific descriptors and camera direction |
153
+ | @-tag references a non-existent file (e.g., `@Image3` with 2 uploaded) | Verify upload order; tags start at 1 |
154
+ | @-tag with no role | State what the file is for: "as first frame," "as background" |
155
+ | No camera direction | Add explicit movement (dolly, tracking, POV) |
156
+ | Generic style ("cinematic") | Anchor to a specific director/film/movement |
157
+ | Conflicting text vs. reference | Align prompt with the actual content of @-tagged files |
158
+ | >150 words | Trim — long prompts dilute the load-bearing instructions |
159
+ | No duration in prompt OR API | Set both — prompt language plus the `duration` parameter |
160
+ | Multiple actions, no timecodes | Use `[00:00-00:05]` format to bind events to time |
161
+
162
+ ## Key Takeaways
163
+
164
+ - Five-part formula: Subject + Action + Camera + Style + Constraints
165
+ - Every @-tag needs an explicit role ("as first frame," "as character reference," "Refer to camera movement of")
166
+ - Camera direction is mandatory — the model defaults to bland motion without it
167
+ - Style anchors should name a director or film, not a genre
168
+ - For multi-shot output, use timecodes (`[00:00-00:04]`) and named shots
169
+ - Describe physics and body language, not abstract emotion
170
+ - Keep prompts under ~150 words
171
+ - `generate_audio: true` (default) — say "no audio" in the prompt isn't enough, set the flag
172
+ - Match reference files to prompt text; conflicting signals degrade the output
@@ -0,0 +1,49 @@
1
+ export const EXTENSION_ORIGIN = "chrome-extension://cebmihgcglhadjckbebmfahaiiljhgdj";
2
+ function localHost(host) {
3
+ const match = /^(localhost|127\.0\.0\.1|\[::1\])(?::([0-9]{1,5}))?$/i.exec(host);
4
+ return match !== null && (match[2] === undefined || Number(match[2]) <= 65535);
5
+ }
6
+ function localOrigin(origin) {
7
+ if (origin === EXTENSION_ORIGIN)
8
+ return true;
9
+ const match = /^https?:\/\/(.+)$/.exec(origin);
10
+ return match !== null && localHost(match[1]);
11
+ }
12
+ export function allowsHttpRequest(host, origin, fetchSite) {
13
+ if (!localHost(host))
14
+ return false;
15
+ if (origin !== null)
16
+ return localOrigin(origin);
17
+ return fetchSite !== "cross-site";
18
+ }
19
+ export const restrictHttpAccess = (req, res, next) => {
20
+ if (!allowsHttpRequest(req.get("host") ?? "", req.get("origin") ?? null, req.get("sec-fetch-site") ?? null)) {
21
+ res.status(403).json({ error: "HTTP request origin or host is not allowed" });
22
+ return;
23
+ }
24
+ next();
25
+ };
26
+ function isNativeMediaPath(path) {
27
+ let decodedPath;
28
+ try {
29
+ decodedPath = decodeURIComponent(path);
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ return /\.(?:mp4|m4v|mov|webm|ogv|mp3|m4a|aac|wav|flac|ogg|oga|opus|weba)$/iu.test(decodedPath);
35
+ }
36
+ export const restrictMediaContent = (req, res, next) => {
37
+ const nativeMedia = isNativeMediaPath(req.path);
38
+ res.setHeader("Content-Security-Policy", [
39
+ nativeMedia ? "sandbox allow-same-origin" : "sandbox",
40
+ "default-src 'none'",
41
+ "img-src 'self' data: blob:",
42
+ "media-src 'self' data: blob:",
43
+ "style-src 'unsafe-inline'",
44
+ "base-uri 'none'",
45
+ "form-action 'none'",
46
+ ].join("; "));
47
+ res.setHeader("X-Content-Type-Options", "nosniff");
48
+ next();
49
+ };