← 返回 Skills 市场
start-fish

Remotion Best Practice

作者 小海星 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
50
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install remotion-best-practice
功能描述
Best practices for Remotion - Video creation in React
使用说明 (SKILL.md)

When to use

Use this skills whenever you are dealing with Remotion code to obtain the domain-specific knowledge.

New project setup

When in an empty folder or workspace with no existing Remotion project, scaffold one using:

npx create-video@latest --yes --blank --no-tailwind my-video

Replace my-video with a suitable project name.

Designing a video

Animate properties using useCurrentFrame() and interpolate(). Use Easing to customize the timing of the animation.

import { useCurrentFrame, Easing } from "remotion";

export const FadeIn = () => {
  const frame = useCurrentFrame();
  const { fps } = useVideoConfig();

  const opacity = interpolate(frame, [0, 2 * fps], [0, 1], {
    extrapolateRight: "clamp",
    extrapolateLeft: "clamp",
    easing: Easing.bezier(0.16, 1, 0.3, 1),
  });

  return \x3Cdiv style={{ opacity }}>Hello World!\x3C/div>;
};

CSS transitions or animations are FORBIDDEN - they will not render correctly.
Tailwind animation class names are FORBIDDEN - they will not render correctly.

Place assets in the public/ folder at your project root.

Use staticFile() to reference files from the public/ folder.

Add images using the \x3CImg> component:

import { Img, staticFile } from "remotion";

export const MyComposition = () => {
  return \x3CImg src={staticFile("logo.png")} style={{ width: 100, height: 100 }} />;
};

Add videos using the \x3CVideo> component from @remotion/media:

import { Video } from "@remotion/media";
import { staticFile } from "remotion";

export const MyComposition = () => {
  return \x3CVideo src={staticFile("video.mp4")} style={{ opacity: 0.5 }} />;
};

Add audio using the \x3CAudio> component from @remotion/media:

import { Audio } from "@remotion/media";
import { staticFile } from "remotion";

export const MyComposition = () => {
  return \x3CAudio src={staticFile("audio.mp3")} />;
};

Assets can be also referenced as remote URLs:

import { Video } from "@remotion/media";

export const MyComposition = () => {
  return \x3CVideo src="https://remotion.media/video.mp4" />
};

To delay content wrap it in \x3CSequence> and use from. To limit the duration of an element, use durationInFrames of \x3CSequence>. \x3CSequence> by default is an absolute fill. For inline content, use layout="none".

import { Sequence } from "remotion";

export const Title = () => {
  const frame = useCurrentFrame();
  const { fps } = useVideoConfig();

  const opacity = interpolate(frame, [0, 2 * fps], [0, 1], {
    extrapolateRight: "clamp",
    extrapolateLeft: "clamp",
    easing: Easing.bezier(0.16, 1, 0.3, 1),
  });

  return \x3Cdiv style={{ opacity }}>Title\x3C/div>;
};

export const Subtitle = () => {
  return \x3Cdiv>Subtitle\x3C/div>;
};

const Main = () => {
  const {fps} = useVideoConfig();

  return (
    \x3CAbsoluteFill>
      \x3CSequence>
        \x3CBackground />
      \x3C/Sequence>
      \x3CSequence from={1 * fps} durationInFrames={2 * fps} layout="none">
        \x3CTitle />
      \x3C/Sequence>
      \x3CSequence from={2 * fps} durationInFrames={2 * fps} layout="none">
        \x3CSubtitle />
      \x3C/Sequence>
    \x3C/AbsoluteFill>
  );
}

The width, height, fps, and duration of a video is defined in src/Root.tsx:

import { Composition } from "remotion";
import { MyComposition } from "./MyComposition";

export const RemotionRoot = () => {
  return (
    \x3CComposition
      id="MyComposition"
      component={MyComposition}
      durationInFrames={100}
      fps={30}
      width={1080}
      height={1080}
    />
  );
};

Metadata can also be calculated dynamically:

import { Composition, CalculateMetadataFunction } from "remotion";
import { MyComposition, MyCompositionProps } from "./MyComposition";

const calculateMetadata: CalculateMetadataFunction\x3C
  MyCompositionProps
> = async ({ props, abortSignal }) => {
  const data = await fetch(`https://api.example.com/video/${props.videoId}`, {
    signal: abortSignal,
  }).then((res) => res.json());

  return {
    durationInFrames: Math.ceil(data.duration * 30),
    props: {
      ...props,
      videoUrl: data.url,
    },
    width: 1080,
    height: 1080,
  };
};

export const RemotionRoot = () => {
  return (
    \x3CComposition
      id="MyComposition"
      component={MyComposition}
      fps={30}
      width={1080}
      height={1080}
      defaultProps={{ videoId: "abc123" }}
      calculateMetadata={calculateMetadata}
    />
  );
};

Starting preview

Start the Remotion Studio to preview a video:

npx remotion studio

Optional: one-frame render check

You can render a single frame with the CLI to sanity-check layout, colors, or timing.
Skip it for trivial edits, pure refactors, or when you already have enough confidence from Studio or prior renders.

npx remotion still [composition-id] --scale=0.25 --frame=30

At 30 fps, --frame=30 is the one-second mark (--frame is zero-based).

Captions

When dealing with captions or subtitles, load the ./rules/subtitles.md file for more information.

Using FFmpeg

