一键导入
viewport-master
同一内容自动适配不同平台比例。 触发词: - "多平台适配" - "不同比例" - "抖音/B站适配" - "viewport" 使用场景: - 抖音视频 (9:16) - B站/YouTube 视频 (16:9) - Instagram (1:1) - 小红书 (4:5)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
同一内容自动适配不同平台比例。 触发词: - "多平台适配" - "不同比例" - "抖音/B站适配" - "viewport" 使用场景: - 抖音视频 (9:16) - B站/YouTube 视频 (16:9) - Instagram (1:1) - 小红书 (4:5)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
HTML 演示文稿生成 Skill。基于 frontend-slides 扩展。 触发词: - "演示文稿"、"PPT" - "幻灯片"、"slides" - "做 PPT"、"转网页" - "/presentation" 使用场景: - PPT 转网页 - 从零创建演示文稿 - 技术分享演示 - 教学课件
完整的科普动画视频生成 Skill。整合 script-to-scene + tts-universal + remotion-pro。 触发词: - "科普视频"、"科普动画" - "制作视频"、"创建动画" - "3Blue1Brown 风格" - "/science-animation" 使用场景: - 数学/物理概念讲解 - AI/机器学习可视化 - 数据结构与算法动画 - 技术教程视频
根据场景配置生成 Remotion React 组件代码。 触发词: - "生成 Remotion 代码" - "生成场景组件" - "创建视频代码" 使用场景: - 科普动画视频生成 - 技术教程视频制作 - 数据可视化视频
将自然语言脚本拆分为结构化场景配置。 触发词: - "拆分场景"、"场景配置" - "分镜"、"场景规划" - "脚本转场景" 使用场景: - 科普视频脚本拆解 - 教程视频分镜 - 长文本自动分段
统一 TTS 适配层,支持 6+ TTS 服务商(MiniMax、ElevenLabs、火山引擎、Edge TTS、阿里 Qwen3、腾讯混元)。 提供统一接口,自动处理时间戳格式转换。 触发词: - "TTS"、"文字转语音"、"语音合成" - "MiniMax TTS"、"Edge TTS"、"火山引擎" - 选择 TTS 服务商时 使用场景: - 科普视频配音 - 教程讲解配音 - 多语言语音生成
一键发布视频到多个平台。 触发词: - "发布到 B站" - "上传抖音" - "多平台发布" - "/publish" 使用场景: - B站上传 - 抖音上传 - YouTube 发布
| name | viewport-master |
| description | 同一内容自动适配不同平台比例。 触发词: - "多平台适配" - "不同比例" - "抖音/B站适配" - "viewport" 使用场景: - 抖音视频 (9:16) - B站/YouTube 视频 (16:9) - Instagram (1:1) - 小红书 (4:5) |
多平台视口适配系统。
| 平台 | 比例 | 分辨率 | 说明 |
|---|---|---|---|
| 抖音 | 9:16 | 1080×1920 | 竖屏短视频 |
| 小红书 | 9:16 | 1080×1920 | 竖版图文 |
| B站 | 16:9 | 1920×1080 | 横屏视频 |
| YouTube | 16:9 | 1920×1080 | 横屏视频 |
| 1:1 | 1080×1080 | 方形帖子 | |
| 小红书 | 4:5 | 1080×1350 | 竖版图文 |
import { VIEWPORT_CONFIGS, ASPECT_RATIO_RULES } from "codemotion/shared/presets/viewport-rules";
// 获取平台配置
const douyin = VIEWPORT_CONFIGS.douyin;
// { aspectRatio: "9:16", width: 1080, height: 1920, ... }
// 缩放因子(相对于 16:9)
const scale = ASPECT_RATIO_RULES["9:16"].scale; // 0.5625
// ViewportWrapper.tsx
import { useVideoConfig } from "remotion";
import { VIEWPORT_CONFIGS } from "codemotion/shared/presets/viewport-rules";
export const ViewportWrapper: React.FC<{
platform: Platform;
children: React.ReactNode;
}> = ({ platform, children }) => {
const { width, height } = useVideoConfig();
const config = VIEWPORT_CONFIGS[platform];
// 计算缩放因子
const scale = width / config.width;
return (
<div
style={{
transform: `scale(${scale})`,
transformOrigin: "center center",
width: config.width,
height: config.height,
}}
>
{children}
</div>
);
};
┌─────────────────────┐
│ │
│ 顶部留白区 │
│ (约25%高度) │
├─────────────────────┤
│ │
│ 核心内容区 │
│ (居中显示) │
│ │
├─────────────────────┤
│ │
│ 底部留白区 │
│ (字幕/进度条) │
│ │
└─────────────────────┘
┌───────────────────────────────────────────┐
│ ┌─────────┐ ┌─────────┐ │
│ │ │ │ │ │
│ │ 左侧 │ 核心内容 │ 右侧 │ │
│ │ 字幕 │ │ 字幕 │ │
│ │ │ │ │ │
│ └─────────┘ └─────────┘ │
└───────────────────────────────────────────┘
import { AbsoluteFill } from "remotion";
import { ViewportWrapper } from "./ViewportWrapper";
import { SceneContent } from "./SceneContent";
export const MyVideo = () => {
return (
<AbsoluteFill style={{ backgroundColor: "#000" }}>
{/* 抖音版本 */}
<ViewportWrapper platform="douyin">
<SceneContent />
</ViewportWrapper>
{/* B站版本 */}
<ViewportWrapper platform="bilibili">
<SceneContent />
</ViewportWrapper>
</AbsoluteFill>
);
};
# 渲染抖音版本 (9:16)
npx remotion render MyVideo --composition-id=DouyinVideo out/douyin.mp4
# 渲染 B站版本 (16:9)
npx remotion render MyVideo --composition-id=BilibiliVideo out/bilibili.mp4
| 平台 | 字幕位置 | 说明 |
|---|---|---|
| 抖音 | 底部 15% | 竖屏阅读习惯 |
| B站 | 左侧 20% | 横屏可用右侧 |
| 底部 10% | 方形空间有限 | |
| 小红书 | 底部 20% | 竖版图文 |