抖创工坊

Capture des vidéos Douyin → transcription → réécriture IA → génération de vidéos, avec publication automatique sur Douyin (format image+texte) et Jinri Toutiao (articles).

Qu'est-ce que 抖创工坊 ?

L'outil **抖创工坊** est une application de bureau locale, basée sur Electron, qui automatise le pipeline de recyclage de contenu : téléchargement de vidéos (sans filigrane), extraction audio, transcription via Whisper (local), réécriture par IA, génération de storyboards, puis rendu vidéo (9:16) via HyperFrames. Sa particularité est la **publication automatisée** : il soumet les contenus sur Douyin (sous forme d'images+texte) et sur Jinri Toutiao (sous forme d'articles), via des workflows distincts. Pour Douyin, il utilise un CLI externe `social-auto-upload` ; pour Toutiao, il utilise un exécuteur Playwright intégré avec un navigateur headless Chromium. L'utilisateur doit confirmer manuellement chaque étape avant soumission, et les tentatives de republication automatique sont strictement interdites pour éviter les doublons. L'outil supporte DeepSeek, OpenAI et des API compatibles, ainsi que les cookies pour l'authentification Douyin. Il est destiné aux créateurs qui souhaitent analyser et réutiliser leur contenu existant, mais ne doit pas être utilisé pour des activités commerciales ou frauduleuses.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add LiChangZheng10086/doyin_ai_video

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Aperçu

Depuis le README du skill

Licence
Node
Electron
React

Documentation

Que fait 抖创工坊 ?

Capture de vidéos Douyin → transcription → réécriture IA → génération de vidéos, avec publication automatique sur Douyin (format image+texte) et Jinri Toutiao (articles)

🚀 Deux voies de publication automatique (capacité principale)

Les articles image+texte Douyin et les articles Jinri Toutiao peuvent tous deux être soumis automatiquement par le navigateur local de la machine. Chaque voie dispose d'un aperçu au niveau du paquet, d'une validation caractère par caractère, et d'options de publication. Avant la soumission, une confirmation est requise :

VoieMoteurConnexionContrainte clé
Images+texte DouyinCLI externe social-auto-upload (optionnel)Réutilise l'état de connexion existant de DouyinUne seule tâche autorisée à la fois ; pas de nouvelle tentative automatique
Articles Jinri ToutiaoExécuteur maison (Playwright, réutilise Chromium headless packagé)Scan de code QR (code dans l'application / fenêtre navigateur)Rédaction IA + couverture 16:9 ; couverture obligatoire

Discipline commune aux deux voies : chaque étape est lue et vérifiée (si une étape échoue, le processus s'arrête avant le clic sur « Publier » et l'étape en échec est clairement indiquée) ; après soumission, seul l'état « Soumis » est enregistré. La vérification finale de la publication effective est faite manuellement par l'humain dans le back-office de la plateforme, qui marque ensuite l'état « Publié ». Aucune tentative de republication automatique (avant de réessayer, il faut d'abord confirmer que la soumission précédente a bien été envoyée – la republication en double est le plus grand risque). Les vidéos et les autres plateformes (Xiaohongshu / WeChat Video / Bilibili) restent principalement livrées manuellement.

Le centre de publication est organisé par canal (images+texte Douyin / articles Jinri Toutiao / livraison vidéo manuelle). Les trois canaux sont indépendants, ils ne sont pas mélangés.

Aperçu des capacités

Un outil de bureau local dédié à la révision de contenu et à la création secondaire. La chaîne principale actuelle se concentre sur : téléchargement de vidéos, extraction audio, transcription Whisper intégrée, réécriture IA, génération de storyboards, et rendu local 9:16 MP4 optionnel avec HyperFrames. Prend en charge la collecte par lots de la page d'accueil d'un utilisateur, l'appel direct aux API signées, le téléchargement de vidéos sans filigrane, la mise à jour incrémentielle des collections. Les nouvelles tâches sont exécutées manuellement, étape par étape. Chaque étape prend en charge jusqu'à 3 tentatives automatiques et une tentative manuelle après échec.

Licence Node Electron React

⚠️ Avertissement : Ce projet est destiné à des fins d'apprentissage et de recherche technique uniquement. Les utilisateurs doivent respecter les conditions de service et les lois des plateformes concernées. Ne pas utiliser ce projet à des fins commerciales ou pour violer les droits de tiers. L'auteur décline toute responsabilité quant aux conséquences de son utilisation.

🤝 Contribution

Ce projet est actuellement maintenu par une seule personne. Toute aide est la bienvenue !

Domaines où l'aide est particulièrement nécessaire :

  • Maintenance de la stabilité des signatures Douyin (a_bogus / X-Bogus)
  • Optimisation de la taille du modèle Whisper et de la précision en chinois
  • Styles vidéo HyperFrames / Doublage TTS
  • Améliorations UI/UX et tests de packaging Windows
  • Documentation, cas de test, vidéos d'exemple

→ Voir le guide de contribution | Soumettre un issue | Discussions

Fonctionnalités principales

Flux de travail manuel par étapes

Entrée : lien de partage Douyin / texte de partage / lien de la page d'accueil de l'utilisateur
  ↓
Création d'une tâche / collection : analyse et sauvegarde de l'entrée, ne lance pas automatiquement la chaîne complète
  ↓
Confirmation et exécution étape par étape par l'utilisateur :
  1️⃣ Téléchargement de la vidéo (priorité sans filigrane → API signée → yt-dlp)
  2️⃣ Extraction audio (ffmpeg → WAV mono 16kHz)
  3️⃣ ASR en texte (whisper.cpp intégré)
  4️⃣ Réécriture IA
  5️⃣ Génération de prompts vidéo / storyboards
  6️⃣ Génération de vidéo verticale locale (optionnel, HyperFrames)
  7️⃣ Livraison au centre de publication (optionnel ; soumission automatique pour les images+texte Douyin / articles Jinri Toutiao, puis vérification humaine)
  ↓
Sortie : 📝 Transcription structurée + ✍️ Texte réécrit + 🎬 MP4 + 📦 Paquet de livraison pour publication

Fonctionnalités phares

  • ✅ Téléchargement vidéo — Téléchargement prioritaire sans filigrane, support de l'API signée et de yt-dlp comme stratégie de repli
  • ✅ Collecte de la page d'accueil — Entrez le lien de la page d'accueil d'un blogueur, récupérez la liste de toutes ses œuvres par lots
  • ✅ Gestion des collections — Créez des collections par blogueur, créez des sous-tâches par lots, exécutez des étapes par lots
  • ✅ Mise à jour incrémentielle des collections — Vérifiez en un clic les nouvelles vidéos d'un blogueur, dédupliquez et ajoutez à la collection existante
  • ✅ Appel direct aux API signées — Signature a_bogus + X-Bogus, contourne le navigateur pour appeler directement les API internes de Douyin
  • ✅ Gestion des cookies — Prend en charge la connexion par scan de code QR et le collage manuel de cookies pour obtenir l'état de connexion
  • ✅ Extraction audio — Utilise ffmpeg pour extraire un audio normalisé et enregistrer le manifeste audio
  • ✅ Transcription vocale — Intègre whisper.cpp + ggml-small, transcription chinoise locale
  • ✅ ASR hors ligne — Pas besoin de clé API ASR, ni de Python, FunASR ou faster-whisper
  • ✅ Réécriture IA — Basée sur la transcription prioritaire, génère titre, résumé, points clés, texte réécrit, script de narration et conseils de qualité
  • ✅ Génération de storyboards vidéo — Basée sur le texte réécrit, génère des prompts vidéo et des scripts de storyboard
  • ✅ Distillation de connaissances en Skill — Distillation IA du texte de transcription d'une collection pour générer un Skill Claude Code (SKILL.md)
  • ✅ Gestion des Skills — Page de gestion des Skills dédiée, permettant d'afficher, renommer et supprimer les Skills générés
  • ✅ Génération vidéo locale — Utilise HyperFrames CLI pour rendre le texte réécrit et le rythme des sous-titres en MP4 9:16
  • ✅ Relecture de la vidéo originale — Sur la page de détail, basculez entre « Vidéo originale » et « Vidéo générée » pour revoir la vidéo Douyin originale téléchargée lors de la transcription
  • ✅ Bibliothèque de médias — Page « Médias » dédiée, téléchargez et gérez manuellement des images et de l'audio (les images peuvent être incluses dans les publications images+texte)
  • ✅ Centre de publication — Organise la vidéo générée en un paquet de livraison dédié, génère le texte en chinois simplifié pour quatre plateformes ; organisé par canal, avec suivi de progression et de publication manuelle
  • ✅ Publication d'articles Jinri Toutiao — Rédaction IA + couverture 16:9 + scan de code QR, soumission automatique au compte Toutiao (aperçu obligatoire avant soumission, vérification humaine après soumission, puis marquage « Publié »). Testé réellement avec succès le 20/09/2026
  • ✅ Barre latérale pliable — La barre de navigation gauche de l'application de bureau peut être dépliée/repliée. Dépliée, elle affiche les étiquettes de texte ; repliée, uniquement les icônes
  • ✅ Corbeille de tâches — Les tâches supprimées sont conservées pendant 30 jours, peuvent être restaurées ou supprimées définitivement
  • ✅ Modèles IA multiples — Prend en charge DeepSeek, OpenAI et les services de proxy compatibles avec OpenAI
  • ✅ Application de bureau — Basée sur Electron, prend en charge macOS et Windows
  • ✅ Retour en temps réel — Progression des tâches mise à jour en temps réel, affichage détaillé de l'état de chaque étape et des erreurs

Opérateur local et permissions

  • L'interface de connexion, de changement de compte et de gestion des utilisateurs a été supprimée : au démarrage de l'application, une session « Opérateur local » est automatiquement créée, sans nécessité de connexion ou de sélection de compte.
  • La session automatique privilégie d'abord un administrateur existant et actif (déterminé de manière déterministe par ordre croissant de createdAt / id). Ce n'est qu'en l'absence de tout administrateur qu'un « Utilisateur local » sans PIN est créé. Aucun utilisateur historique n'est supprimé ni renommé.
  • Le contrat de l'interface PIN de l'administrateur n'a pas été assoupli : l'appel direct à POST /api/local-sessions pour ouvrir une session administrateur nécessite toujours le PIN correct. La branche sans PIN n'existe que sur le chemin explicitement nommé POST /api/local-sessions/auto.
  • Le rôle détermine toujours les permissions de publication et l'audit : annuler un état publié, supprimer/restaurer un paquet de publication sont des opérations administrateur. Chaque enregistrement d'audit contient toujours un instantané actor. En utilisation autonome, l'opérateur actuel est l'administrateur, donc ces opérations sont toutes disponibles.
  • Les rôles locaux sont utilisés pour le contrôle des permissions du flux de travail et l'audit de l'opérateur. Ce ne sont pas des comptes cloud, ni une frontière de sécurité forte ; toute personne ayant accès au stockage local ou au compte du système d'exploitation peut potentiellement lire ou modifier les données locales.

Centre de publication

  • Par défaut, le centre de publication se contente de préparer les paquets de livraison locaux et d'assister les opérations manuelles. Les vidéos ne sont pas téléchargées automatiquement ; pour les images+texte Douyin, le CLI externe social-auto-upload (sau) peut être appelé pour une soumission automatique, mais un aperçu confirmatif est obligatoire avant la soumission ; après la soumission, l'humain doit cliquer sur « Marquer comme publié » pour confirmer.
  • Les articles Jinri Toutiao empruntent une autre voie : un exécuteur Playwright maison (réutilise chrome-headless-shell packagé, zéro téléchargement supplémentaire), pour effectuer la publication selon le flux « Contenu réécrit → Rédaction IA → Paquet d'article (article.html + couverture 16:9) → Aperçu → Soumission ». La connexion se fait uniquement par scan de code QR (pas d'identifiants collables pour Toutiao) : allez dans « Paramètres → Jinri Toutiao » et cliquez sur « Se connecter par scan de code QR » (code affiché dans l'application) ou « Ouvrir le navigateur pour scanner le code QR » (fenêtre de navigateur réelle). L'état de connexion est enregistré dans un profil persistant dans le storage. Après un scan, plus besoin de scanner à nouveau pour les publications et les auto-vérifications. Variables d'environnement associées : TOUTIAO_BROWSER_BINARY (chemin du navigateur, par défaut résolu dans l'ordre « configuration explicite → ressources packagées → cache Playwright → Chrome système »), TOUTIAO_PROFILE_DIR (répertoire de session, doit se trouver dans le storage). Chaque étape fait l'objet d'une vérification : si une étape échoue, le processus s'arrête avant le clic sur « Publier » ; « Publier en même temps sur Toutiao WeChat » est désactivé par défaut et n'est pas publié s'il est impossible de le désactiver.
  • Même invariant que pour la voie Douyin : la machine ne fait qu'envoyer le contenu, l'enregistre comme « Soumis » ; task.status reste inchangé tout au long du processus. Aucune tentative de republication automatique (avant de réessayer, il faut d'abord confirmer que la soumission précédente a bien été envoyée – la republication en double est le plus grand risque de cette fonctionnalité).
  • Le centre de publication ne stocke pas les identifiants de plateforme. Lors de la publication automatisée d'images+texte, il convertit l'état de connexion Douyin existant (~/.douyin-ai-video/douyin-cookie.txt) en storage_state Playwright et l'écrit dans <SAU_BASE_DIR>/cookies/douyin_<account>.json (permissions 600) pour le moteur externe.
  • Depuis la page de détail de la tâche, sur la vidéo générée, cliquez sur « Ajouter au centre de publication » et créez un paquet de livraison via l'assistant « Vidéo générée → Plateforme → Texte → Planification → Confirmation ».
  • Prend en charge Douyin, Xiaohongshu, WeChat Video et Bilibili. Un paquet de livraison peut contenir plusieurs tâches pour différentes plateformes, ou créer des versions indépendantes pour la même vidéo générée.
  • Le texte est d'abord priorisé par la configuration IA actuelle en fonction de la plateforme. Si l'IA est indisponible, il revient au contenu réécrit, clairement marqué comme texte de repli. Le contenu modifié par l'utilisateur est enregistré comme édition utilisateur.
  • Organisation par canal : Onglet de premier niveau « Images+texte Douyin / Articles Jinri Toutiao / Livraison vidéo manuelle ». Les trois méthodes de soumission sont complètement différentes (les deux premières sont automatisées, la troisième est purement manuelle). Chacune a son propre nombre de paquets et sa description. Le canal et l'état sont enregistrés dans l'URL (?channel=). Les canaux images+texte Douyin et articles Toutiao n'ont qu'une seule plateforme, donc ces canaux n'affichent pas de menu déroulant de plateforme.
  • Le centre de publication propose des opérations d'assistance manuelle telles que copier le titre/le corps/les tags, ouvrir la plateforme, localiser la vidéo dans le Finder, marquer comme publié, enregistrer un échec et modifier la planification.
  • Les éditeurs peuvent gérer le contenu non publié. Les administrateurs sont en outre responsables de l'annulation de l'état « Publié » et de la gestion de la corbeille de publication.
  • Les paquets de publication sont stockés dans le répertoire racine du storage sous output/publishing/{sourceJobId}/v{version}-{packageId}/. Le répertoire racine du storage dépend du mode d'exécution : pour l'application de bureau, il s'agit de ~/Library/Application Support/douyin-ai-video/storage (macOS) ; pour le backend indépendant, il s'agit du répertoire storage/ dans le dépôt.
  • Les paquets de publication sont auto-contenus : la vidéo générée, la couverture et les images du texte sont copiées dans le répertoire du paquet. Ainsi, la suppression ultérieure des médias ou la modification des fichiers sources n'affecte pas les paquets déjà créés.
  • La planification de publication n'est vérifiée que pendant l'exécution de l'application. Les tâches arrivées à échéance pendant la sortie de l'application sont traitées au prochain démarrage, mais la plateforme ne s'ouvre pas automatiquement.
  • La corbeille de publication est indépendante de la corbeille de tâches, avec une durée de conservation de 30 jours. Le nettoyage à échéance ne supprime que les actifs de publication locaux, sans affecter les œuvres sources, les autres versions ou les vidéos sur les plateformes.
  • Si cache/publishing-index.json est corrompu, les opérations d'écriture de publication passent en mode protection en lecture seule. Veuillez d'abord sauvegarder le fichier d'origine, puis le restaurer à partir d'une sauvegarde valide ou le réparer manuellement. Le flux de création peut toujours être utilisé.

Aperçu de l'interface

Interface principale – Liste des tâches et collections

  • Créer une nouvelle tâche (URL / lien de page d'accueil / texte de partage)
  • Vue collection : regrouper par blogueur, voir la progression de toutes les sous-tâches
  • Voir l'état de toutes les tâches
  • Voir les étapes exécutables ou les étapes en échec
  • Supprimer une tâche dans la corbeille de l'application

Page de détail de la tâche

  • Aperçu — Informations de base et état de traitement de la tâche
  • Étapes de la chaîne principale — Téléchargement, extraction audio, transcription ASR, réécriture IA, génération de storyboards, génération vidéo
  • Transcription vidéo — Texte de transcription réel extrait de l'audio de la vidéo
  • Réécriture IA — Titre réécrit, résumé, points clés, script, narration et conseils de qualité
  • Contenu du storyboard — Storyboard de court métrage et prompts vidéo générés basés sur le texte réécrit
  • Vidéo générée — MP4 rendu localement par HyperFrames, chemin du projet et liste des scènes

Page de détail de la collection

  • Informations utilisateur en haut (pseudonyme, avatar, nombre total d'œuvres) + bouton « Vérifier les mises à jour »
  • Liste des vidéos (couverture, description, état, case à cocher), triée par date de publication décroissante
  • Actions par lots : créer les tâches sélectionnées, transcription par lots, réécriture par lots, storyboard par lots, génération vidéo par lots
  • Barre de progression totale des sous-tâches
  • Bouton « Afficher tout le texte de transcription » + « Générer un Skill »

Page de gestion des Skills

  • Disposition en grille de cartes, affichant tous les Skills générés
  • Chaque carte affiche : nom du Skill, collection source, état de synchronisation automatique, nombre de transcriptions, date de génération
  • Actions : voir le contenu (3 onglets : rendu SKILL.md, source originale, JSON des métadonnées), réutiliser dans la page de collection
  • Prend en charge le renommage en ligne, la synchronisation automatique du frontmatter SKILL.md et du répertoire de fichiers

Centre de publication

  • Voir en attente, à publier, planifié, publié, échoué, anomalie d'actif et corbeille de publication
  • Filtrer par titre/texte, plateforme, tâche source, numéro de version et créateur
  • Développer un paquet de publication pour voir le texte de chaque plateforme, la planification, l'état de santé des actifs et les enregistrements d'audit
  • Effectuer les actions : copier le texte, prévisualiser, ouvrir la plateforme, localiser la vidéo, marquer comme publié, enregistrer un échec, annuler, restaurer et créer une nouvelle version
  • Le paquet d'images+texte offre en plus les actions « Publier l'image+texte sur Douyin » (aperçu puis soumission) et « Soumettre un code de vérification »
  • Le paquet d'articles (Jinri Toutiao) offre en plus « Soumettre au compte Toutiao » (aperçu puis soumission) et « Télécharger l'article HTML » (voie de repli : exporter article.html, utilisable à tout moment, peut être collé directement dans l'éditeur Toutiao) ; les tâches d'article n'offrent pas l'option « Modifier le texte » – le corps est le résultat du rendu de article.html au niveau du paquet, pour le modifier, il faut reconstruire le paquet d'article

Page des paramètres

  • Gestion des clés AI — Gérer plusieurs clés API de services IA, prend en charge DeepSeek, OpenAI et les proxys compatibles
  • Connexion Douyin — Se connecter par scan de code QR ou coller manuellement un cookie, voir l'état de connexion
  • Jinri Toutiao — Connexion par scan de code QR au compte Toutiao (code QR dans l'application / ouverture d'une fenêtre de navigateur pour scanner le code) et auto-vérification « Vérifier la connexion » sans effet secondaire
  • État de la reconnaissance vocale — Affiche la capacité de transcription locale Whisper intégrée

Architecture technique

┌─────────────────────────────────────────┐
│         Processus principal Electron      │
│  - Gestion des fenêtres                   │
│  - Communication IPC                      │
│  - Démarrage du service backend           │
└─────────────────────────────────────────┘
           │                    │
    ┌──────┘                    └──────┐
    ▼                                  ▼
┌─────────────────┐          ┌──────────────────────┐
│  Frontend React  │  HTTP    │  Backend Express     │
│                  │ ◄────►   │                      │
│  - React 19      │          │  - Gestion des tâches│
│  - Vite          │          │  - Récupération page │
│  - Zustand       │          │    d'accueil         │
│  - Tailwind CSS  │          │  - Gestion collections│
│  - React Router  │          │    + mises à jour    │
│                  │          │  - Algo signature    │
│                  │          │    (a_bogus)         │
│                  │          │  - Gestion cookies   │
│                  │          │  - Téléchargement    │
│                  │          │    vidéo             │
│                  │          │  - Extraction audio  │
│                  │          │  - Transcription     │
│                  │          │    vocale            │
│                  │          │  - Réécriture IA     │
│                  │          │  - Génération        │
│                  │          │    storyboards       │
│                  │          │  - Distillation      │
│                  │          │    connaissances     │
│                  │          │  - Publication       │
│                  │          │    articles Toutiao  │
└─────────────────┘          └──────────────────────┘
                                      │
                      ┌───────────────┴───────────────┐
                      ▼                               ▼
             ┌─────────────────┐             ┌────────────┐
             │ IA / ASR local   │             │ Stockage   │
             │                  │             │ fichiers   │
             │ - DeepSeek      │             │            │
             │ - OpenAI        │             │ ~/.douyin  │
             │ - Proxy         │             │   -ai-video/│
             │ - whisper.cpp   │             │   storage  │
             │ - ggml-small    │             │ ~/.claude  │
             └─────────────────┘             │ /skills/ │
                                             └────────────┘

Stack technique

Backend

  • Runtime : Node.js 18+
  • Framework : Express 4
  • Langage : TypeScript 5.x
  • Traitement vidéo : yt-dlp, ffmpeg
  • Automatisation navigateur : Playwright (récupération page d'accueil et scan de code QR)
  • Services IA : SDK OpenAI (compatible DeepSeek / OpenAI)
  • ASR : whisper.cpp intégré + ggml-small (fourni avec le paquet d'installation)
  • Rendu vidéo : HyperFrames CLI (optionnel, l'étape de génération vidéo nécessite Node.js 22+ et FFmpeg)
  • Algorithme de signature : SM3/MD5 + RC4 + Base64 personnalisé (implémentation pure TypeScript)

Frontend

  • Framework : React 19
  • Build : Vite 6
  • Routage : React Router DOM 7
  • Gestion d'état : Zustand 5
  • Styles : Tailwind CSS (système de design personnalisé)

Desktop

  • Framework : Electron 34
  • Packaging : electron-builder

Installation et exécution

Prérequis

  • Node.js >= 18.0.0
  • npm >= 9.0.0
  • macOS ou Windows
  • Le mode développement nécessite yt-dlp, ffmpeg et un navigateur Playwright installés localement
  • L'étape de génération vidéo nécessite Node.js >= 22 et HyperFrames CLI
  • La commande de packaging prépare automatiquement toutes les ressources d'exécution ; la machine de build nécessite une connexion Internet, tar, unzip et les outils de ligne de commande de base
  • Le paquet d'installation inclura yt-dlp, ffmpeg, ffprobe, whisper.cpp, ggml-small, HyperFrames CLI et Chrome headless shell

Installer les dépendances

# Cloner le dépôt
git clone https://github.com/LiChangZheng10086/doyin_ai_video.git
cd doyin_ai_video

# Installer les dépendances
npm install

# Installer le navigateur Playwright (nécessaire pour la récupération de la page d'accueil et le scan de code QR)
npx playwright install chromium

Mode développement

# Lancer Vite + Electron d'un coup
npm run dev

# Ou séparément
npm run dev:renderer
npm run dev:electron

Build production

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

# Paquet Windows 11 x64 NSIS installer
npm run package:win

# Paquet macOS + Windows à la suite
npm run package:all

Le script de packaging prépare vendor/package-assets pour la plateforme cible et copie les ressources d'exécution nécessaires dans le paquet d'installation :

  • bin/ : yt-dlp, ffmpeg, ffprobe
  • whisper/ : whisper-cli, modèle ggml-small et DLL Windows
  • hyperframes/ : HyperFrames CLI et ses dépendances Node
  • browser/ : Chrome headless shell

Actuellement, package:mac génère un paquet macOS arm64 ; package:win génère un paquet Win11 x64. L'application installée ne nécessite pas que l'utilisateur installe lui-même Python, FunASR, Whisper, ffmpeg, yt-dlp, Node.js ou HyperFrames. Le téléchargement Douyin et la réécriture IA nécessitent toujours une connexion Internet. La réécriture IA et la génération de Skills nécessitent toujours une clé API IA valide.

Configuration

1. Configuration AI API

Ajoutez une clé API AI dans la page des paramètres de l'application :

DeepSeek (recommandé)

OpenAI

Proxy / Personnalisé

  • Prend en charge toute API compatible OpenAI, remplissez le baseURL et le nom du modèle

2. Configuration du cookie Douyin

Pour que les appels directs aux API signées et la collecte par lots fonctionnent correctement, vous devez configurer l'état de connexion Douyin dans la page des paramètres. Deux méthodes sont fournies :

Connexion par scan de code QR

  • Ouvrez Paramètres → Connexion Douyin → Cliquez sur « Ouvrir le navigateur pour scanner le code QR »
  • Dans la fenêtre contextuelle, scannez le code QR pour terminer la connexion
  • Le cookie est automatiquement enregistré dans ~/.douyin-ai-video/douyin-cookie.txt

Collage manuel (recommandé)

  • Ouvrez et connectez-vous à https://www.douyin.com/ dans Chrome
  • Appuyez sur F12 pour ouvrir DevTools → Application → Cookies → douyin.com
  • Copiez tous les cookies au format key1=value1; key2=value2; ...
  • Collez-les dans le champ de saisie de la page des paramètres, cliquez sur « Enregistrer le cookie »

Les cookies d'authentification clés incluent : sessionid, sid_guard, passport_csrf_token, odin_tt, ttwid

3. Configuration de la transcription vocale

La transcription vocale est déjà intégrée à l'application de bureau :

  • Moteur : whisper.cpp
  • Modèle : ggml-small multilingue
  • Audio : extrait par ffmpeg en pcm_s16le, 16 kHz, mono WAV
  • Mode d'exécution : transcription locale, ne nécessite pas de clé API ASR, ni Python, FunASR ou faster-whisper

En mode développement ou pour préparer Whisper séparément, exécutez :

npm run prepare:whisper

Cette commande génère :

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

Les anciens paramètres asrProvider, asrApiKey, asrBaseURL, asrModel dans le fichier de configuration continueront d'être lus pour la compatibilité, mais la transcription backend ne les utilise plus.

4. Dépendances externes

En mode développement, les outils système suivants sont utilisés ; le paquet d'installation officiel contient déjà des ressources équivalentes :

  • yt-dlp — Téléchargement vidéo

    brew install yt-dlp  # macOS
    
  • ffmpeg — Traitement audio/vidéo

    brew install ffmpeg  # macOS
    
  • HyperFrames — Rendu d'animation HTML locale en MP4 (nécessaire pour l'étape de génération vidéo en mode développement)

    npx --yes [email protected] doctor
    

HyperFrames est une chaîne de rendu locale HTML/CSS/GSAP vers vidéo. Ce n'est pas Sora, un rendu automatique Remotion ou une API de génération vidéo cloud HeyGen. En environnement de développement, le CLI est appelé par défaut via npx --yes [email protected] ; après packaging, le CLI HyperFrames interne et Chrome headless shell sont prioritaires. La version actuelle v1 génère des vidéos explicatives sans acteurs réels ni avatars numériques ; voiceoverScript est utilisé pour les sous-titres et le rythme des scènes, mais ne génère pas encore de doublage TTS automatiquement.

Navigateur pour la publication Toutiao : réutilise le Chrome headless shell packagé ci-dessus, zéro dépendance supplémentaire. S'il n'est pas trouvé, choisissez l'une des deux options suivantes :

npm run prepare:package:mac      # Récupère chrome-headless-shell dans les ressources packagées
npx playwright install chromium  # Ou installe un navigateur complet

# (suite tronquée)

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.

Skills associés