For some video operations, such as trimming videos or detecting silence, FFmpeg should be used. Load the ./rules/ffmpeg.md file for more information.

Silence detection

When needing to detect and trim silent segments from video or audio files, load the ./rules/silence-detection.md file.

Audio visualization

When needing to visualize audio (spectrum bars, waveforms, bass-reactive effects), load the ./rules/audio-visualization.md file for more information.

Sound effects

When needing to use sound effects, load the ./rules/sfx.md file for more information.

3D content

See rules/3d.md for 3D content in Remotion using Three.js and React Three Fiber.

Advanced audio

See rules/audio.md for advanced audio features like trimming, volume, speed, pitch.

Dynamic duration, dimensions and data

See rules/calculate-metadata.md for dynamically set composition duration, dimensions, and props.

Advanced compositions

See rules/compositions.md for how to define stills, folders, default props and for how to nest compositions.

Google Fonts

Is the recommended way to load fonts in Remotion. See rules/google-fonts.md for how to load Google Fonts.

Local fonts

See rules/local-fonts.md for how to load local fonts.

Getting audio duration

See rules/get-audio-duration.md for getting the duration of an audio file in seconds with Mediabunny.

Getting video dimensions

See rules/get-video-dimensions.md for getting the width and height of a video file with Mediabunny.

Getting video duration

See rules/get-video-duration.md for getting the duration of a video file in seconds with Mediabunny.

GIFs

See rules/gifs.md for how to display GIFs synchronized with Remotion's timeline.

Advanced Images

See rules/images.md for sizing and positioning images, dynamic image paths, and getting image dimensions.

Light leaks

See rules/light-leaks.md for light leak overlay effects using @remotion/light-leaks.

Lottie animations

See rules/lottie.md for embedding Lottie animations in Remotion.

HTML in canvas

See rules/html-in-canvas.md if you need to render HTML into a \x3Ccanvas> to apply 2D or WebGL effects via \x3CHtmlInCanvas>.

Measuring DOM nodes

See rules/measuring-dom-nodes.md for measuring DOM element dimensions in Remotion.

Measuring text

See rules/measuring-text.md for measuring text dimensions, fitting text to containers, and checking overflow.

Advanced sequencing

See rules/sequencing.md for more sequencing patterns - delay, trim, limit duration of items.

TailwindCSS

See rules/tailwind.md for using TailwindCSS in Remotion.

Text animations

See rules/text-animations.md for typography and text animation patterns.

Advanced timing

See rules/timing.md for advanced timing with interpolate and Bézier easing, and springs.

Transitions

See rules/transitions.md for scene transition patterns.

Transparent videos

See rules/transparent-videos.md for rendering out a video with transparency.

Trimming

See rules/trimming.md for trimming patterns - cutting the beginning or end of animations.

Advanced Videos

See rules/videos.md for advanced knowledge about embedding videos - trimming, volume, speed, looping, pitch.

Parameterized videos

See rules/parameters.md for making a composition parametrizable by adding a Zod schema.

Maps

For simple maps with little flyovers, consider using static map images. For complex maps with animated routes or flyovers, load the maps rule: rules/maplibre.md

Voiceover

See rules/voiceover.md for adding AI-generated voiceover to Remotion compositions using ElevenLabs TTS.

安全使用建议
Safe to install as a Remotion best-practices reference. Before using its examples, review any remote URLs, only use licensed media, keep API keys in environment variables or a secret manager, and avoid putting sensitive generated audio or captions in public/static folders.
能力标签
requires-sensitive-credentials
能力评估
Purpose & Capability
The artifacts are documentation and code examples for building Remotion videos, including media assets, captions, maps, animation, rendering, and optional voiceover workflows; those capabilities fit the stated purpose.
Instruction Scope
The instructions include purpose-aligned examples that fetch remote media, metadata, maps, Lottie assets, and TTS audio, but they do not consistently spell out privacy, provenance, licensing, or cost considerations.
Install Mechanism
No executable install scripts or hidden setup behavior were found; package install commands are shown as user-directed documentation examples for Remotion-related dependencies.
Credentials
Network access is expected for several media/video workflows, but users should prefer trusted or local assets when possible and review third-party URLs before rendering.
Persistence & Privilege
The skill does not request elevated privileges or background persistence; some examples write generated audio or captions into public/static project paths, which may make those files publishable if the app is deployed.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install remotion-best-practice
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /remotion-best-practice 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release providing best practices and common workflows for using Remotion with React to create videos. - Covers new project setup, animation principles, and use of media assets in Remotion. - Details patterns for composition, sequencing, and dynamic metadata in video projects. - Specifies strict rules: avoid CSS/Tailwind animations; use Remotion-native APIs for all animation/timing. - Lists references to in-depth guides for subtitles, FFmpeg, audio visualization, metadata, fonts, GIFs, images, and Lottie. - Provides Remotion command-line usage for previewing and one-frame renders.
元数据
Slug remotion-best-practice
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Remotion Best Practice 是什么?

Best practices for Remotion - Video creation in React. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 50 次。

如何安装 Remotion Best Practice?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install remotion-best-practice」即可一键安装,无需额外配置。

Remotion Best Practice 是免费的吗?

是的,Remotion Best Practice 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Remotion Best Practice 支持哪些平台?

Remotion Best Practice 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Remotion Best Practice?

由 小海星(@start-fish)开发并维护,当前版本 v1.0.0。

💬 留言讨论