2026年11月14日

十五到二十秒的 App 宣傳短片結構

短影音App

常見需求:要為已經做好的 App 做幾支 15 到 20 秒的短影音,放到各個社群平台當宣傳。秒數這麼短,能講的只有一件事:這個產品解決什麼,觀眾下一步要做什麼。

這次測試到哪裡

timing_sheet.py 已在本機測過:18 秒會拆成鉤子、示範與行動呼籲,且秒數加總正確;30 秒會被拒絕。ffmpeg 直式輸出也已用測試片跑過。若來源影片短於你設定的秒數,輸出不會自動補足長度。沒有拍攝真實 App 操作,也沒有投放廣告。

三層怎麼分工

層做什麼
企劃每支片子只示範一個功能,寫出 15–20 秒的節拍表。
拍攝或錄屏錄真實操作畫面;不要用生成畫面假裝這是產品介面。
後製裁成直式、核對長度,字幕避免擋住關鍵按鈕。

先排出秒數

timing_sheet.py
#!/usr/bin/env python3
"""依總秒數排出 15–20 秒宣傳片的鉤子、示範與行動呼籲。"""

from __future__ import annotations

import argparse
import json
import sys


def plan(total: float) -> dict:
    if total < 15 or total > 20:
        raise ValueError("總長度請介於 15 與 20 秒(含)。")
    hook = 3.0 if total <= 17 else 4.0
    cta = 4.0
    demo = round(total - hook - cta, 1)
    return {
        "total_seconds": total,
        "beats": [
            {"name": "hook", "seconds": hook, "purpose": "前三到四秒說明這是什麼產品、為什麼要看下去"},
            {"name": "demo", "seconds": demo, "purpose": "只示範一個核心操作,不要一次介紹全部功能"},
            {"name": "cta", "seconds": cta, "purpose": "告訴觀眾下一步:下載、預約或看說明"},
        ],
    }


def main() -> int:
    parser = argparse.ArgumentParser(description="短秒數宣傳結構")
    parser.add_argument("--seconds", type=float, default=18)
    parser.add_argument("-o", "--output")
    args = parser.parse_args()
    try:
        result = plan(args.seconds)
    except ValueError as exc:
        print(exc, file=sys.stderr)
        return 1
    text = json.dumps(result, ensure_ascii=False, indent=2)
    print(text)
    if args.output:
        Path = __import__("pathlib").Path
        Path(args.output).write_text(text + "\n", encoding="utf-8")
    return 0


if __name__ == "__main__":
    sys.exit(main())

執行

python timing_sheet.py --seconds 18

錄屏時用真實建置的畫面。若產品尚在開發,就明白寫這是測試介面,不要生成一個「看起來已經上線」的假畫面。音樂、字型與第三方素材要有使用權利。各平台的廣告規格與標示要求以該平台當下文件為準。

轉直式並限制長度

bash make_vertical.sh demo.mp4 promo-18.mp4 18

常見錯誤

下載