抖音聊天续火脚本 · Playwright 自动化 · GitHub Actions 定时运行
本项目是一个基于 Playwright + TypeScript 的抖音聊天自动化脚本。它会携带你配置的抖音 Cookie 打开聊天页,按配置的会话名称依次定位聊天对象,并从 assets/yiyan.json 中随机挑选一言发送出去。
适合放到 GitHub Actions 中定时运行,也可以在本地用 pnpm dev 手动执行。
- 🎭 Cookie 登录 - 通过
DOUYIN_COOKIE注入抖音登录态,无需脚本内输入账号密码 - 🎯 多会话发送 - 通过
DOUYIN_TARGET_NAMES配置多个聊天对象 - 💬 随机一言 - 每次从
assets/yiyan.json随机挑选一条hitokoto,默认以——「出处」的格式附上来源 - 🤖 定时续火 - 通过 Github Action 每天 0 点自动续火(但是 Github 定时任务要排队,可能会延迟几个小时)
在配置 GitHub Actions 或本地 .env 之前,需要先准备抖音 Cookie 和要发送消息的会话名称。
-
使用 Chrome/Edge 打开 Cookie-Editor 插件页面,安装 Cookie-Editor。 (Edge点我)
-
打开 抖音聊天页,并登录你的抖音账号。
-
登录成功后,点击浏览器右上角的 Cookie-Editor 插件图标。
-
点击
Export,选择JSON,复制导出的完整数组内容。
导出的内容大概长这样:
[
{
"domain": ".douyin.com",
"expirationDate": 1800175766.87008,
"hostOnly": false,
"httpOnly": false,
"name": "UIFID",
"path": "/",
"sameSite": "no_restriction",
"secure": true,
"session": false,
"storeId": null,
"value": "替换成真实 Cookie 值"
}
]后面配置 DOUYIN_COOKIE 时,需要把整个 JSON 数组作为一行字符串填进去。
推荐直接使用 GitHub Actions 定时运行
点击 GitHub 页面右上角的 Fork(同时希望可以 star ⭐一下本项目),把本项目复制到你自己的 GitHub 账号下。
Fork 后进入你自己的仓库,例如:
https://github.com/你的用户名/douyin-auto-spark
进入你 Fork 后的仓库:
Settings -> Secrets and variables -> Actions -> New repository secret
添加以下 secrets:
| Secret | 必填 | 说明 |
|---|---|---|
DOUYIN_COOKIE |
✅ | 抖音 Cookie JSON 字符串数组 (上面用浏览器插件获取的那个) |
DOUYIN_TARGET_NAMES |
✅ | 需要续火的朋友的用户名称, JSON 字符串数组,例如 ["暮邵落白"] (不会写 JSON 可以问 AI)。建议在抖音中给好友设置备注名并填备注名,好友改昵称也不会中断续火 |
YIYAN_INCLUDE_SOURCE |
❌ | 是否携带一言出处,默认开启;设置为 false 时只发送正文 |
MAIL_ADDRESS |
❌ | 任务失败提醒的收件邮箱,同时作为邮件发件人地址 |
MAIL_USERNAME |
❌ | QQ 邮箱 SMTP 登录账号,通常与 MAIL_ADDRESS 相同 |
MAIL_PASSWORD |
❌ | QQ 邮箱 SMTP 授权码 |
配置 MAIL_ADDRESS、MAIL_USERNAME 和 MAIL_PASSWORD 后,续火失败会向 MAIL_ADDRESS 发送提醒邮件,并附带失败图片。
Actions -> 点击绿色的 I understand my workflows, go ahead and enable them -> 🚀 续一次火 -> Enable workflow -> Run workflow
点击 Run workflow 后等待任务完成。手机打开抖音,你就可以发现你发了一条嘉豪语录给朋友了
如果手动运行一次没报错,那么默认情况下,每天北京时间 0 点会自动续一次火(不需要配置任何其他东西),但是由于 github 会延迟,大概最多凌晨 3 点之前会自动续一次火
本地调试需要 Node.js 和 pnpm
pnpm install复制 .env.example 为 .env,并按实际情况修改:
cp .env.example .env核心配置如下:
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
DOUYIN_COOKIE |
✅ | - | 抖音 Cookie JSON 字符串数组 |
DOUYIN_TARGET_NAMES |
✅ | - | 要发送消息的会话名称 JSON 字符串数组 |
YIYAN_INCLUDE_SOURCE |
❌ | true |
是否携带一言出处,设置为 false 时只发送正文 |
PLAYWRIGHT_BROWSER_PATH |
❌ | - | 本机 Chrome / Chromium / Edge 可执行文件路径,不填则使用 Playwright 默认浏览器 |
PLAYWRIGHT_HEADLESS |
❌ | true |
是否使用无头模式 |
AUTO_CLOSE |
❌ | true |
发送完成后是否自动关闭浏览器 |
DOUYIN_TARGET_NAMES 示例:
DOUYIN_TARGET_NAMES='["暮邵落白"]'💡 建议填备注名而不是昵称
脚本靠聊天页搜索框定位好友,好友一旦改昵称就会搜不到,火花随之中断。 在抖音中给好友设置备注后,搜索框同样能按备注名搜到人,而备注是你自己设置的, 好友再怎么改昵称都不受影响。设置方式:好友主页 → 右上角
...→ 设置备注。
DOUYIN_COOKIE 使用准备工作中导出的 Cookie JSON 数组:
DOUYIN_COOKIE='[{"domain":".douyin.com","expirationDate":1800175766.87008,"hostOnly":false,"httpOnly":false,"name":"UIFID","path":"/","sameSite":"no_restriction","secure":true,"session":false,"storeId":null,"value":"替换成真实 Cookie 值"}]'pnpm dev脚本会打开 https://www.douyin.com/chat,等待页面加载,定位配置中的会话名称,发送随机一言,并在发送后等待约 5 秒再退出。
# 启动脚本
pnpm dev
# TypeScript 类型检查
pnpm typecheck
# 代码格式化
pnpm formatdouyin-auto-spark/
├── .github/workflows/
│ └── renew-fire.yml # 🚀 GitHub Actions 定时续火任务
├── assets/
│ ├── readme/ # 🖼️ README 资源
│ └── yiyan.json # 📚 随机消息数据源
├── src/
│ ├── main.ts # 🎭 Playwright 自动化入口
│ └── types/
│ ├── douyin-cookie.ts # 🍪 抖音 Cookie 类型
│ └── yiyan.ts # 💬 一言数据类型
├── .env.example # ⚙️ 环境变量示例
├── .gitignore # 🙈 Git 忽略规则
├── .oxfmtrc.jsonc # 🎨 oxfmt 配置
├── .oxlintrc.jsonc # 🔍 oxlint 配置
├── LICENSE # 📄 GPL v3.0 许可证
├── pnpm-lock.yaml # 🔒 pnpm 依赖锁文件
├── tsconfig.json # 🧩 TypeScript 配置
└── package.json # 📦 项目依赖与脚本
| 环境 | 版本要求 |
|---|---|
| Node.js | 20+ |
| pnpm | 11 |
| 依赖 | 用途 |
|---|---|
playwright |
自动打开浏览器、注入 Cookie、定位会话并发送消息 |
dotenv |
读取本地 .env 配置 |
tsx |
本地通过 pnpm dev 运行 TypeScript 脚本 |
typescript |
执行 pnpm typecheck 类型检查 |
oxlint / oxfmt |
代码检查与格式化 |
本项目采用 GPL v3.0 开源许可证。




