# 竖屏榜单倒数

> 9:16 Top N 倒数榜单模板。开场亮出榜单名，随后每条一张玻璃卡，从最后一名数到第一名，适合 GitHub 热榜、工具盘点。

Source: https://www.remixmate.ai/learn/templates/github-repo-rank · Updated: 2026-09-30

## 什么时候选它

内容天然是一张**排行榜**：GitHub 周榜、月度涨星、工具盘点、「N 个值得关注的项目」。每一条都有一个可比较的核心数字，观众想看的是「谁排第一」。

模板把悬念留到最后：从第 N 名倒数到第 1 名，名次越靠前配色越贵（长尾紫 → 3~5 名橙 → 第二银 → 第一金）。

## 规格

| 项 | 值 |
|----|----|
| 画幅 | 9:16（竖屏，1080×1920） |
| 时长 | 15–300 秒 |
| 内容语言 | 中文 |
| 场景结构 | 1 个开场 + N 张排名卡（N = 1–10，默认 10），按 #N → #1 倒数 |
| 旁白 | **必须**，每张卡一段；卡片时长由旁白长度决定，不是固定秒数 |
| 字幕 | 跟随旁白 |
| 需要的素材 | 音频（旁白） |

开场约 2.5 秒，参考片没有片尾，硬切在 #1 卡上。ending 场景可选，渲染与排名卡相同，只用来在榜首后再定格一段。

## 版面

- **开场**：翻页动画亮出榜单名（`textLayers` 的 headline）+ 副标题（subheadline）。标题不会自动追加「· Top N」，数量请写进副标题。
- **排名卡**：页眉（全片常驻）→ 排名数字 + 右上分类徽章 → `owner/repo`（等宽字体）→ 一句话说明（最多 3 行）→ 指标名 + 滚动增长的大数字 → 进度条 + 「热度 xx%」。
- **背景**：默认全程静止的暗色渐变，刻意压低码率，让卡面文字在低码率下也清楚。

主题变体 6 套：purple 暗紫科技（默认）、crimson 热血红黑、emerald 开源绿、graphite 石墨中性、midnight 午夜深蓝、slate 冷蓝灰。

## 关键参数

每张卡的内容都写在该场景的 `customPayload` 里，**不要**塞进 `textLayers`。

