Community程式設計與開發github.com

抖创工坊

抖音视频采集 → 转录 → AI 洗稿 → 视频生成,並把內容**自動發布到抖音(圖文)與今日頭條(文章)**

抖创工坊 是什麼?

抖创工坊是一個面向抖音內容復盤與二次創作的本地桌面工具,核心流程為:下載影片、提取音頻、內建 Whisper 轉錄、AI 洗稿、生成分鏡,並可選使用 HyperFrames 本地渲染 9:16 MP4。該工具支援用戶主頁批量採集、簽名 API 直調、無水印影片下載、合集增量更新,並提供兩條自動發布通路:抖音圖文(透過外部 `social-auto-upload` CLI)與今日頭條文章(自研 Playwright 執行器,復用打包的 headless Chromium)。發布中心採用嚴格的紀律:每一步皆進行讀回校驗,提交後僅標記為「已提交」,需人工至平台後台核實後再點「標記已發布」,絕不自動重試,以避免重複發布風險。此技能適用於 Claude Code 等 AI 代理,協助開發者快速理解專案的全貌與使用方式。支援 Electron 桌面應用(macOS 與 Windows),內建離線 ASR,無需 ASR API Key 或 Python。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add LiChangZheng10086/doyin_ai_video

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

預覽

來自技能 README

License
Node
Electron
React

說明文件

抖創工坊

抖音影片採集 → 轉錄 → AI 洗稿 → 影片生成,並把內容自動發布到抖音(圖文)與今日頭條(文章)

🚀 兩條自動發布通路(核心能力)

抖音圖文與今日頭條文章皆能由本機瀏覽器自動提交到平台 —— 各自附帶包級預覽、逐字段字數校驗與發布選項,提交前必經確認:

通路引擎登入方式關鍵約束
抖音圖文外部 social-auto-upload CLI(可選裝)複用已有抖音登入態一次只允許一個任務;不自動重試
今日頭條文章自研執行器(Playwright,複用打包好的 headless Chromium)掃碼(應用內二維碼 / 瀏覽器視窗)AI 成文 + 16:9 封面;封面必填

兩條通路共同的紀律:每一步都讀回校驗(任何一步失敗都停在點「發布」之前並寫明停在哪一步);提交後只記「已提交」,是否真的發出由人工到平台後台核實後點「標記已發布」;絕不自動重試(重試前必須先確認上一次是否已發出 —— 重複發布是最大的風險)。影片與其餘平台(小紅書 / 影片號 / B 站)仍以人工交付為主。

發布中心按渠道分欄(抖音圖文 / 今日頭條文章 / 影片人工交付),三個渠道各自獨立,不會混在一起看。

能力概覽

一個面向內容復盤和二次創作的本地桌面工具。當前主鏈路聚焦為:下載影片、提取音頻、內建 Whisper 轉錄、AI 洗稿、生成影片分鏡,並可選使用 HyperFrames 本地渲染 9:16 MP4。支援用戶主頁批量採集、簽名 API 直調、無水印影片下載、合集增量更新,新任務採用手動分步執行,每一步都支援自動 3 次重試和失敗後的手動重試。

License Node Electron React

⚠️ 免責聲明:本項目僅供學習和技術研究使用。使用者應遵守相關平台的服務條款和法律法規,不得將本項目用於任何商業用途或侵犯第三方權益。作者不對使用本項目產生的任何後果承擔責任。

🤝 尋找貢獻者

本項目目前由個人維護,歡迎一起完善!

當前特別需要幫助的方向:

  • 抖音簽名(a_bogus / X-Bogus)穩定性維護
  • Whisper 模型體積與中文準確率最佳化
  • HyperFrames 影片樣式 / TTS 配音
  • UI/UX 改進與 Windows 打包測試
  • 文檔、測試用例、範例影片

→ 查看貢獻指南 | 提交 Issue | 討論區

核心功能

手動分步流程

輸入:抖音分享連結 / 分享文字 / 用戶主頁連結
  ↓
建立任務 / 合集:解析並保存輸入,不自動跑完整鏈路
  ↓
