Skip to content

feat: 實作 Groq Whisper 影片轉錄(Issue #4)#7

Merged
cablate merged 4 commits intomasterfrom
feat/video-transcription
Apr 10, 2026
Merged

feat: 實作 Groq Whisper 影片轉錄(Issue #4)#7
cablate merged 4 commits intomasterfrom
feat/video-transcription

Conversation

@cablate
Copy link
Copy Markdown
Owner

@cablate cablate commented Apr 10, 2026

Summary

  • 新增 GroqTranscriber 實作,接入 Groq Whisper API(whisper-large-v3)
  • Groq API 原生支援 URL 參數,直接傳影片 URL 不需下載到本地
  • language=zh 優化中文語音辨識準確度
  • 透過環境變數啟用:TRANSCRIBER=groq + GROQ_API_KEY=gsk_...
  • README 補充 .env 設定說明與費用估算(~$0.006/分鐘)

Closes #4

架構

影片貼文 → isVideoPost() 判斷 → GroqTranscriber.transcribe(url)
  → Groq Whisper API(url 參數直傳)→ transcriptText 注入 UnifiedPost
  → LLM 分析時附加 [影片轉錄] 前綴

Test plan

  • 設定 TRANSCRIBER=groq + GROQ_API_KEY,執行 npm run dev
  • 確認影片貼文有 [影片轉錄] 輸出
  • 確認純文字/圖片貼文不受影響
  • 確認未設定 TRANSCRIBER 時行為不變(noop)

🤖 Generated with Claude Code

cablate and others added 4 commits April 10, 2026 14:05
- 新增 src/transcribe.ts:Transcriber 介面(策略模式)+ 工廠函式
  - NoopTranscriber(預設:不轉錄)
  - isVideoPost() 判斷影片貼文
  - transcribeVideoPosts() 批次處理
- UnifiedPost 新增 transcriptText 欄位
- index.ts:抓取後自動對影片貼文觸發轉錄,分析時包含轉錄文字
- facebook.ts:mediaUrl 優先取 video_url/playable_url(影片實際 URL)

具體轉錄服務實作待定,只需新增 Transcriber 實作並註冊到工廠。
透過 TRANSCRIBER 環境變數選擇轉錄器(預設 noop)。

Closes #4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 新增 GroqTranscriber:直接傳影片 URL 給 Groq Whisper API,不需下載到本地
- 使用 whisper-large-v3 模型,language=zh 優化中文辨識
- 透過 TRANSCRIBER=groq + GROQ_API_KEY 環境變數啟用
- README 補充 .env 設定與費用估算

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Facebook 影片 URL 實際是頁面連結(reel/watch),Groq API 無法直接存取。
改為:偵測 Facebook URL → yt-dlp 下載音訊 → 傳檔案給 Groq → 清理暫存。
非 Facebook 的直連 URL 仍走 url 參數快速路徑。

同時修正 facebook.ts mediaUrl 取值:影片貼文優先取 media.url(reel 連結),
而非 thumbnail(縮圖 jpg),確保轉錄器拿到正確的來源。

已驗證:3 個影片貼文全部成功轉錄(28s/19s/49s)。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@cablate cablate merged commit 50cf513 into master Apr 10, 2026
3 checks passed
@cablate cablate deleted the feat/video-transcription branch April 10, 2026 10:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

如果發的是影片怎麼辦

1 participant