Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A lightweight, flexible, and easy-to-use Python tool for generating and exporting CapCut drafts to build fully automated video editing/remix pipelines! Another similar project: https://github.com/GuanYixuan/pyJianYingDraft
| Date | Stars |
|---|---|
| 2026-07-24 | 612 |
| 2026-07-25 | 613 |
| 2026-07-28 | 617 |
| 2026-07-30 | 617 |
| 2026-08-06 | 617 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# pyCapCut
### 与[PyJianYingDraft](https://github.com/GuanYixuan/pyJianYingDraft)同源的轻量、灵活、易上手Python CapCut草稿生成及导出工具,构建全自动视频剪辑/混剪流水线!
[English Version](english_readme.md)
> 🧪 本项目正在从[PyJianYingDraft](https://github.com/GuanYixuan/pyJianYingDraft)进行迁移,欢迎⭐️此项目保持关注!
> 📢 欢迎加入[Discord服务器](https://discord.gg/WfHgGQvhyW)进行用法或新功能的讨论
## 使用思路

# 功能清单
### 模板模式
> 🧪 本模块刚刚完成迁移,若出现不适配的情况欢迎提出issue
- ☑️ [加载](#加载模板)(未加密的)`draft_content.json`文件作为模板
- ☑️ [替换音视频片段的素材](#根据名称替换素材)
- ☑️ [修改文本片段的文本内容](#替换文本片段的内容)
- ☑️ [将模板草稿中的音视频/文本轨道整体导入到另一草稿中](#导入模板草稿中的轨道)
- ☑️ [提取模板中出现的贴纸/气泡/花字等元信息](#提取素材元数据)
### 批量导出
> ⚠️ 本模块正在迁移中,若有兴趣可参见[PyJianYingDraft中相应部分](https://github.com/GuanYixuan/pyJianYingDraft?tab=readme-ov-file#%E6%89%B9%E9%87%8F%E5%AF%BC%E5%87%BA%E8%8D%89%E7%A8%BF)
- ☑️ 控制CapCut打开指定草稿
- ☑️ [导出草稿至指定位置](#批量导出草稿)
- ☑️ 调节导出分辨率和帧率
### 视频与图片
> 🧪 本模块刚刚完成迁移,若有特效/动画/转场等不生效的情况欢迎提出issue
- ☑️ 添加本地视频/图片素材,并[自定义片段的时间、持续时长或播放速度](#素材截取与整体变速)
- ☑️ 视频片段的音频淡入淡出效果
- ☑️ [视频整体调节](#视频整体调节)(旋转、缩放、亮度等)以及[关键帧生成](#关键帧)
- ☑️ 视频片段的[入场/出场/组合动画](#添加片段动画)
- ☑️ 添加[蒙版](#蒙版)、[片段特效](#添加片段特效)和[滤镜](#添加片段滤镜)
- ☑️ 视频背景填充[(示例代码)](demo.py)
### 贴纸
- ☑️ 根据元信息[添加贴纸](#提取素材元数据)
- ☑️ 贴纸的[关键帧](#关键帧)生成
### 音频
- ☑️ 添加本地音频素材,并[自定义片段的时间、持续时长或播放速度](#素材截取与整体变速)
- ☑️ 调整淡入淡出时长[(示例代码)](demo.py),调整音量[(示例代码)](demo.py)及其[关键帧](#关键帧)
- ☑️ 添加音频片段的[场景音效果](#添加片段特效),并设置参数
### 轨道
- ☑️ [添加轨道](#多轨道操作)以及[将片段添加到指定轨道](#多轨道操作)
- ☑️ 自定义视频/滤镜/特效轨道的[层级关系](#多轨道操作)
### 特效、滤镜和转场
- ☑️ 吸附于片段上的[特效](#添加片段特效)、[滤镜](#添加片段滤镜)和[动画](#添加片段动画)
- ☑️ 位于[独立轨道的特效和滤镜](#独立轨道上的特效和滤镜)
- ☑️ 添加转场[(示例代码)](demo.py),并自定义其时长
### 文本及字幕
- ☑️ [添加文本、设置字体及样式](#添加文本)、修改文本片段的[位置及旋转设置](#视频整体调节)
- ☑️ 文本的[关键帧](#关键帧)以及[动画](#添加片段动画)
- ☑️ 文字描边、背景和阴影
- ☑️ 文字气泡效果和花字效果[(示例代码)](demo.py)
- ☑️ 文本[自动换行](#文本自动换行),支持设置最大行宽
- ☑️ [导入`.srt`文件](#导入字幕)生成字幕并批量设置格式
# 安装
pyCapCut现已支持pip安装(不含demo)
```
pip install pycapcut
```
### 跨平台兼容性
Linux和MacOS用户也可正常安装和使用,但注意**生成的草稿仍然需要在Windows版CapCut下导出**。
# 快速上手
例程`demo.py`将创建包含音视频素材和一行文本的CapCut草稿文件,并且添加了音频淡入、视频入场动画、转场效果、关键帧和文本气泡/花字。
这个例程的操作方法如下:
1. 找到CapCut的**草稿文件夹路径**(类似`.../CapCut Drafts`),用其替换代码中的`<你的草稿文件夹>`
2. 运行`demo.py`
3. 在CapCut中**找到并打开新创建的`demo`草稿**(可能需要进入再退出某个已有草稿,或重启CapCut以刷新草稿列表),你应该看到类似如下的时间轴:

你可以仔细检查音频片段的音量设置、淡入效果时长等,看看是否符合上述代码的设置
# 用法文档
> ℹ 文档部分推荐从[功能清单](#功能清单)一节中选取感兴趣的功能阅读,而非直接按顺序阅读
### 模板模式
> 🧪 本模块刚刚完成迁移,若出现不适配的情况欢迎提出issue
为了保留部分复杂特性(文本特效、复合片段...),可以加载一个已有的CapCut草稿作为模板,然后将其中内容导入到另一的草稿中,或直接**替换其中部分片段的内容**。
目前提供了**三种替换功能**:
- [根据名称替换素材](#根据名称替换素材):直接替换素材本身,自然影响所有引用该素材的片段
- [根据片段替换素材](#根据片段替换素材):替换某个特定片段的素材,同时重新选取其引用的素材范围
- [替换文本片段的内容](#替换文本片段的内容):保留所有文本格式,但替换其内容
除此之外,对于某些没有特定名称的特性(贴纸、花字等),提供了[提取素材元数据](#提取素材元数据)的功能以提取其`resource_id`
> ℹ 若出现模板内容丢失的情况,欢迎反馈
#### 加载模板
推荐使用`DraftFolder`来管理CapCut的草稿文件夹(可以在CapCut的`全局设置`-`草稿位置`中查询),这样能够方便地根据已有模板生成新草稿。
```python
import pycapcut as cc
draft_folder = cc.DraftFolder("<CapCut草稿文件夹>") # 一般形如 ".../CapCut Drafts"
script = draft_folder.duplicate_as_template("模板草稿", "新草稿") # 复制"模板草稿",并命名为"新草稿",同时打开新草稿供编辑
# 对返回的ScriptFile对象进行编辑,如替换素材、添加轨道、片段等
script.save() # 保存你的"新草稿"
```
为了最大限度地兼容模板中的复杂特性,**导入的轨道与pycapcut创建的轨道是分离开的**,具体地讲:
- 除下述替换功能外,不能在导入的轨道上添加片段、转场、淡入淡出、特效等
- **仍然可以创建新的轨道,并在其上添加片段等**,就像非模板模式一样
> ℹ 导入轨道的限制也许会在后续版本中逐渐取消
#### 提取素材元数据
对导入的`ScriptFile`对象,可以调用`inspect_material`方法提取部分素材的`resource_id`。
`DraftFolder`也有相应的方法来提取指定草稿的素材元数据。
```python
import pycapcut as cc
draft_folder = cc.DraftFolder("<CapCut草稿文件夹>")
draft_folder.inspect_material("草稿名称")
# 或者
script = draft_folder.load_template("草稿名称")
script.inspect_material()
```
上述代码的输出可能类似于
```
贴纸素材:
Resource id: 7405878923323641129 '秋日手绘-枫叶'
Resource id: 7429353555447893260 '电商购物促销/哇哦'
Resource id: 7437707455267671315 '冬日涂鸦winter雪花冬天vlog装饰文字'
Resource id: 7343931192204463401 '爱心'
文字气泡效果:
Effect id: 763870 ,Resource id: 6838834573413978631 '标题59'
花字效果:
Resource id: 7342020000812731658 '彩色手绘线条花字'
```
其中的元数据可用于添加相应素材(例如通过`StickerSegment`的`resource_id`参数)
#### 根据名称替换素材
这种方法将替换素材本身,而不对片段进行直接修改。
> ℹ 由于素材有名称(默Excerpt of 16,333 characters
Read on GitHubGary318 · Tsinghua University · China
18
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:182971577a227b39, topic:video-editing, desc:video editing
matched fp:182971577a227b39, topic:automation