使用者逐步確認執行:
  1️⃣ 下載影片(無水印優先 → 簽名 API → yt-dlp)
  2️⃣ 提取音頻(ffmpeg → 16kHz mono WAV)
  3️⃣ ASR 轉文案(內建 whisper.cpp)
  4️⃣ AI 洗稿
  5️⃣ 產生影片提示詞 / 分鏡
  6️⃣ 產生本機豎屏影片(可選,HyperFrames)
  7️⃣ 發布中心交付(可選;抖音圖文 / 今日頭條文章可自動提交,提交後人工核實)
  ↓
輸出:📝 結構化轉錄 + ✍️ 清洗稿 + 🎬 MP4 + 📦 發布交付包

功能特性

  • ✅ 影片下載 — 無水印優先下載,支援簽名 API 和 yt-dlp 多策略降級
  • ✅ 用戶主頁採集 — 輸入博主主頁連結,批次取得全部作品列表
  • ✅ 合集管理 — 按博主建立合集,批次建立子任務、批次執行步驟
  • ✅ 合集增量更新 — 一鍵檢查博主新影片,去重追加到已有合集
  • ✅ 簽名 API 直調 — a_bogus + X-Bogus 簽名,繞過瀏覽器直接呼叫抖音內部 API
  • ✅ Cookie 管理 — 支援掃碼登入、手動貼上 Cookie 兩種方式取得登入態
  • ✅ 音頻提取 — 使用 ffmpeg 抽取標準化音頻,並儲存音頻 manifest
  • ✅ 語音轉錄 — 內建 whisper.cpp + ggml-small,本機完成中文轉錄
  • ✅ 離線 ASR — 無需 ASR API Key、Python、FunASR 或 faster-whisper
  • ✅ AI 洗稿 — 基於轉錄優先清洗,輸出標題、摘要、要點、清洗稿、口播稿和品質提示
  • ✅ 影片分鏡生成 — 基於清洗稿生成影片提示詞和分鏡腳本
  • ✅ Skill 知識蒸餾 — 從合集轉錄文字 AI 蒸餾生成 Claude Code Skill(SKILL.md)
  • ✅ Skill 管理 — 獨立的 Skill 管理頁面,支援查看、重新命名、刪除已生成的 Skill
  • ✅ 本機影片生成 — 使用 HyperFrames CLI 將清洗稿和字幕節奏渲染為 9:16 MP4
  • ✅ 原影片回看 — 詳情頁可在「原影片 / 成片」之間切換,直接回看轉錄時下載的抖音原片
  • ✅ 素材庫 — 獨立「素材」頁面,手動上傳與管理圖片、音頻(圖片可選入圖文發布)
  • ✅ 發布中心 — 將成片整理為獨立交付包,生成四平台簡體中文文案;按渠道分欄,標註進度與人工發布追蹤
  • ✅ 今日頭條文章發布 — AI 成文 + 16:9 封面 + 掃碼登入,自動提交到頭條號(提交前必經預覽,提交後由人工核實再「標記已發布」)。2026-09-20 真機實測發布成功
  • ✅ 可折疊側欄 — 桌面端左側導覽可展開/收起,展開時顯示文字標籤,收起為純圖示
  • ✅ 任務垃圾桶 — 刪除任務後保留 30 天,可恢復或永久刪除
  • ✅ 多 AI 模型 — 支援 DeepSeek、OpenAI 及 OpenAI-compatible 中轉服務
  • ✅ 桌面應用 — 基於 Electron,支援 macOS 和 Windows
  • ✅ 即時回饋 — 任務進度即時更新,詳細展示每個步驟狀態和錯誤

本機操作者與權限

  • 面向使用者的登入、帳號切換、使用者管理介面已移除:應用啟動時自動取得「本機操作者」工作階段,無需登入或選擇帳號。
  • 自動工作階段優先複用已有的啟用中管理員(按 createdAt / id 升序確定性選取);只有在不存在任何管理員時才建立一個無 PIN 的「本機使用者」。不會刪除、不改名任何歷史使用者。
  • 管理員 PIN 的介面契約沒有被放寬:直接呼叫 POST /api/local-sessions 開管理員工作階段仍必須提供正確 PIN。無 PIN 分支只存在於 POST /api/local-sessions/auto 這一條顯式命名的路徑上。
  • 角色仍然決定發布權限與審計:撤回已發布狀態、刪除/恢復發布包屬於管理員操作;每條審計記錄仍帶 actor 快照。單機使用下當前操作者即管理員,因此這些操作都可用。
  • 本機角色用於工作流程權限控制和操作者審計,不是雲端帳號,也不是強安全邊界;能夠存取本機儲存或作業系統帳戶的人仍可能讀取或修改本機資料。

