TikTok 正在疯狂推 Slideshow 流量,你还在手动发视频?
目前 TikTok 正在大力 boosting slideshows(图片轮播)的播放量和互动率。
你打开 TikTok 刷一刷就会发现:大量百万播放的帖子,不是视频,是一张张图片轮播。
更关键的是——这些图片全部来自 Pinterest。不需要 AI 生成图片,成本为零,而且比 AI 生成的图片更容易爆。
本文是一个370K用户的独立开发者 @alexcooldev 分享的完整自动化方案。
技术栈:TikTok + SnapTik + Claude Opus 4.7 + Pinterest + Node.js Canvas + Postiz Agent CLI
成本:约 $0(几乎全开源)
为什么这个工作流值得搭建?
大多数创作者还在手动做内容:想创意 → 设计 → 一条条发。
又慢又不稳定。
这个工作流解决了三个核心问题:
- 不用贵工具 — Buffer、Later、Hootsuite 免费版都有限制。自托管 Postiz 无限制
- 可扩展 — 搭好之后,2小时搞定30条/周
- 数据驱动 — 钩子来自真正爆了的视频,不是拍脑袋想出来的
完整五步流程总览
整个工作流分五步,每一步都可以独立运行:
- 从 TikTok 找钩子 — 分析爆款视频的开头3秒
- 用 Claude Opus 提取钩子 — AI 分析爆款模式,生成变体
- 从 Pinterest 找图片 — 免费高质量图片库
- 用 Node.js Canvas 生成幻灯片 — 代码自动叠加文字到图片
- 用 Postiz 定时发布 — 开源社交媒体管理工具
第一步:从 TikTok 找钩子
什么是钩子?
钩子就是视频开头3秒的内容。它决定了用户是停下来看还是继续刷走。
这是你最好的数据来源——直接从你的领域里已经爆了的视频中提取。
怎么有目的地刷 TikTok?
打开 TikTok,搜索你领域的关键词(比如"学习日常"、"健身打卡"、"读书分享")。按"最多点赞"或"最新"排序,看当前正在流行的内容。
刷的时候,注意观察:
- 第一条文字覆盖 — 前2秒内出现的文字
- 开场白 — 通常是一个问题或者惊人陈述
- 重复出现的格式 — "你一直做错的X件事"、"X从来不会告诉你的事"、"我做了X之后发生了什么"
下载视频进行分析
用 SnapTik 或 SSSTik 下载无水印视频:
- 复制 TikTok 视频链接
- 打开 snaptik.app 或 ssstik.io
- 粘贴链接 → 下载(选择"无水印")
- 保存到本地,下一步上传给 Claude 分析
第二步:用 Claude Opus 4.7 提取钩子
这一步大多数人会跳过。
与其自己编钩子,不如让 Claude 分析已经在爆的 slideshow 模式。
提取钩子的 Prompt
把 slideshow 的图片(或 PDF/轮播)上传给 Claude Opus 4.7,然后用这个提示词:
分析这个 TikTok slideshow 并完成以下任务:
1. 识别第一张幻灯片使用的主要钩子
(关注文字覆盖、标题、视觉构图)
2. 解释为什么这个钩子有效
(好奇心 / 痛点 / 惊喜 / 共鸣)
3. 拆解钩子结构
(比如:数字+结果,否定式,身份认同式)
4. 为 [你的领域] 写5个类似的钩子变体
- 每个钩子不超过10个字
- 格式:一个问题 或 一个强陈述
- 避免泛泛的开场白比如"你知道吗"
输出为编号列表,一行一个钩子。
如果你只有文字内容
如果你已经手动从幻灯片中提取了文字:
这是一个在 [领域] 领域爆了的 TikTok slideshow 的内容:
[粘贴内容]
任务:
- 识别第一张的核心钩子
- 写7个类似 slideshow 的钩子变体
- 每个钩子必须触发以下3种情绪之一:好奇心 / FOMO / 共鸣
- 每个钩子最多8个字
- 包含简短的"为什么有效"解释
保存钩子库
把所有钩子保存到 Obsidian、Notion 或 Google Sheets。
时间长了,你就有一个钩子数据库 → 更快的内容创作 → 更高的命中率。
额外技巧:生成 Pinterest 搜索词
趁着 slideshow 还在 Claude 里,让它帮你生成搜索词:
基于这个 slideshow,建议10个 Pinterest 搜索关键词,
匹配视觉风格和内容主题。
关注:
- 审美关键词
- 构图风格(极简、大字、暗黑模式等)
- 领域相关的视觉内容
输出为简短搜索短语列表。
这样你在第三步直接拿着精确的关键词去 Pinterest 搜索,不用自己想。
第三步:从 Pinterest 找图片
现在 Claude 已经给了你钩子和 Pinterest 搜索词,直接去搜就行。
什么样的图片适合 TikTok?
- 比例:优先竖图/9:16。横图也行,脚本会自动裁剪
- 颜色:大胆、高对比度。避免柔和水粉色,TikTok 信息流太卷了
- 内容:图片里尽量少文字(因为你会覆盖自己的文字)
- 风格:要匹配钩子的情绪。金钱钩子 = 奢华生活方式图,健身钩子 = 运动场景
怎么下载 Pinterest 图片?
方式一:PinDown Chrome 扩展
- 安装 PinDown
- 打开 Pinterest 图片 → 点击 PinDown 图标 → 下载全分辨率
方式二:直接右键
- 点击图片打开全尺寸
- 右键 → "在新标签页中打开图片"
- 右键 → 另存为
方式三:Python 批量下载(全自动)
import os
import requests
from pathlib import Path
def download_pinterest_images(query_list, output_dir="pinterest_images"):
os.makedirs(output_dir, exist_ok=True)
for query in query_list:
print(f"Searching: {query}")
# 使用 Pinterest API 或爬虫获取图片URL
# 这里是框架代码,实际需要配合 Pinterest API
print(f"Images saved to {output_dir}/")
# 按领域组织
organize_by_niche = {
"personal_finance": ["dark luxury aesthetic", "money motivation"],
"fitness": ["gym motivation dark", "workout aesthetic"],
"study": ["study desk aesthetic", "dark academia notes"]
}
第四步:用 Node.js Canvas 生成幻灯片
不用手动在 Canva 里设计。用脚本程序化地把钩子文字叠加到 Pinterest 图片上,导出为 1080×1920 PNG。完全自动化。
安装依赖
npm init -y
npm install @napi-rs/canvas
@napi-rs/canvas 是一个快速的 Node.js Canvas 原生实现,不需要浏览器。
Slideshow 结构
创建配置文件 slides-config.json:
{
"slides": [
{
"image": "pinterest_images/money_01.jpg",
"hook": "你每个月浪费的钱比你以为的多3倍",
"subtitle": "5个让你默默变穷的习惯"
},
{
"image": "pinterest_images/money_02.jpg",
"hook": "为什么存钱的人反而越来越穷?",
"subtitle": "富人从来不存的3个原因"
},
{
"image": "pinterest_images/money_03.jpg",
"hook": "月入3000也能投资的5种方式",
"subtitle": "第3种99%的人不知道"
}
],
"output_dir": "output_slides",
"width": 1080,
"height": 1920
}
生成脚本 generate-slides.js
const { createCanvas, loadImage, registerFont } = require('@napi-rs/canvas');
const fs = require('fs');
const path = require('path');
const config = JSON.parse(fs.readFileSync('slides-config.json', 'utf8'));
async function generateSlides() {
fs.mkdirSync(config.output_dir, { recursive: true });
for (let i = 0; i < config.slides.length; i++) {
const slide = config.slides[i];
const canvas = createCanvas(config.width, config.height);
const ctx = canvas.getContext('2d');
// 加载背景图片
const image = await loadImage(slide.image);
// 裁剪为9:16
const scale = Math.max(
config.width / image.width,
config.height / image.height
);
const x = (image.width - config.width / scale) / 2;
const y = (image.height - config.height / scale) / 2;
ctx.drawImage(image, x, y,
config.width / scale, config.height / scale,
0, 0, config.width, config.height
);
// 半透明遮罩增强文字可读性
ctx.fillStyle = 'rgba(0, 0, 0, 0.45)';
ctx.fillRect(0, 0, config.width, config.height);
// 绘制钩子文字
ctx.fillStyle = '#FFFFFF';
ctx.font = 'bold 72px sans-serif';
ctx.textAlign = 'center';
// 自动换行
const words = slide.hook.split('');
let line = '';
let y_pos = config.height * 0.4;
const maxWidth = config.width * 0.85;
for (const char of words) {
const testLine = line + char;
if (ctx.measureText(testLine).width > maxWidth) {
ctx.fillText(line, config.width / 2, y_pos);
line = char;
y_pos += 90;
} else {
line = testLine;
}
}
ctx.fillText(line, config.width / 2, y_pos);
// 副标题
if (slide.subtitle) {
ctx.fillStyle = '#FFD700';
ctx.font = 'bold 42px sans-serif';
ctx.fillText(slide.subtitle, config.width / 2, y_pos + 120);
}
// 保存
const outputPath = path.join(config.output_dir, `slide_${String(i + 1).padStart(2, '0')}.png`);
fs.writeFileSync(outputPath, canvas.toBuffer('image/png'));
console.log(`Generated: ${outputPath}`);
}
}
generateSlides();
运行
node generate-slides.js
输出:
Generating 6 slides...
Generated: output_slides/slide_01.png
Generated: output_slides/slide_02.png
Generated: output_slides/slide_03.png
...
使用自定义字体
下载任何 TTF/OTF 字体(推荐 Inter Bold 或 Montserrat Black),然后注册:
registerFont('./fonts/Inter-Bold.ttf', { family: 'Inter Bold' });
// 然后在 ctx.font 中使用:
ctx.font = 'bold 72px "Inter Bold"';
现在你的内容团队可以编辑 slides-config.json 而不用碰代码。配合 Claude Opus 输出的钩子列表,就是一个全自动的内容流水线。
第五步:用 Postiz Agent CLI 定时发布
幻灯片生成好了,接下来定时发布。
Postiz 是你的分发控制中心,处理时间安排、跨平台发布和互动自动化。
安装
npm install -g @postiz/agent
验证安装:
postiz integrations:list
这会返回所有已连接的社交媒体账号。如果是空数组 [],你需要先连接 TikTok。
连接 TikTok
- 打开 app.postiz.com → Integrations → Add Channel → TikTok
- 用你的 TikTok 账号授权
- 再运行
postiz integrations:list,你会看到 TikTok 的 integration ID
核心发布命令
# 单条发布
postiz posts:create \
--channel <tiktok_integration_id> \
--caption "你的文案 #标签" \
--media output_slides/slide_01.png,output_slides/slide_02.png
# 批量定时发布(一整周)
for i in {1..7}; do
postiz posts:create \
--channel <tiktok_integration_id> \
--caption "内容标题 #标签1 #标签2" \
--media "output_slides/day${i}.png" \
--schedule "$(date -d "+$i days 18:00" +%Y-%m-%dT%H:%M:%S)"
done
一条命令,一整周的内容安排好了。
关键技巧:以草稿模式发布,避免被判定为机器人
这是任何 TikTok 自动化设置中最容易被忽视的部分。
如果你通过 API 在预定时间直接从服务器 IP 发帖,TikTok 的系统最终会将该模式标记为机器人行为:降低到达率、隐性限制、甚至完全封号。
安全做法:上传到草稿,从手机手动发布
为什么草稿模式很重要?
通过 API 自动发布时,TikTok 看到:
- 一个服务器 IP 发起帖子
- 一致的机器人式发布间隔
- 帖子上线前没有任何人类互动
通过草稿发布时:
- 幻灯片悄悄出现在你的 TikTok 草稿里
- 你在高峰时间打开 App,查看草稿,点发布
- 从 TikTok 的角度看:一个真人从真实设备在真实网络上发布
- 实际发布操作上没有服务器指纹
这一个改变对账号健康有重大影响,尤其是新账号或高频发布时。
上传为草稿
# 方式一:在 Postiz 中保持为草稿(不发布到 TikTok)
postiz posts:create \
--channel <tiktok_integration_id> \
--caption "你的文案" \
--media "output_slides/slide_01.png" \
-t draft
# 方式二:推送到 TikTok 收件箱(在 TikTok App 中作为待处理草稿)
# 在配置中设置 content_posting_method 为 "UPLOAD"
设置 Postiz 为通知模式
- Postiz 仪表板 → 新建帖子
- 选择 TikTok → 添加文案和定时时间
- 在"发布模式"下选择 Notify(不是 Direct Post)
- 保存
到了预定时间,Postiz 发送移动推送通知:"该发 TikTok 了!"打开 App,找到等着的草稿,点发布。
常见问题排查
POSTIZ_API_KEY 环境变量缺失
在当前 shell 会话中没导出密钥。永久添加:
echo 'export POSTIZ_API_KEY="your_key_here"' >> ~/.bashrc
source ~/.bashrc
postiz integrations:list 返回空数组
TikTok 账号还没连接到 Postiz。去 app.postiz.com → Integrations → Add Channel → TikTok 授权。
postiz upload 失败
检查 POSTIZ_API_KEY 是否有效。大型 PNG 文件可以先压缩:
pngquant --quality=65-80 output_slides/*.png --output output_slides/compressed/
定时帖子没发出去
运行 postiz posts:list 检查 status 字段。如果是 failed,Postiz 会显示错误原因(通常是过期的 TikTok OAuth token 或频率限制)。重新授权然后重新定时。
完整工作流总结
| 步骤 | 工具 | 耗时 | 成本 |
|---|---|---|---|
| 找钩子 | TikTok + SnapTik | 30分钟 | $0 |
| 提取钩子 | Claude Opus 4.7 | 15分钟 | API费用 |
| 找图片 | 20分钟 | $0 | |
| 生成幻灯片 | Node.js Canvas | 5分钟 | $0 |
| 定时发布 | Postiz CLI | 10分钟 | $0 |
| 总计 | 约80分钟 | 约$0 |
80分钟搞定一周30条内容。第二周更快,因为钩子库和图片库已经有了积累。
注意:确保你的 TikTok 账号已经正常运营一段时间,账号健康才能使用自动化工具。
