從 Podcast 音訊到社群貼文的 AI 內容管線。
一條龍閉環:上傳音訊 → AI 轉錄 → AI 風格化文案生成(6 平台)→ 排程直發(Threads + Facebook)
市場上的工具要嘛只做排程(Buffer)、要嘛只做音訊轉文字(Podwise),沒有一個產品能把「音訊 → AI 文案 → 直接發布」串成完整閉環。CastFlow 填補這個缺口,讓 Podcast 創作者不再需要在多個工具間切換。
- Podcast 創作者,每週 1-2 集
- 需要將音訊內容快速轉化為多平台社群文案
- 繁體中文為主要語言
| 功能 | 說明 |
|---|---|
| 音訊上傳 | 支援 MP3 / WAV / M4A / AAC,瀏覽器端自動壓縮至 ≤25MB |
| AI 轉錄 | Groq Whisper(whisper-large-v3-turbo),帶時間軸 |
| AI 文案生成 | 同時產出 6 平台文案:Threads、Facebook、Instagram、LinkedIn、Blog、Newsletter |
| 風格 DNA | 從你的歷史貼文提取 7 維度風格特徵,生成文案自動套用你的語氣 |
| 排程直發 | Threads + Facebook 透過 Meta API 自動發布 |
| 一鍵複製 | IG、LinkedIn、Blog、Newsletter 快速複製手動發布 |
| Dashboard | 統計總覽 + 排程行事曆 |
使用者
│
▼
┌─────────────────────────────────┐
│ Next.js 15 (App Router) │
│ 前端 UI + API Routes │
└──────┬──────┬──────┬──────┬─────┘
│ │ │ │
▼ ▼ ▼ ▼
Supabase Groq Claude Meta
Storage Whisper CLI Graph API
(音訊) (轉錄) (文案) (發布)
│
▼
Supabase PostgreSQL
(資料庫 + pg_cron 排程)
| 層級 | 選擇 | 理由 |
|---|---|---|
| 前端 | Next.js 15 (App Router) + Tailwind CSS + shadcn/ui | SSR + API Routes 一體,快速開發 |
| 後端 | Next.js API Routes | MVP 不需獨立後端服務 |
| 資料庫 | Supabase (PostgreSQL) | DB + Storage + Auth 一站式 |
| 音訊儲存 | Supabase Storage | 直接上傳,免設定 S3 |
| 音訊壓縮 | ffmpeg.wasm(瀏覽器端) | 壓至 64kbps mono 16kHz,確保 ≤25MB |
| 轉錄 | Groq Whisper API (whisper-large-v3-turbo) | 速度極快,免費額度足夠 |
| 文案生成 | Claude CLI 或 Anthropic API(雙模式) | CLI 走 Pro/Max 額度零費用;API 適用 Vercel 部署 |
| 排程發布 | Meta Graph API + Threads API | Threads + FB 直發 |
| 排程觸發 | Supabase pg_cron | 分鐘級排程,免費方案即可 |
| 部署 | Vercel | Next.js 原生整合 |
1. 上傳音訊
使用者選擇檔案 → ffmpeg.wasm 瀏覽器端壓縮 → 上傳至 Supabase Storage → 建立 episode 記錄
2. AI 轉錄
上傳完成自動觸發 → 從 Storage 取得音訊 → Groq Whisper 轉錄 → 存入 transcripts 表(含逐段時間軸)
3. AI 文案生成
選擇集數 + 風格(可選)→ Claude CLI 或 API 根據逐字稿 + 風格 DNA 生成 6 平台文案 → 存入 contents 表
4. 編輯與發布
6 平台 Tab 檢視/編輯 → 設定排程時間或立即發布 → Meta API 發送至 Threads / Facebook
→ 其他平台一鍵複製手動發布
從你的歷史貼文中 AI 提取 7 個維度的風格特徵:
- 結構模式 — Hook → 條列 → 金句
- 開場 Hook — 反差型 / 提問型 / 宣告型 / 共感型
- 語氣特徵 — 口語比例、用字習慣、人稱用法
- CTA / 收尾模式 — 行動呼籲的慣用方式
- 長度 / 格式 — 字數分布、emoji 使用量
- 高互動特徵 — 從歷史數據回推
- 禁忌 — 明確避免的表達模式
貼入至少 3 篇歷史貼文(含互動數據),AI 自動分析產出風格 DNA,後續生成文案時自動套用。
/ → Dashboard(統計數據 + 最近集數 + 排程概覽)
/episodes → 集數列表
/episodes/new → 上傳新音訊
/episodes/[id] → 單集詳情(逐字稿 + 已生成內容)
/episodes/[id]/generate → AI 文案生成
/episodes/[id]/edit → 內容編輯器(6 平台 Tab)
/schedule → 排程行事曆
/styles → 風格 DNA 管理
/styles/new → 建立新風格(貼入範例 → 提取 DNA)
/styles/[id] → 查看 / 編輯風格 DNA
/settings → Meta 帳號連結 + Token 管理
共 9 張表:
| 表名 | 用途 |
|---|---|
episodes |
集數(標題、音訊 URL、狀態) |
transcripts |
逐字稿(全文 + 逐段時間軸 JSON) |
writing_rules |
寫作規則(通用 + 各平台) |
style_dnas |
風格 DNA(7 維度 JSON) |
style_examples |
風格範例庫(貼文 + 互動數據) |
platform_templates |
平台模板(system prompt + 格式規則) |
contents |
生成的文案(平台、內容、排程、狀態) |
publish_logs |
發布紀錄(API 回應、成功/失敗) |
settings |
系統設定(Meta Token 等 key-value) |
- Node.js 18+
- Supabase 專案(supabase.com)
- Groq API Key(console.groq.com)
- Claude CLI(
claude --print用於文案生成) - Meta Developer App(發布用,可稍後設定)
git clone https://github.com/lu791019/castflow.git
cd castflow
npm install建立 .env.local:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Groq(轉錄用)
GROQ_API_KEY=your-groq-api-key
# API 保護(自訂密鑰)
API_SECRET_KEY=your-secret-key
# AI 文案生成(二擇一,也可在 Settings 頁面設定)
# 方式 A:本地有 Claude CLI → 不需設定,自動使用 claude --print
# 方式 B:Vercel 部署或無 CLI → 設定以下 API Key
ANTHROPIC_API_KEY=sk-ant-... # 選填,設定後走 Anthropic API
ANTHROPIC_MODEL=claude-sonnet-4-20250514 # 選填,預設 Sonnet 4在 Supabase SQL Editor 中依序執行:
supabase/migrations/001_initial_schema.sql
supabase/migrations/002_settings.sql
npm run devnpm run build
npm start| 路徑 | 方法 | 說明 | 驗證 |
|---|---|---|---|
/api/transcribe |
POST | 觸發音訊轉錄 | x-api-key |
/api/generate |
POST | 觸發 AI 文案生成 | x-api-key |
/api/publish |
POST | 發布單篇文案 | x-api-key |
/api/publish-scheduled |
POST | 發布所有到期排程 | x-api-key |
所有 API 透過 x-api-key header 驗證,值為環境變數 API_SECRET_KEY。
src/
├── app/ # Next.js App Router 頁面
│ ├── api/ # API Routes
│ │ ├── generate/route.ts # 文案生成
│ │ ├── transcribe/route.ts # 音訊轉錄
│ │ ├── publish/route.ts # 單篇發布
│ │ └── publish-scheduled/ # 排程發布
│ ├── episodes/ # 集數管理頁面
│ ├── schedule/ # 排程行事曆
│ ├── settings/ # 設定(Meta Token)
│ └── styles/ # 風格 DNA 管理
├── components/
│ ├── content/ # 文案編輯器元件
│ ├── episodes/ # 上傳表單、轉錄觸發元件
│ ├── layout/ # Sidebar 佈局
│ └── ui/ # shadcn/ui 基礎元件
└── lib/
├── anthropic/ # Claude CLI 客戶端 + 文案生成
├── audio/ # ffmpeg.wasm 音訊壓縮
├── meta/ # Meta Graph API(FB + Threads)
├── openai/ # Groq Whisper 轉錄
├── prompts/ # AI prompt 模板
├── supabase/ # Supabase 客戶端(client/server/admin)
└── types/ # TypeScript 型別定義
以下是一次完整的端到端測試記錄。
- 27 分鐘中文 Podcast(主題:AI 時代的職涯轉型與副業策略)
- 原始檔案:MP3 格式
- 進入
/episodes/new,選擇 MP3 檔案 - 瀏覽器端 ffmpeg.wasm 自動壓縮(64kbps mono 16kHz)
- 上傳至 Supabase Storage,建立 episode 記錄
上傳完成後自動觸發 Groq Whisper 轉錄:
- 耗時:18 秒
- 產出:7,624 字逐字稿 + 651 個時間軸片段
- 語言:自動偵測為中文
從歷史 Threads 貼文中提取風格特徵:
- 進入
/styles/new,選擇平台「Threads」 - 貼入至少 3 篇歷史貼文 + 互動數據(本次使用 78 篇)
- AI 分析產出 7 維度風格 DNA:
- 結構模式:Hook → 論述展開 → 條列重點 → CTA 導流
- 開場 Hook:反差型 / 提問型 / 宣告型 / 自嘲型 / 數據型
- 語氣特徵:口語比例極高、第一人稱敘事、斷言式語氣
- CTA / 收尾:「留言處繼續看」分段式 CTA
- 長度 / 格式:主力 200-500 字、大量換行、Emoji 中等偏多
- 高互動特徵:反差斷言 + 職涯焦慮主題
- 禁忌:不寫學術腔、不做中立派、不過度修飾
- 進入
/episodes/[id]/generate - 選擇「Dex Threads 風格 v1」
- AI 根據逐字稿 + Style DNA 生成 6 平台文案
- 耗時:~109 秒(CLI 模式,6 平台同時)
- 在
/episodes/[id]/edit的 6 平台 Tab 中檢視各平台文案 - 可逐平台編輯、重新生成(單平台約 30 秒)
- Threads / Facebook 可直接排程或立即發布
- 其他平台一鍵複製手動發布
| 步驟 | 耗時 |
|---|---|
| 音訊壓縮(瀏覽器端) | ~10 秒 |
| Groq Whisper 轉錄(27 分鐘音訊) | 18 秒 |
| 6 平台文案生成(CLI 模式) | ~109 秒 |
| 單平台重新生成 | ~30 秒 |
| 端到端總計 | ~2.5 分鐘 |
| 項目 | 費用 |
|---|---|
| Groq Whisper | 免費額度內 |
| Claude 文案生成 | CLI 模式走 Pro/Max 額度零費用;API 模式按 token 計費 |
| Supabase | Free tier |
| Vercel | Free tier |
| 月總計 | ~$0(Pro 訂閱費用除外) |
- Phase 1 — 專案初始化(Next.js + Supabase + shadcn/ui)
- Phase 2 — 音訊上傳與轉錄
- Phase 3 — AI 文案生成
- Phase 4 — 排程發布(Threads + Facebook)
- Phase 5 — 風格 DNA 系統
- Phase 6 — Dashboard 統計總覽
- Vercel 部署
- Meta Developer App 設定
- Supabase pg_cron 排程設定
- 文案生成支援雙模式(CLI / API),可在 Settings 頁面或環境變數切換
- 音訊單檔限 25MB(Whisper API 限制),超過需先壓縮
- 排程發布依賴 Supabase pg_cron,需另行設定
- Meta API Token 需手動取得並貼入 Settings 頁面
- 目前無用戶認證系統,API 僅靠
x-api-key保護
Private — All rights reserved.