發布中心

  • 發布中心預設只準備本機交付包和輔助人工操作。影片不會自動上傳;抖音圖文可選地呼叫外部 social-auto-upload(sau)CLI 自動提交,且提交前必經預覽確認、提交後仍由人工點「標記已發布」確認。
  • 今日頭條文章走另一條通路:自研 Playwright 執行器(複用打包好的 chrome-headless-shell,零額外下載), 按「洗稿內容 → AI 成文 → 文章包(article.html + 16:9 封面)→ 預覽 → 提交」完成發布。 登入只能掃碼(頭條號沒有可貼上的憑據):到「設定 → 今日頭條」點「掃碼登入」(應用內顯示二維碼) 或「開啟瀏覽器掃碼登入」(彈出真實瀏覽器視窗);登入態保存在 storage 內的持久化 profile, 掃一次之後發布與自檢都不用再掃。相關環境變數:TOUTIAO_BROWSER_BINARY(瀏覽器路徑, 缺省按「顯式配置 → 打包資源 → Playwright 快取 → 系統 Chrome」解析)、TOUTIAO_PROFILE_DIR(工作階段目錄,必須落在 storage 內)。 每一步都有讀回校驗:任何一步失敗都停在點「發布」之前;「同時發布微頭條」預設關閉且關不掉就不發布。
  • 與抖音通路同一條不變式:機器只把內容送出去,記錄為「已提交」;task.status 全程不變, 也絕不自動重試(重試前必須先確認上一次是否已發出 —— 重複發布是本功能最大的風險)。
  • 發布中心自身不保存平台憑據;走圖文自動發布時,會把已有的抖音登入態(~/.douyin-ai-video/douyin-cookie.txt) 轉換成 Playwright storage_state 寫到 <SAU_BASE_DIR>/cookies/douyin_<account>.json(權限 600)供外部引擎使用。
  • 從任務詳情頁的已生成成片進入「加入發布中心」,按“成片 → 平台 → 文案 → 排程 → 確認”向導建立交付包。
  • 支援抖音、小紅書、微信影片號和嗶哩嗶哩;一個交付包可包含多個平台任務,也可以為同一成片建立獨立版本。
  • 文案優先由當前 AI 配置按平台生成;AI 不可用時回退到洗稿內容,並明確標記為回退文案。使用者編輯後的內容會記錄為使用者編輯。
  • 按渠道分欄:一級頁籤「抖音圖文 / 今日頭條文章 / 影片人工交付」——三者的提交方式完全不同 (前兩個自動提交、第三個純人工交付),各自帶包數與說明,渠道與狀態都記在 URL 裡(?channel=)。 抖音圖文與頭條文章只有一個平台,因此這兩個渠道不顯示平台下拉。
  • 發布中心提供複製標題/正文/標籤、開啟平台、在 Finder 中定位影片、標記已發布、記錄失敗和修改排程等人工輔助操作。
  • 發布者可維護未發布內容;管理員額外負責撤回已發布狀態和發布垃圾桶管理。
  • 發布包存放在 storage 根目錄下的 output/publishing/{sourceJobId}/v{version}-{packageId}/。storage 根目錄取決於執行方式:桌面端為 ~/Library/Application Support/douyin-ai-video/storage(macOS),獨立後端為倉庫內的 storage/。
  • 發布包是自包含的:成片、封面與圖文圖片都會複製進包目錄,因此事後刪除素材或改動原始檔不影響已建好的包。
  • 發布排程僅在應用執行時檢查;應用退出期間到期的任務會在下次啟動時補處理,但不會自動開啟平台。
  • 發布垃圾桶獨立於任務垃圾桶,保留 30 天。到期清理只刪除本地發布資產,不影響源作品、其他版本或平台上的影片。
  • 若 cache/publishing-index.json 損壞,發布寫操作會進入唯讀保護。請先備份原始檔,再從有效備份恢復或人工修復;創作流程仍可繼續使用。

介面預覽

主介面 - 任務列表 & 合集

  • 建立新任務(URL / 主頁連結 / 分享文字)
  • 合集檢視:按博主聚合查看所有子任務進度
  • 查看所有任務狀態
  • 查看目前可執行步驟或失敗步驟
  • 刪除任務到應用內垃圾桶

