@docyrus/animaguru 0.19.0 → 0.22.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.
- package/README.md +61 -0
- package/dist/animaguru.js +366 -261
- package/package.json +1 -1
- package/skills/animaguru/SKILL.md +9 -1
- package/skills/animaguru/references/sharing.md +3 -0
- package/skills/animaguru-branching-story/SKILL.md +72 -0
- package/skills/animaguru-general-video/SKILL.md +1 -0
- package/skills/animaguru-general-video/references/branching-story.md +13 -0
- package/skills/animaguru-quiz/SKILL.md +80 -0
- package/skills/animaguru-video/SKILL.md +9 -1
- package/templates/video/AGENTS.md +2 -0
- package/templates/video/README.md +8 -0
- package/templates/video/WORKSPACE-AGENTS.md +3 -1
- package/templates/video/scripts/build.mjs +4 -1
- package/templates/video/scripts/export-mp4.mjs +2 -0
- package/templates/video/scripts/html-export.mjs +12 -4
- package/templates/video/scripts/project-context.mjs +20 -3
- package/templates/video/scripts/quiz.d.mts +31 -0
- package/templates/video/scripts/quiz.mjs +126 -0
- package/templates/video/scripts/review.mjs +9 -1
- package/templates/video/scripts/story.d.mts +36 -0
- package/templates/video/scripts/story.mjs +139 -0
- package/templates/video/scripts/workspace-plugin.mjs +9 -4
- package/templates/video/shared/locales/en/player.json +29 -1
- package/templates/video/src/kit/index.ts +1 -0
- package/templates/video/src/kit/story.ts +19 -0
- package/templates/video/src/main.ts +6 -1
- package/templates/video/src/player-types.ts +6 -0
- package/templates/video/src/player.ts +213 -17
- package/templates/video/src/quiz.ts +315 -0
- package/templates/video/src/story.ts +112 -0
- package/templates/video/src/style.css +106 -3
package/README.md
CHANGED
|
@@ -84,6 +84,19 @@ Running `init` again refreshes an existing skill with the bundled version withou
|
|
|
84
84
|
|
|
85
85
|
The default server is https://animaguru.com. Use `--url http://localhost:5190` on the leaf command or `ANIMAGURU_URL` to override it. HTTP is allowed only for loopback development. Authentication is stored separately per server in `~/.config/animaguru/credentials.json`, with file permissions 0600. Set `ANIMAGURU_CONFIG_DIR` for an isolated configuration directory. Browser login uses a ten-minute, single-use device code and receives a seven-day revocable Better Auth session. `auth login --no-browser` prints the URL for manual use. `auth logout` revokes the token. `ANIMAGURU_TOKEN` supports secret injection by agent runners; do not put tokens in arguments or commit them.
|
|
86
86
|
|
|
87
|
+
## Call the API directly
|
|
88
|
+
|
|
89
|
+
CLI 0.22.0 adds `animaguru curl` for API endpoints that have no command of their own. It takes curl's flags but no host and no `Authorization` header: it calls only the signed-in server (`--server` or `ANIMAGURU_URL`) and adds the session's token itself, so the token never appears in a command line.
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
animaguru curl /api/v1/me
|
|
93
|
+
animaguru curl -X PATCH /api/v1/projects/prj_123 -d '{"name":"Launch film"}'
|
|
94
|
+
animaguru curl -T film.mp4 /api/v1/some/upload # streams the file with PUT and Content-Type: video/mp4
|
|
95
|
+
animaguru curl /api/v1/some/download -o film.mp4 # saves to a new file and prints a JSON summary
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`-d`/`--data` and `--json` take text, `@FILE` or `@-` (JSON text is sent as `application/json`); `-T` streams a file with `PUT` unless `-X` says otherwise; `-H` adds headers; `-i` prints the status line and headers. Redirects are not followed. Unlike plain curl, an HTTP 4xx or 5xx prints the body and exits non-zero; `--no-fail` exits 0. Video, images and other binary responses go to a file with `-o`, which never overwrites one.
|
|
99
|
+
|
|
87
100
|
## Personal and team projects
|
|
88
101
|
|
|
89
102
|
CLI 0.7.1 can select a cloud workspace for project listing, project creation, and credit balances:
|
|
@@ -255,6 +268,18 @@ animaguru assets generate PROJECT_ID --type video --model fal/minimax-h3-max \
|
|
|
255
268
|
|
|
256
269
|
H3 takes fractions of a second (`--seconds 6.5`). Lip-sync, recast, relight and 3d-to-video last as long as their speech or video, and `--seconds` doesn't apply to them. Reference images, clips and audio past fal's included allowance add to the cost; so do the references 3d-to-video draws. Their `--dry-run` asks the server, which measures the saved files. `--resolution` and `--mode` default to the first the workflow offers.
|
|
257
270
|
|
|
271
|
+
CLI 0.21.0 adds Black Forest Labs' FLUX 3 Max on fal.ai (`fal/flux-3-max`). It films from an image (optionally ending on `--end-reference`) or from text, for 5–20 whole seconds at 720p (default) or 1080p, and makes its own sound; it takes no `--soundtrack`. `--workflow keyframes-to-video` passes through up to ten saved images at chosen moments:
|
|
272
|
+
|
|
273
|
+
```sh
|
|
274
|
+
# Pass through three images: the start, a pose at 2.5 seconds, and the end.
|
|
275
|
+
animaguru assets generate PROJECT_ID --type video --model fal/flux-3-max \
|
|
276
|
+
--workflow keyframes-to-video --name "Hat on" \
|
|
277
|
+
--prompt "She picks up the hat, puts it on and smiles at the camera" \
|
|
278
|
+
--keyframes "0,START_SHA;2.5,POSE_SHA;6,END_SHA" --seconds 6 --dry-run
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
`--keyframes` takes 1–10 `seconds,SHA` pairs, separated by semicolons, of this project's images or sprite art. Each is reached at its second, within `--seconds`; the clip has 24 frames a second and each keyframe needs a frame of its own. `--aspect-ratio auto` (default) follows the first keyframe, or give a ratio. FLUX 3 Max always works through the prompt before filming: `--prompt-expansion quality` asks for its thorough, slower level, any other value its light one. It takes `--seed`. Its dry runs are local estimates.
|
|
282
|
+
|
|
258
283
|
Images have a full background by default; `--transparent` requests a cutout. CLI 0.17.0 adds `--references`, `--mask` and the 16:9 and 9:16 shapes. `--aspect-ratio` is 1:1 (default, 1024×1024), 3:2 (1536×1024), 2:3 (1024×1536), 16:9 (1536×864) or 9:16 (864×1536). `--references` takes up to four comma-separated blob SHAs of this project's images (including attached uploads) or sprite art, and the new image follows them: generate a character sheet once, then reference it in every scene to keep the character consistent. Refer to them in the prompt as Image 1, Image 2 and so on, and say what to take from each. Each reference adds a little to the estimate. `--mask` edits only part of Image 1, the first reference: give up to eight rectangles as `x,y,width,height` fractions of its size from the top left, separated by semicolons (`0,0,1,0.4` is the top 40%). The rest of the image is kept, and the result keeps Image 1's shape, which must be one of the five above. Gemini speech's `--prompt` is the verbatim transcript, and `--delivery` controls how it sounds without being spoken. Gemini speech supports both `gemini-3.8-flash-tts` and `gemini-3.8-flash-lite-tts`. Music uses Lyria. Google audio requires the server's `AI_PROVIDER_KEY_GOOGLE` secret; no provider keys are stored in the CLI.
|
|
259
284
|
|
|
260
285
|
Preview a validated request and its estimated credits with `--dry-run`, without spending credits; most dry runs work offline without signing in:
|
|
@@ -404,6 +429,32 @@ animaguru reference get va_… --wait
|
|
|
404
429
|
|
|
405
430
|
The video is a local MP4, MOV or WebM file up to 100 MB and ten minutes, or an HTTPS link to the video file itself. Pages on YouTube, Instagram or TikTok cannot be fetched; download the video you have the rights to use and pass the file. An analysis takes several minutes: about eight for a 6-second clip, because Glimpse inspects the frames with code over many steps. Inside a video project it is saved to `production/references/NAME.json`, elsewhere to `NAME.analysis.json` (or `--out FILE`). It is charged what it costs, about 22 to 36 credits for a 6-second clip in testing and more for a longer video, after holding 200 credits (300 with `--effort medium`, 500 with `xhigh`). MCP clients use `analyze_video` with a link and poll `get_video_analysis`.
|
|
406
431
|
|
|
432
|
+
## Branching stories
|
|
433
|
+
|
|
434
|
+
CLI 0.20.0 makes branching stories: films whose viewers choose what happens next and reach one of several endings. A `story.json` beside the film's `film.config.json` lays its segments end to end on the timeline and says where each leads: to the viewer's choices, on to another segment, or to an ending.
|
|
435
|
+
|
|
436
|
+
```sh
|
|
437
|
+
animaguru create animation lantern --story # a story.json over the starter film: one choice, two endings
|
|
438
|
+
npm run dev # play it; ?segment=ID starts at a segment
|
|
439
|
+
npm run review -- --animation lantern --headless # every segment, plus the story's playthroughs
|
|
440
|
+
animaguru submit --animation lantern --yes # uploads it as an interactive HTML5 film
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
The player shows the choices over the picture, with an optional timer that takes a default, and an ending panel with Play again and Back to the last choice. A branching story plays as HTML5 only: `npm run export:mp4` refuses it, and the cloud Animator offers no MP4 of it. The `animaguru-branching-story` skill has the format.
|
|
444
|
+
|
|
445
|
+
## Quizzes
|
|
446
|
+
|
|
447
|
+
CLI 0.20.0 also makes quiz films, for educational explainers, lessons and training: a `quiz.json` beside `film.config.json` pauses the film at checkpoints to ask one question or a quick round (for example after every scene), and asks a final quiz after its end, then shows the viewer's score. Questions have one right answer (multiple choice or true/false) or several (select all that apply), an optional explanation, and a pass mark for the final quiz; a wrong answer at a checkpoint offers Watch that part again.
|
|
448
|
+
|
|
449
|
+
```sh
|
|
450
|
+
animaguru create animation moon-lesson --quiz # a quiz.json over the starter film: a checkpoint and a final quiz
|
|
451
|
+
npm run dev # play it and answer
|
|
452
|
+
npm run review -- --animation moon-lesson --headless # the film under the cards, plus the quiz's questions and notes
|
|
453
|
+
animaguru submit --animation moon-lesson --yes # uploads it; the video page plays the quiz
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
The questions are HTML cards over the picture, so they play in HTML5: locally, in the exported ZIP and on AnimaGuru's video pages. A quiz film plays as HTML5 only, because its questions wait for a viewer's answers: `npm run export:mp4` refuses it, and the cloud Animator offers no MP4 of it. A quiz also works inside a branching story (`--story --quiz`). The `animaguru-quiz` skill has the format and how to write good questions.
|
|
457
|
+
|
|
407
458
|
## Motion library
|
|
408
459
|
|
|
409
460
|
CLI 0.14.0 adds `animaguru motion`. Search ready-made motion design examples (PixiJS scenes built on the video film kit) by describing the motion, then install one into a film. Search uses natural language and keywords together; it needs `animaguru auth login` and spends no credits.
|
|
@@ -486,6 +537,16 @@ To request public gallery publication, upload privately, open the video in My vi
|
|
|
486
537
|
|
|
487
538
|
`videos list --scope mine|shared|public` lists films. Owners can edit metadata, change visibility and replace recipients on the website, or use `videos share VIDEO_ID --visibility private --share "alex@example.com" --yes`. `videos delete VIDEO_ID --yes` removes the film and files. Making a film private or removing a recipient revokes access to existing playback links.
|
|
488
539
|
|
|
540
|
+
CLI 0.20.0 lists and moves videos between libraries. `videos list` shows the selected workspace's library, the one `submit` uploads to; `--workspace personal` or `--workspace TEAM_ID` lists another. `videos move VIDEO_ID… --workspace TEAM_ID --yes` moves your own videos into a team you belong to, or back with `--workspace personal`:
|
|
541
|
+
|
|
542
|
+
```sh
|
|
543
|
+
animaguru videos list --workspace personal
|
|
544
|
+
animaguru videos move vid_… vid_… --workspace team_… --yes
|
|
545
|
+
animaguru videos list --workspace team_…
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
A moved video keeps its ID, watch and embed links, subtitles, recipients and review, and everyone in the team can watch it. The new library must have room for it. A video made from a project's animation stays with that project: transfer the project to the team on the website first, then move the video. Videos move one at a time; if one cannot move, the command stops, prints the IDs it moved and the ones it didn't, and exits with an error. Moving a video into the library it is already in changes nothing, so the same command can be run again.
|
|
549
|
+
|
|
489
550
|
Uploads are divided into SHA-256 verified 8 MiB parts. Interrupted submissions print their video ID: inspect with `videos get VIDEO_ID`, retry a fully uploaded film with `videos complete VIDEO_ID`, or delete the unfinished draft before resubmitting. Completion is idempotent. HTML5 ZIPs allow 64 MiB compressed / 96 MiB expanded with 500 entries and 32 MiB per asset; MP4s allow 512 MiB; PNG/JPEG/WebP covers allow 2 MiB. Uploads are available to verified accounts with a 2 GiB video library allowance. Hosting does not run paid generation jobs.
|
|
490
551
|
|
|
491
552
|
## Upload directly to YouTube
|