| 参数 | 位置 | 类型 / 取值 | 默认 | 说明 |
|------|------|-------------|------|------|
| `item_count` | gen-script 参数（CLI `--item-count`） | 整数 1–10 | 10 | 榜单条数。传**用户要的张数本身**：Top 5 就传 5，得到 1 + 5 = 6 个场景 |
| `topN` | `customPayload.topN` | 整数 1–10 | 10 | 榜单数量，每个场景写同一个值。越界夹到 1–10，无法解析回落 10。只改它不会裁剪已有场景 |
| `item.rank` | `customPayload.item` | 整数 1–10 | — | **必填**。决定配色档位：1 金、2 银、3~5 橙、其余紫 |
| `item.repo` | `customPayload.item` | 字符串 | — | **必填**。`owner/repo`，等宽字体，长名自动换行 |
| `item.starDelta` | `customPayload.item` | 数字 | — | **必填**。核心数字，驱动滚动动画与进度条。`"6,695"` 这类纯数字字符串可解析，`12k` 视为非法 |
| `item.description` | `customPayload.item` | 字符串 | — | 一句话说明，支持 `\n` 断行，最多显示 3 行 |
| `item.badge` | `customPayload.item` | 字符串 | — | 右上分类徽章，建议全大写短语 |
| `item.heatPct` | `customPayload.item` | 0–100 | 自动推算 | 显式热度百分比，一般不用传 |
| `maxStarDelta` | `customPayload.maxStarDelta` | 数字 | — | 进度条分母，传榜首的 `starDelta`，**所有卡用同一个值**。不传则每张卡都是满格 |
| `header` | `customPayload.header` | 字符串（建议 ≤ 14 字） | `GitHub · 开源热榜` | 顶部页眉，请写明口径，如 `GitHub · 本周热榜` |
| `metricLabel` | `customPayload.metricLabel` | 字符串 | `新增 STAR` | 大数字上方的指标名，如 `本周新增 STAR` / `累计 STAR` |
| `heatLabel` | `customPayload.heatLabel` | 字符串 | `热度` | 进度条下方小字前缀，如 `本周热度` |
| `heatScale` | `customPayload.heatScale` | `linear` / `log` / `rank` | `linear` | 进度条映射。榜首断层领先时长尾会挤在一起，想拉开差异用 `log`，只做名次指示用 `rank` |
| `countUp` | `customPayload.countUp` | `durationSec` 0.1–5、`delaySec` ≥ 0、`from`、`easing`: `easeOut` / `linear` | 0.75 / 0.1 / 0 / `easeOut` | 数字滚动动画 |
| `cardStyle.centerY` | `customPayload.cardStyle` | 0.2–0.8 | 0.5 | 卡片垂直中心位置，上下留白是为了躲开 App 标题栏和互动按钮 |
| `cardStyle.numberSize` | `customPayload.cardStyle` | 24–120 | 66 | 大数字字号，六七位数指标调到 52~58 |
| `cardStyle.hideBadge` / `hideHeatLabel` | `customPayload.cardStyle` | 布尔 | false | 隐藏徽章 / 隐藏「热度 xx%」小字 |
| `cardStyle.tierColors` | `customPayload.cardStyle` | 档位 `gold` / `silver` / `bronze` / `base`，字段 `accent` / `badgeBg` / `badgeText` / `starColor` | — | 逐档覆盖配色 |
| `opening.preset` | `customPayload.opening`（开场场景） | `page-turn` / `grid-rise` / `title-only` / `asset` | `page-turn` | 翻书 / 网格 / 只有标题（最省）/ 用 `backgroundAssetId` 的图片铺满（只支持图片）。`scroll-unfurl` 是旧名，按 `page-turn` 处理 |
| `opening.pages` | `customPayload.opening` | 整数 2–8 | 5 | 翻书页数 |
| `opening.curlDeg` | `customPayload.opening` | 0–60 | 26 | 纸张弯曲强度 |
| `opening.grid` / `streaks` | `customPayload.opening` | 布尔 / 整数 0–60 | true / 18 | 透视网格开关 / 下落光条数量 |
| `background.preset` | `customPayload.background` | `static` / `solid` / `gradient` / `image` / `video` / `noise` / `none` | `static` | `video` 和带运镜的 `image` 会明显抬高码率与渲染时间 |
| `background.overlayOpacity` | `customPayload.background` | 0–1 | 0.72（开场 0.45） | 图片 / 视频背景上的蒙版。纯白或高调图片建议提到 0.85 左右 |
| `background.motion` | `customPayload.background` | `static` / `kenburns-in` / `kenburns-out` / `pan-left` / `pan-right` | `static` | 图片运镜，本模板默认不动 |
| `tailPadSec` | `customPayload.tailPadSec` | 0–5 秒 | 1.5 | 旁白后的静音尾巴，想要紧凑节奏传 0.15~0.5 |
| `coverHook` | `customPayload.coverHook` | 字符串 | 回落开场标题 | 封面金句 |

`totalItems` 是旧数据兼容字段，同时存在时 `topN` 优先，新脚本不要用。

## 什么时候别选它

- **只推一个项目** → [spotlight-card](/learn/templates/spotlight-card)。
- **要演示怎么用、一步步操作** → [screen-walkthrough](/learn/templates/screen-walkthrough)。
- **超过 10 条** → 本模板上限就是 Top 10，要么拆成两条片子，要么换模板。
- **要横屏** → 只有 9:16。

## 常见坑 {#pitfalls}

- **把场景总数当成条数传**。Top 5 要传 `item_count: 5`；传成 `scenes=5` 会静默只出 4 张卡。
- **榜单数据写在 topic、旁白或 textLayers 里**。gen-script 只产出骨架，这些地方的数据不会自动填进卡片。每张卡的 `customPayload.item`（rank / repo / starDelta / description）必须逐个填好，缺失或非法时整卡显示「榜单数据暂不可用」。
- **没写榜单口径**。`header` / `metricLabel` / `heatLabel` 的缺省值不带周期，不会出错字，但画面看不出是周榜还是月榜。每张卡都显式写上「本周 / 今日 / 本月」。
- **`maxStarDelta` 各卡不一致或没传**。进度条会失去可比性，或者全部满格。
- **标题里的数量和条数对不上**。gen-script 只告警不改写；渲染时只会同步 1–10 之间且全文一致的数字，「Top 100」和互相矛盾的写法不动。脚本里的文案是你确认时看到的，最好一开始就写对。
- **每张卡都给固定 5 秒**。卡片时长跟旁白走，每张卡都要有自己的旁白。