任務詳情頁

  • 概覽 — 任務基本資訊和處理狀態
  • 主鏈路步驟 — 下載、提取音頻、ASR 轉錄、AI 洗稿、生成分鏡、生成影片
  • 影片轉錄 — 從影片音頻提取的真實轉錄文字
  • AI 洗稿 — 清洗後的標題、摘要、核心要點、腳本、口播稿和品質提示
  • 分鏡內容 — 基於清洗稿生成的短劇分鏡和影片提示詞
  • 影片成片 — HyperFrames 本地渲染的 MP4、項目路徑和場景列表

合集詳情頁

  • 頂部使用者資訊(暱稱、頭像、作品總數)+ "檢查更新" 按鈕
  • 影片列表(封面、描述、狀態、核取方塊),按發布時間倒序排列
  • 批次操作:建立選中任務、批次轉錄、批次洗稿、批次分鏡、批次生成影片
  • 子任務總進度條
  • 查看全部轉錄文字 + "生成 Skill" 按鈕

Skill 管理頁

  • 卡片式網格佈局,展示所有已生成的 Skill
  • 每張卡片顯示:Skill 名稱、來源合集、自動同步狀態、轉錄數量、生成日期
  • 操作:查看內容(3 頁籤:SKILL.md 渲染、原始來源、元資訊 JSON )、在合集頁面中複用
  • 支援內聯重新命名,自動同步 SKILL.md frontmatter 和檔案目錄

發布中心

  • 查看待處理、待發布、已排程、已發布、失敗、資產異常和發布垃圾桶
  • 按標題/文案、平台、源任務、版本號和建立者篩選
  • 展開發布包查看各平台文案、排程、資產健康狀態和審計記錄
  • 執行複製文案、預覽、開啟平台、定位影片、標記發布、失敗記錄、取消、恢復和建立新版本
  • 圖文包額外提供「發布圖文到抖音」(先預覽再提交)與「提交驗證碼」
  • 文章包(今日頭條)額外提供「提交到頭條號」(先預覽再提交)與「下載文章 HTML」(降級通路: 匯出 article.html,任何時候可用、可直接貼進頭條編輯器);文章任務不提供「編輯文案」—— 正文是包級 article.html 的渲染結果,要改就重建文章包

設定頁面

  • AI 金鑰管理 — 管理多個 AI 服務 API Key,支援 DeepSeek、OpenAI 及中轉代理
  • 抖音登入 — 掃碼登入或手動貼上 Cookie,查看登入狀態
  • 今日頭條 — 頭條號掃碼登入(應用內二維碼 / 開啟瀏覽器視窗掃碼)與「校驗登入」零副作用自檢
  • 語音辨識狀態 — 展示內建 Whisper 本機轉錄能力

技術架構

┌─────────────────────────────────────────┐
│         Electron 主程序                   │
│  - 視窗管理                               │
│  - IPC 通信                               │
│  - 後端服務啟動                            │
└─────────────────────────────────────────┘
           │                    │
    ┌──────┘                    └──────┐
    ▼                                  ▼
┌─────────────────┐          ┌──────────────────────┐
│  React 前端      │  HTTP    │  Express 後端         │
│                 │ ◄────►   │                      │
│  - React 19     │          │  - 任務管理           │
│  - Vite         │          │  - 用戶主頁爬取       │
│  - Zustand      │          │  - 合集管理+增量更新  │
│  - Tailwind CSS │          │  - 簽名演算法 (a_bogus) │
│  - React Router │          │  - Cookie 管理        │
│                 │          │  - 影片下載           │
│                 │          │  - 音頻提取           │
│                 │          │  - 語音轉錄           │
│                 │          │  - AI 清洗            │
│                 │          │  - 分鏡生成           │
│                 │          │  - Skill 知識蒸餾     │
│                 │          │  - 頭條文章發布       │
└─────────────────┘          └──────────────────────┘
                                      │
                      ┌───────────────┴───────────────┐
                      ▼                               ▼
             ┌─────────────────┐             ┌────────────┐
             │ AI / 本地 ASR    │             │ 檔案儲存    │
             │ - DeepSeek      │             │            │
             │ - OpenAI        │             │ ~/.douyin  │
             │ - 中轉代理      │             │   -ai-video/│
             │ - whisper.cpp   │             │   storage   │
             │ - ggml-small    │             │ ~/.claude  │
             └─────────────────┘             │ /skills/   │
                                             └────────────┘

