零成本用 Claude Opus 自动化 TikTok 内容:从找钩子到批量发布的完整流程
AI 教程教程入门15 分钟阅读
学习路径:AI 内容创作 / TikTok 自动化

零成本用 Claude Opus 自动化 TikTok 内容:从找钩子到批量发布的完整流程

TikTok现在疯狂推Slideshows流量。一个370K用户的独立开发者分享了他的完整自动化方案:用Claude Opus提取爆款钩子,Pinterest找免费图片,Node.js Canvas自动生成幻灯片,Postiz定时发布。全程零成本,2小时搞定一周内容。

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(几乎全开源)


为什么这个工作流值得搭建?

大多数创作者还在手动做内容:想创意 → 设计 → 一条条发。

又慢又不稳定。

这个工作流解决了三个核心问题:

  1. 不用贵工具 — Buffer、Later、Hootsuite 免费版都有限制。自托管 Postiz 无限制
  2. 可扩展 — 搭好之后,2小时搞定30条/周
  3. 数据驱动 — 钩子来自真正爆了的视频,不是拍脑袋想出来的

完整五步流程总览

整个工作流分五步,每一步都可以独立运行:

  1. 从 TikTok 找钩子 — 分析爆款视频的开头3秒
  2. 用 Claude Opus 提取钩子 — AI 分析爆款模式,生成变体
  3. 从 Pinterest 找图片 — 免费高质量图片库
  4. 用 Node.js Canvas 生成幻灯片 — 代码自动叠加文字到图片
  5. 用 Postiz 定时发布 — 开源社交媒体管理工具

第一步:从 TikTok 找钩子

什么是钩子?

钩子就是视频开头3秒的内容。它决定了用户是停下来看还是继续刷走。

这是你最好的数据来源——直接从你的领域里已经爆了的视频中提取。

怎么有目的地刷 TikTok?

打开 TikTok,搜索你领域的关键词(比如"学习日常"、"健身打卡"、"读书分享")。按"最多点赞"或"最新"排序,看当前正在流行的内容。

刷的时候,注意观察:

  • 第一条文字覆盖 — 前2秒内出现的文字
  • 开场白 — 通常是一个问题或者惊人陈述
  • 重复出现的格式 — "你一直做错的X件事"、"X从来不会告诉你的事"、"我做了X之后发生了什么"

下载视频进行分析

用 SnapTik 或 SSSTik 下载无水印视频:

  1. 复制 TikTok 视频链接
  2. 打开 snaptik.app 或 ssstik.io
  3. 粘贴链接 → 下载(选择"无水印")
  4. 保存到本地,下一步上传给 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

  1. 打开 app.postiz.com → Integrations → Add Channel → TikTok
  2. 用你的 TikTok 账号授权
  3. 再运行 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 为通知模式

  1. Postiz 仪表板 → 新建帖子
  2. 选择 TikTok → 添加文案和定时时间
  3. 在"发布模式"下选择 Notify(不是 Direct Post)
  4. 保存

到了预定时间,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费用
找图片 Pinterest 20分钟 $0
生成幻灯片 Node.js Canvas 5分钟 $0
定时发布 Postiz CLI 10分钟 $0
总计 约80分钟 约$0

80分钟搞定一周30条内容。第二周更快,因为钩子库和图片库已经有了积累。

注意:确保你的 TikTok 账号已经正常运营一段时间,账号健康才能使用自动化工具。


参考来源:@alexcooldev 原帖Postiz 官方文档NAPI-RS Canvas