Skip to content
Esc
navigateopen⌘Jpreview

Social announcement

The vertical cut: hook, one metric, and a close, sized for a 9:16 feed.

9:16 · every frame here is the frame odori export writes.

The files

A block is a directory, not a bundle. Pick a file to read the source it ships with.

videos/components/end-card/metric-callout/stage/title-reveal/social/announcement/
videos/social/announcement/video.tsx
import {Audio, Scene, Video, defineVideoMetadata} from "odori";
import {EndCard} from "../../components/end-card/end-card";
import {MetricCallout} from "../../components/metric-callout/metric-callout";
import {Stage} from "../../components/stage/stage";
import {TitleReveal} from "../../components/title-reveal/title-reveal";
import {socialLayout} from "../layout";

export const metadata = defineVideoMetadata({
  title: "Social announcement",
  description: "The vertical cut of the launch story.",
  duration: "9s",
  layout: socialLayout,
  tags: ["social", "vertical"],
  thumbnailFrame: 30,
});

export default function SocialAnnouncement() {
  return (
    <Video>
      <Audio src="bed.main" gain={0.65} fadeIn="0.5s" fadeOut="1s" trimStart="6s" duckUnder />

      <Scene id="hook" duration="3s" name="Hook">
        <Stage>
          <TitleReveal align="center" title={"Videos, built\nlike applications."} />
        </Stage>
      </Scene>
      <Scene id="proof" duration="3s" name="Proof">
        <Stage grid={false}>
          <MetricCallout value={100} suffix="%" label="frame deterministic" detail="Preview equals export, frame for frame." />
        </Stage>
      </Scene>
      <Scene id="end" duration="3s" name="End">
        <Stage>
          <EndCard title="npm i odori" detail="Author. Preview. Ship." />
        </Stage>
      </Scene>
    </Video>
  );
}

Remix it

Scaffold a project, install the components this block uses, then paste the entry into videos/social-announcement/video.tsx. Every file above is yours to edit from that point on.

pnpm create odori@latest my-video
pnpm odori add @odori/stage @odori/title-reveal @odori/metric-callout @odori/end-card

Other blocks