技術棧

後端

  • 執行時: Node.js 18+
  • 框架: Express 4
  • 語言: TypeScript 5.x
  • 影片處理: yt-dlp, ffmpeg
  • 瀏覽器自動化: Playwright(用戶主頁爬取和掃碼登入)
  • AI 服務: OpenAI SDK(相容 DeepSeek / OpenAI-compatible)
  • ASR: 內建 whisper.cpp + ggml-small(隨安裝包攜帶)
  • 影片渲染: HyperFrames CLI(可選,生成影片步驟需要 Node.js 22+ 和 FFmpeg)
  • 簽名演算法: SM3/MD5 + RC4 + 自訂 Base64(純 TypeScript 實作)

前端

  • 框架: React 19
  • 建置: Vite 6
  • 路由: React Router DOM 7
  • 狀態管理: Zustand 5
  • 樣式: Tailwind CSS(自訂設計系統)

桌面端

  • 框架: Electron 34
  • 打包: electron-builder

安裝與執行

環境要求

  • Node.js >= 18.0.0
  • npm >= 9.0.0
  • macOS 或 Windows
  • 開發模式需要本機可用的 yt-dlp、ffmpeg 和 Playwright 瀏覽器
  • 影片生成步驟需要 Node.js >= 22 和 HyperFrames CLI
  • 打包命令會自動準備完整執行資源;建置機需要聯網、tar、unzip 和基礎命令列工具
  • 安裝包會內建 yt-dlp、ffmpeg、ffprobe、whisper.cpp、ggml-small、HyperFrames CLI 和 Chrome headless shell

安裝依賴

# 複製倉庫
git clone https://github.com/LiChangZheng10086/doyin_ai_video.git
cd doyin_ai_video

# 安裝依賴
npm install

# 安裝 Playwright 瀏覽器(用戶主頁爬取和掃碼登入需要)
npx playwright install chromium

開發模式

# 一次性啟動 Vite + Electron
npm run dev

# 或分別啟動
npm run dev:renderer
npm run dev:electron

生產建置

# 打 macOS Apple Silicon DMG/ZIP
npm run package:mac

# 打 Windows 11 x64 NSIS 安裝器
npm run package:win

# 連續打 macOS + Windows
npm run package:all

打包腳本會按目標平台準備 vendor/package-assets,並把執行所需資源複製到安裝包:

  • bin/:yt-dlp、ffmpeg、ffprobe
  • whisper/:whisper-cli、ggml-small 模型和 Windows DLL
  • hyperframes/:HyperFrames CLI 及其 Node 依賴
  • browser/:Chrome headless shell

當前 package:mac 生成 macOS arm64 包;package:win 生成 Win11 x64 包。安裝後的應用不要求使用者再安裝 Python、FunASR、Whisper、ffmpeg、yt-dlp、Node.js 或 HyperFrames。抖音下載和 AI 洗稿仍然需要網路,AI 洗稿/Skill 生成仍需要有效的 AI API Key。

配置說明

1. AI API 配置

在應用設定頁面添加 AI API Key:

DeepSeek(推薦)

OpenAI

中轉代理 / 自訂

  • 支援任何 OpenAI 相容 API,填寫 baseURL 和模型名即可

2. 抖音 Cookie 配置

為使簽名 API 直調和批次採集正常工作,需要在設定頁面配置抖音登入態。提供兩種方式:

掃碼登入

  • 開啟設定 → Douyin Login → 點擊"開啟瀏覽器掃碼登入"
  • 在彈出視窗中掃描二維碼完成登入
  • Cookie 自動儲存到 ~/.douyin-ai-video/douyin-cookie.txt

手動貼上(推薦)

  • 在 Chrome 中開啟並登入 https://www.douyin.com/
  • 按 F12 開啟 DevTools → Application → Cookies → douyin.com
  • 將所有 Cookie 複製為 key1=value1; key2=value2; ... 格式
  • 貼上到設定頁面的輸入框中,點擊"儲存 Cookie"

關鍵認證 Cookie 包括:sessionid, sid_guard, passport_csrf_token, odin_tt, ttwid

3. 語音轉錄配置

語音轉錄已經內建到桌面應用中:

  • 引擎:whisper.cpp
  • 模型:ggml-small 多語言模型
  • 音頻:ffmpeg 提取 pcm_s16le、16kHz、單聲道 WAV
  • 執行方式:本機轉錄,不需要 ASR API Key、Python、FunASR 或 faster-whisper

