Skip to main content
ClaudeWave
Skill4.1k estrellas del repoactualizado today

video-still-animator

video-still-animator converts a single PNG or JPG into a short MP4 video using ffmpeg's Ken-Burns zoom effect. Use this skill as a fallback when upstream AI video generation fails due to content moderation, ensuring downstream merge steps still receive a valid clip with matching framing and timing, albeit without the requested camera motion.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/opensquilla/opensquilla /tmp/video-still-animator && cp -r /tmp/video-still-animator/src/opensquilla/skills/bundled/video-still-animator ~/.claude/skills/video-still-animator
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# video-still-animator — Ken-Burns fallback clip from a still

Produces a short MP4 from a single PNG/JPG using ffmpeg's `zoompan`
filter, so a downstream merge step still has a clip for every shot when
an upstream AI video generation step gets blocked.

## Why this skill exists

`seedance-2-prompt` (and any platform-moderated video model) can refuse
individual requests for reasons that have nothing to do with the
prompt's narrative quality:

- input photo contains a recognisable real person face
- output audio gets flagged by the safety classifier
- the moderation model's similarity threshold drifts day to day

In `meta-short-drama` we always have a fresh PNG on disk before the
seedance call runs, so the cheapest "the show must go on" fallback is to
turn that PNG into a Ken-Burns clip and feed it to the merger. The clip
won't have the camera motion the prompt asked for, but the character,
framing, and timing will still match the script.

## Inputs (`with:`)

| key | required | default | notes |
|---|---|---|---|
| `input_image` | yes | — | PNG or JPG path. |
| `output_path` | yes | — | Output `.mp4` path. Parent dir created if missing. |
| `duration` | no | `5` | Clip length in seconds. |
| `width` | no | `720` | Output width. Match the merge step's pipeline. |
| `height` | no | `1280` | Output height. 720x1280 = 9:16. |
| `fps` | no | `24` | Output frame rate. |
| `zoom_rate` | no | `0.0015` | Per-frame zoom delta; 0.0015 over 5s ≈ 1.18× final zoom. |

## Output specs

- H.264 video at the requested resolution + fps
- AAC silent audio track (so merge steps that demux/remux audio do not
  trip on a missing stream)
- `+faststart` MP4 (web playback friendly)

## Dependencies

- ffmpeg ≥ 5.0 on PATH (or pass `--ffmpeg-path` directly).

On Windows the script also probes the winget Gyan.FFmpeg install path,
Scoop, Chocolatey, and `C:\Program Files\ffmpeg\bin` before giving up.

## Use as `on_failure` substitute

In a meta-skill DAG, hang it off the real video step:

```yaml
- id: shot1_video
  kind: skill_exec
  skill: seedance-2-prompt
  on_failure: shot1_video_fallback
  with: { ... }

- id: shot1_video_fallback
  kind: skill_exec
  skill: video-still-animator
  with:
    input_image: "{{ inputs.workspace_dir }}/.../1_shot.png"
    output_path: "{{ inputs.workspace_dir }}/.../1_shot.mp4"
```

The fallback must be a standalone step (no `depends_on`, no own
`on_failure`) per the meta-skill engine rules. The PNG must already
exist on disk by the time the parent step fails — that's true here
because the image step always runs before the video step.

## Limits

- Static framing only. The zoom is uniform centre-anchored; no pan, no
  rotation, no parallax. For richer fallback motion, generate a fresh
  set of stills and call this multiple times.
- No real audio. The intent is a placeholder that survives the merge;
  add a real soundtrack downstream if needed.
- ffmpeg version drift: very old ffmpeg (<4) may not accept the exact
  `zoompan` filter syntax; install ≥ 5.
advanced-dubbing-studioSkill

Submit audio or video for multilingual dubbing, poll status, and download dubbed audio. Use when the user asks for dubbing, 多语言配音, 视频翻译配音, 译制片, or wants a source clip dubbed into another language.

ai-video-scriptSkill

Generate a structured short-video shooting script from a topic. Emits a strict, machine-parseable shot list (3 shots by default) with image prompt + video prompt + voiceover + on-screen text per shot. Trigger when the user asks for a video script, 分镜, 短视频文案, AI视频, 短剧脚本, or wants visual prompts ready for image/video generation.

cronSkill

Use when the user asks to schedule recurring tasks, one-off reminders, timers, or cron-style jobs through the OpenSquilla cron tool.

deep-researchSkill

Multi-round research with explicit methodology, evidence tracking, and citation-tagged synthesis. Trigger on 'deep dive', 'research report', 'literature review', 'investigate X across sources', 'multi-round investigation'. Distinct from the `summarize` skill, which is a single-pass condensation; this skill maintains a state file across iterations, tracks coverage, and produces a long-form report with per-claim citations. Three execution stages: plan (scope into sub-questions), iterate (record evidence per round), compile (synthesize report). The skill itself does not fetch the web — it tells the host agent which fetches to perform via OpenSquilla's existing web tools, and records what comes back.

docxSkill

Read, edit, or create Microsoft Word `.docx` files. Trigger this skill whenever the user mentions a Word document, .docx file, contract, report, brief, memo, or asks to extract text, modify an existing doc, generate one from a brief, or audit tracked changes. Three execution paths: text-and-structure extraction, in-place edit-by-run (preserves styles), and create-from-scratch with python-docx. Falls back to OOXML unzip-and-patch for layout work python-docx cannot reach.

git-diffSkill

Capture the current git diff (staged, working-tree, or staged file list) as text. Direct shell call for workflows that need repository diffs without an LLM agent loop.

githubSkill

GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.

history-explorerSkill

Query the per-turn DecisionEntry log for skill co-occurrence patterns, meta-skill usage stats, and the router fixture corpus. Returns a JSON summary suitable for downstream LLM consumption. Used by meta-skill-creator's harvest step but also useful standalone for 'which skills did I use most this week?'