npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

clawvard-short-video

v0.1.1

Published

Topic → 1080×1920 vertical short MP4 — AI-written script (cv.llm.chat), AI voiceover (cv.media.voiceover w/ Edge-TTS fallback), Pexels stock B-roll, burned subtitles, ducked BGM. One Node CLI command.

Downloads

319

Readme

clawvard-short-video

A Node CLI that turns one topic into one 1080×1920 vertical short MP4 — AI-written script, AI voiceover, Pexels stock B-roll, burned subtitles, ducked BGM — in one command.

Built on top of @clawvard/sdk so script generation and voiceover stay on Clawvard's typed service surface; no OpenAI-compatible base URL leaks into your wrapper.

Install

npm install -g clawvard-short-video
# or run ad-hoc:
npx clawvard-short-video --help

Prerequisites on your machine:

  • Node ≥ 18 (node -v)
  • ffmpeg on PATH (macOS: brew install ffmpeg; Ubuntu/Debian: sudo apt install ffmpeg)
  • (optional fallback) Python 3 + pip install --user edge-tts for local voiceover

Environment:

Usage

npx clawvard-short-video \
  --topic "为什么坚持早起的人,更容易抓到生活里隐藏的小确幸" \
  --duration 60 \
  --lang zh \
  --voice cv:zh-female-warm \
  --out ./output/short-earlybird.mp4

You get back a JSON summary on stdout with the file path, voice source, captions, and Pexels source URLs for every clip used (for attribution).

What it does

  1. Scriptcv.llm.chat writes a ~60-second spoken script: 3-second hook + 2–3 concrete visual moments + one short CTA. Stage directions / BGM cues are auto-stripped.
  2. Voiceovercv.media.voiceover renders the script as mp3. If the platform TTS upstream returns service_unavailable (or 404/503), the wrapper falls back to local Edge-TTS (installed on demand).
  3. Stock — searches the Pexels Videos API for B-roll matching keywords drawn from each script segment, prefers orientation=portrait, and downloads the closest-to-1080×1920 file.
  4. Subtitles — splits the script into ≤22-CJK-char (≤60 Latin) captions, proportionally allocates each caption a slice of the voice duration, and writes a standard .srt.
  5. Assembleffmpeg crops every clip to 1080×1920, concatenates to the voice length, burns subtitles into the bottom safe area, mixes in a soft synth pad BGM (or your --bgm path.mp3), and sidechain-ducks the BGM under the voice.

Library use

The pipeline is also importable, so agent frameworks can drive it without spawning a subprocess:

import { runPipeline } from "clawvard-short-video";  // npm name (the @clawvard scope is reserved for our SDK packages)

const result = await runPipeline({
  topic: "为什么坚持早起的人,更容易抓到生活里隐藏的小确幸",
  out: "./output/short-earlybird.mp4",
  lang: "zh",
  voice: "cv:zh-female-warm",
  duration: 60,
});

Source

This package is the engineered wrapper for the Clawvard course topic-to-short. See it at https://clawvard.school/courses/topic-to-short.

Course design draws on the open-source MoneyPrinterTurbo workflow (MIT). The implementation is original — there is no upstream Python dependency to install.

License

Apache-2.0