開發模式或單獨準備 Whisper 時執行:

npm run prepare:whisper

該命令會生成:

vendor/whisper/
├── whisper-cli
└── models/
    └── ggml-small.bin

舊配置檔裡的 asrProvider、asrApiKey、asrBaseURL、asrModel 會繼續被相容讀取,但後端轉錄不再使用它們。

4. 外部依賴

開發模式會使用以下系統工具;正式安裝包已經內建同類資源:

  • yt-dlp — 影片下載

    brew install yt-dlp  # macOS
    
  • ffmpeg — 音影片處理

    brew install ffmpeg  # macOS
    
  • HyperFrames — 本地 HTML 動畫渲染為 MP4(開發模式生成影片步驟需要)

    npx --yes [email protected] doctor
    

HyperFrames 是本地 HTML/CSS/GSAP 到影片的渲染鏈路,不是 Sora、Remotion 自動成片或 HeyGen 雲端影片生成 API。開發環境預設透過 npx --yes [email protected] 呼叫 CLI;打包後優先使用安裝包內建的 HyperFrames CLI 和 Chrome headless shell。當前 v1 生成無真人、無數位人的圖文解釋影片;voiceoverScript 用作字幕和畫面節奏,暫不自動生成 TTS 配音。

頭條號發布用的瀏覽器:複用上述打包好的 Chrome headless shell,零額外依賴。若解析不到,按提示二選一:

npm run prepare:package:mac      # 拉取打包資源裡的 chrome-headless-shell
npx playwright install chromium  # 或裝一個完整的

API 端點

工作階段管理

  • POST /api/local-sessions/auto — 自動取得或建立本機操作者工作階段(無需 PIN)
  • POST /api/local-sessions — 使用 PIN 建立管理員工作階段
  • GET /api/local-sessions/current — 取得當前工作階段資訊與角色
  • DELETE /api/local-sessions/current — 登出並清除當前工作階段

任務

  • POST /api/tasks — 建立任務(支援 URL / 分享文字 / 主頁連結)
  • GET /api/tasks — 列出任務(支援篩選、分頁、排序)
  • GET /api/tasks/:taskId — 取得任務詳情
  • POST /api/tasks/:taskId/execute-step — 手動執行特定步驟(例如 "download", "transcribe", "rewrite")
  • POST /api/tasks/:taskId/retry-step — 重試失敗步驟
  • DELETE /api/tasks/:taskId — 刪除任務(移至垃圾桶)

合集

  • POST /api/collections — 建立合集(綁定博主)
  • GET /api/collections — 列出合集
  • GET /api/collections/:collectionId — 取得合集詳情(含子任務列表)
  • POST /api/collections/:collectionId/check-updates — 檢查博主新影片並增量更新
  • DELETE /api/collections/:collectionId — 刪除合集

發布

  • POST /api/publishing/packages — 建立交付包
  • GET /api/publishing/packages — 列出交付包(支援狀態、平台、渠道篩選)
  • GET /api/publishing/packages/:packageId — 取得交付包詳情
  • POST /api/publishing/packages/:packageId/submit — 提交到平台(抖音圖文或頭條文章)
  • POST /api/publishing/packages/:packageId/mark-published — 人工標記為已發布
  • DELETE /api/publishing/packages/:packageId — 刪除交付包(移至垃圾桶)

Skill

  • POST /api/skills/distill — 從合集轉錄文字蒸餾生成 Skill
  • GET /api/skills — 列出所有 Skill
  • GET /api/skills/:skillId — 取得 Skill 詳情(含 SKILL.md 內容)
  • PUT /api/skills/:skillId — 更新 Skill(重新命名等)
  • DELETE /api/skills/:skillId — 刪除 Skill

開發指南

專案結構

doyin_ai_video/
├── src/
│   ├── main/              # Electron 主程序
│   │   ├── index.ts       # 主程序入口
│   │   ├── menu.ts        # 選單配置
│   │   └── ipc.ts         # IPC 處理器
│   ├── backend/           # Express 後端
│   │   ├── index.ts       # 後端入口
│   │   ├── routes/        # 路由
│   │   ├── services/      # 業務邏輯
│   │   ├── utils/         # 工具
│   │   └── platforms/     # 平台特定實作
│   ├── renderer/          # React 前端
│   │   ├── App.tsx        # 應用入口
│   │   ├── pages/         # 頁面元件
│   │   ├── components/    # 通用元件
│   │   ├── stores/        # Zustand 狀態
│   │   └── hooks/         # 自訂 Hook
│   └── shared/            # 前後端共用型別
├── vendor/                # 第三方依賴(打包時準備)
├── scripts/               # 建置與輔助腳本
├── storage/               # 資料儲存(開發模式)
└── package.json

新增功能步驟

  1. 在 shared/types.ts 中定義型別
  2. 在 src/backend/services/ 中實作服務層
  3. 在 src/backend/routes/ 中新增路由
  4. 在 src/renderer/pages/ 或 src/renderer/components/ 中新增前端元件
  5. 在 src/renderer/stores/ 中新增狀態管理(如需要)

編碼約定

  • 使用 TypeScript 靜態型別
  • 非同步操作使用 async/await
  • API 路由遵循 RESTful 慣例
  • 錯誤處理使用一致的錯誤回應格式
  • 使用 ESLint 和 Prettier 保持程式碼風格一致

常見問題

Q: 應用啟動後無法連接到後端?

A: 請檢查終端機輸出是否有錯誤訊息。常見原因包括端口被佔用或 Node.js 版本不相容。嘗試重新啟動應用或執行 npm run dev。

Q: 影片下載失敗?

A: 確認網絡連線正常,且抖音 Cookie 有效(未過期)。嘗試重新掃碼登入。若使用開發模式,確保已安裝 yt-dlp。

Q: 語音轉錄不準確?

A: 轉錄品質取決於影片音頻的清晰度和模型大小。本內建 ggml-small 模型在普通對話場景下表現良好,但背景噪音或專業術語可能影響準確率。未來計畫支援更大模型。

Q: 發布流程卡在「提交中」?

A: 這通常表示瀏覽器自動化步驟遇到問題。請查看後端日誌獲取詳細錯誤。若是今日頭條文章發布,請確認已掃碼登入且頭條號賬號狀態正常。

Q: 如何備份我的資料?

A: 備份整個 storage 目錄即可。開發模式預設位於 storage/,桌面端位於 ~/Library/Application Support/douyin-ai-video/storage/。

相關資源

Individual skills in this repo

This repo contains 13 individual skills — each has its own dedicated page.

LiChangZheng10086/doyin_ai_video

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.

LiChangZheng10086/doyin_ai_video

Reference for the Claude API / Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration. TRIGGER — read BEFORE opening the target file; don't skip because it "looks like a one-liner" — whenever: the prompt names Claude/Anthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing/model choice/limits/caching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent/MCP/tool-definition/multi-agent/RAG/LLM-judge/computer-use; generate/summarize/extract/classify/rewrite/converse over NL; debugging refusals/cutoffs/streaming/tool-calls/tokens). SKIP only when another provider is being worked on (overrides all triggers): OpenAI/GPT/Gemini/Llama/Mistral/Cohere/Ollama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIR...

LiChangZheng10086/doyin_ai_video

Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.

LiChangZheng10086/doyin_ai_video

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

LiChangZheng10086/doyin_ai_video

Grill me about specs for the workflows I want to build, within this workspace.

LiChangZheng10086/doyin_ai_video

Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.

LiChangZheng10086/doyin_ai_video

智能 PPT 生成器。支持 7 种视觉风格(乐高/波普/黏土/黑白/商务/学术/科技),具备根据内容自动推荐风格、生成大纲、绘制配图并组装成片的全自动能力。

LiChangZheng10086/doyin_ai_video

Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.

LiChangZheng10086/doyin_ai_video

Diagnose and fix React codebase health issues. Use when reviewing React code, fixing performance problems, auditing security, or improving code quality.

LiChangZheng10086/doyin_ai_video

Sentry error monitoring and performance tracing patterns for Next.js applications.

LiChangZheng10086/doyin_ai_video

Simplify and refine recently modified code for clarity and consistency. Use after writing code to improve readability without changing functionality.

LiChangZheng10086/doyin_ai_video

✅ "你知道今天所有大模型能读懂你的话,全靠一个叫Transformer的架构吗?"

LiChangZheng10086/doyin_ai_video

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .xltx, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the xlsx in my downloads\") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.

相關技能