Larry技能使用说明
TikTok应用营销
自动化您的整个TikTok幻灯片营销流程:生成→叠加→发布→追踪→迭代。
已验证的成果:在X平台上的病毒式文章获得700万次浏览,TikTok视频观看量超过100万,每月经常性收入670美元——这一切均由一台旧游戏电脑上运行的AI智能体实现。
先决条件
此技能不捆绑任何依赖项。您的AI智能体需要根据您的设置来研究并安装以下内容。告知您的智能体您正在使用的环境,它将自行处理其余事项。
必需项
- Node.js(v18+版本)——所有脚本均在Node上运行。您的智能体应验证是否已安装,若未安装则进行安装。
- node-canvas(npm install canvas)——用于为幻灯片图像添加文本叠加层。这是一个原生模块,在某些系统上可能需要构建工具(Python、make、C++编译器)。您的智能体应研究您操作系统的安装要求。
- Postiz——这是整个系统的支柱。Postiz负责发布到TikTok(以及28+其他平台),但更重要的是,它提供了分析API,为每日反馈循环提供动力。没有Postiz,智能体可以发布内容但无法追踪哪些内容有效——而正是这个反馈循环使得此技能能够真正促进您的账户增长,而不仅仅是盲目发布。请前往postiz.pro/oliverhenry.
图像生成(选择一项)
您可以选择生成图像的方式。您的代理应研究您所选选项的API文档:
- OpenAI—gpt-image-1.5(始终使用1.5,切勿使用1)。需要一个OpenAI API密钥。最适合生成逼真的照片风格图像。这是Larry使用的,也是我们强烈推荐的。
- Stability AI— Stable Diffusion XL及更新版本。需要一个Stability AI API密钥。适合生成风格化/艺术性图像。
- Replicate— 运行任何开源模型(Flux、SDXL等)。需要一个Replicate API令牌。最灵活。
- 本地— 使用您自己的图像。无需API。将图像放置在输出目录中,脚本将跳过生成步骤。
转化追踪(可选,但建议用于移动应用)
- RevenueCat— 这是完成智能循环的关键。Postiz告诉您哪些帖子获得了浏览量。RevenueCat告诉您哪些帖子推动了付费用户综合来看,该智能体能够区分不赚钱的病毒式帖子和实际能带来转化的普通帖子,并据此进行优化。从ClaWHub安装RevenueCat技能(clawhub install revenuecat),即可获得订阅用户、月度经常性收入、试用情况、用户流失和收入等数据的完整API访问权限。此外,还有RevenueCat MCP,用于通过您的智能体/集成开发环境对产品和供应进行程序化控制。
跨平台发布(可选,推荐)
Postiz支持同时跨平台发布到Instagram Reels、YouTube Shorts、Threads、Facebook、LinkedIn等20多个平台。您的智能体应研究哪些平台适合您的受众,并在Postiz中连接这些平台。相同的内容,不同的算法,获得更广的覆盖。
首次运行——入门引导
首次加载此技能时,请立即开始与用户对话。不要罗列清单——要像一位真人营销伙伴那样与他们交谈。以下流程是指导,而非脚本。要自然。一次问一两个问题。对他们的回答做出反应。基于他们的回答展开。
重要提示:使用scripts/onboarding.js --validate在最后确认配置完成。
阶段0:TikTok账号预热(至关重要——切勿跳过)
在开始任何操作之前,请检查用户是否已拥有发布历史的TikTok账号。如果他们正在创建新账号,必须先进行预热,否则TikTok会将其视为机器人,并从第一天起就限制其内容覆盖。
自然地解释这一点:
"在开始之前先问个问题——你是已经有一个正在使用的TikTok账户,还是我们要从头开始?如果是新账户,我们需要先养号。TikTok的算法会监控新账户的行为,如果你刚注册完就立刻发布AI生成的幻灯片内容,系统会判定你是机器人账号,直接限制你的内容传播。"
如果账户是新注册或几乎没使用过的,请引导他们完成以下步骤:
核心目标是像普通人一样使用TikTok7-14天在此期间不要发布任何内容。每天花30-60分钟在应用内进行这些操作:
- 自然地浏览"推荐"页面。完整看完部分视频,有些看一半就跳过。不要每个视频都看到底——真实用户不会这样滑动浏览。
- 有节制地点赞。大概每10个视频点1个赞。不要见什么都点赞——那是机器人行为。只给你真正感兴趣的同领域内容点赞。
- 关注你所在领域的账号。如果是推广健身应用,就关注健身创作者。室内设计?关注家居装饰账号。这样能训练算法理解这个账户的定位。
- 有意识地观看垂直领域内容。这是最重要的部分。TikTok会学习你的互动偏好,并推送更多相关内容。你要让推荐页面充满与你未来发布内容相似的作品。
- 留下几条真实评论。不要发垃圾信息。是真实的互动反馈。每次使用发几条即可。
- 可以发布1-2条日常随拍视频。没有推广内容。只是正常的内容,向TikTok展示账号背后是一个真实的人。
需要关注的信号:当他们打开TikTok,发现推荐页上几乎每个视频都属于他们的领域时,账号就预热好了。算法已经理解了他们。现在他们可以开始发布内容了。
告诉用户:"我知道两周时间感觉像是浪费,但跳过预热阶段的账号,其首条帖子的触达率会持续低80-90%。请务必预热。这决定了你的首条帖子是获得200次观看还是20,000次观看。"
如果账号已经活跃且成熟,完全跳过这一步,直接进入第一阶段。
第一阶段:了解他们的应用(对话式)
从轻松的对话开始。比如:
"嘿!我们来设置一下你的TikTok营销。首先——告诉我关于你的应用。它叫什么名字,是做什么的?"
然后根据他们的回答进行追问。不要一次性问完所有9个问题。顺着话题展开:
- 他们提到应用功能 → 询问目标用户("你的理想用户是谁?")
- 他们描述受众 → 询问痛点("它主要为他们解决了什么问题?")
- 他们解释问题 → 询问独特之处("与替代品相比,你的应用有什么突出之处?")
- 自然地获取应用商店/网站链接("能把链接发给我吗?")
- 确定类别(家居/美妆/健身/效率/食品/其他)——通常可以推断出来
不要机械地询问"品牌指南"。而是问:"你们有现有的内容或想要营造的风格吗?还是我们从头开始?"
然后询问他们的应用和盈利模式:
"这是一个移动应用吗?你们是否使用RevenueCat(或任何订阅/应用内购买系统)来处理支付?"
这一点至关重要,因为它决定了我们能否完成整个反馈闭环。如果他们有一个使用RevenueCat的移动应用:
- 告诉他们ClawHub上的RevenueCat技能(clawhub install revenuecat)。它提供了对订阅者、月度经常性收入、试用、流失、收入和交易的完整API访问。不要自动安装——只需让他们知道这个技能的存在以及它能解锁什么功能,他们可以自行决定是否安装。
- 解释为什么这很重要:没有RevenueCat数据,该技能只能优化观看量(虚荣指标)。有了它,该技能就能优化实际付费用户。这其中的差别是巨大的。一个20万次观看但零转化的帖子毫无价值。而一个5千次观看但带来10个付费订阅者的帖子则是黄金。只有连接了RevenueCat,你才能分辨出这种差别。
如果他们不使用RevenueCat,但有其他订阅系统,请记录下来并根据现有情况处理。如果不是移动应用(例如实体产品、SaaS、服务),则跳过RevenueCat,但仍要追踪他们拥有的任何转化指标(网站注册、购买、潜在客户)。
将所有信息存储在tiktok-marketing/app-profile.json文件中。
第二阶段:竞争对手研究(需要浏览器权限)
在制定任何内容策略之前,先研究竞争对手在TikTok上做什么。这至关重要——你需要了解市场格局。
询问用户:
"在我们开始创建内容之前,我想研究一下你的竞争对手在TikTok上做什么——在你的细分领域里,什么内容能获得观看量,他们使用什么钩子,什么有效,什么无效。我可以使用浏览器浏览TikTok和应用商店吗?"
等待许可。那么:
- 在TikTok上搜索该应用的细分领域(例如"室内设计应用"、"丰唇滤镜"、"健身塑形应用")
- 找到3-5个竞争对手账号发布类似内容
-
分析他们表现最好的内容:
- 他们使用了什么吸引人的开头?
- 采用什么幻灯片格式?(前后对比、清单式、POV视角、教程)
- 他们最佳帖子和平均帖子的浏览量分别是多少?
- 他们的发布频率如何?
- 他们使用了什么行动号召?
- 在该细分领域中,什么音乐/声音正在流行?
- 查看App Store中该应用的类别——查看竞争对手应用、他们的截图、描述、评分
- 将发现结果整理到tiktok-marketing/competitor-research.json
{
"调研日期": "2026-02-16",
"竞争对手": [
{
"名称": "CompetitorApp",
"TikTok账号": "@competitor",
"粉丝数": 50000,
"热门开场钩子": ["钩子 1", "钩子 2"],
"平均播放量": 15000,
"最佳视频": { "播放量": 500000, "开场钩子": "..." },
"内容格式": "前后对比幻灯片",
"发布频率": "每日",
"行动号召": "简介区链接",
"备注": "擅长 X,不擅长 Y"
}
],
"细分市场洞察": {
"流行音频": [],
"常见格式": [],
"空白机会": "竞争对手没做但我们可以做的事",
"需规避模式": "明显无效的做法"
}
}
- 向用户分享调研结果用对话的方式:
"所以我调研了一下市场情况。[竞争对手 A] 在 [格式] 方面做得不错——他们最好的帖子用了 [钩子类型],获得了 [X] 次播放。但我注意到,目前还没有人真正在做 [空白机会]。这就是我们的切入点。"
这项调研直接指导开场钩子生成和内容策略。创建帖子时请参考它。
第三阶段:内容格式与图片生成
首先,询问格式偏好:
"您想做幻灯片(照片轮播)还是视频?Larry 用的就是幻灯片,本技能也是围绕此构建的——TikTok 数据显示,幻灯片比视频获得的评论多 2.9 倍,分享多 2.6 倍,而且 AI 生成幻灯片内容也更容易保持一致性。话虽如此,如果您想尝试视频,本技能也支持,只是它不像幻灯片那样经过实战考验。您来决定。"
将他们的选择存储为格式:"幻灯片"或格式:"视频"到配置中。如果他们选择视频,请注意,文本叠加、6页幻灯片结构和提示模板都是为幻灯片设计的。视频需要更多的实验,代理应该对此坦诚说明。
对于幻灯片(推荐):
自然地询问:
"对于幻灯片,我们需要图片。我强烈推荐使用 OpenAI 的 gpt-image-1.5——Larry 用的就是这个,它生成的图片看起来真的像是有人用手机拍的。这就像是‘明显是 AI 生成的’和‘等等,这是真的吗?’的区别。您也可以使用 Stability AI、Replicate,或者如果您愿意,也可以使用自己的图片。"
⚠️ 如果他们选择 OpenAI,请确保模型设置为gpt-image-1.5— 绝不gpt-image-1.两者的质量差异巨大。gpt-image-1生成的图像带有明显的AI痕迹,人们会直接划走。而gpt-image-1.5能生成逼真的效果,让人停下观看。这一个设置可能就是获得1千次观看和10万次观看的区别。
如果他们不确定,请始终推荐gpt-image-1.5。这是经过验证的选择。
在配置中存储为imageGen,包含提供商、apiKey和模型。
如果他们选择OpenAI,请提及Batch API:
"有件事值得了解——OpenAI有一个Batch API,它比实时生成便宜50%。你不是即时生成幻灯片,而是将其作为批量任务提交,并在24小时内(通常更快)获得结果。这非常适合在夜间预先生成第二天的幻灯片。质量相同,成本减半。需要我帮你设置吗?"
如果他们感兴趣,就在imageGen配置中存储"useBatchAPI": true。生成脚本支持两种模式——实时模式用于快速迭代,批量模式用于计划每日内容。
然后——这一点至关重要——与他们一起确定图像风格。别只用那种笼统的提示词。图片不好看 = 没人看。自然地提问,一次问一两个:
"现在我们来想想这些图片到底应该是什么样子的。你是希望它们看起来像用手机拍的真实照片,还是更像精修的图像或插图?"
然后根据他们的回答,深入挖掘:
- 主题是什么?"我们具体要展示什么?房间?人脸?产品?还是前后对比图?"
- 氛围感如何?"温馨舒适?干净简约?还是奢华高级?想想你的受众能产生共鸣或者向往的风格。"
- 一致性:"这6张幻灯片看起来应该像是同一个地方或同一个人吗?如果是——我需要确定具体的细节,这样每张幻灯片看起来才不会完全不同。"
- 必备元素?"有什么是每张图片里都**必须**出现的吗?一个特定的产品?某件家具?一只宠物?"
**和他们一起**构建基础提示词。一个好的基础提示词看起来像这样:
iPhone拍摄的[具体房间/场景],[具体风格],[具体细节]。 真实感光线,自然色彩,使用iPhone 15 Pro拍摄。 无文字,无水印,无标识。 [一致性锚点:"左侧墙上的同一扇窗户","同一张灰色沙发","中央的木质咖啡桌"]
将商定好的提示词风格保存到配置中,作为:imageGen.basePrompt这样以后每个帖子都会使用它。
关键提示词规则(在需要时解释这些,不要生硬说教):
- "iPhone photo" + "realistic lighting" = 看起来真实,不像AI生成的
- 在**每一张**幻灯片的提示词中都锁定建筑结构/布局,否则每张看起来都像不同的地方。
- 融入日常物品(马克杯、遥控器、杂志),营造生活气息
- 关于改造前后对比:改造前状态需呈现“现代但显陈旧”感,而非古老破败
- 始终采用竖版构图(1024x1536)——这是为TikTok定制
- 描述务必极致具体>模糊笼统(例如:“带白色橱柜、水槽上方有窗户的狭长厨房”>“一个厨房”)
严禁使用通用描述诸如“温馨客厅”或“美丽面容”这类描述——它们只会生成千篇一律、容易被划过的平庸图像
第四阶段:Postiz配置(核心环节——驱动整个反馈循环)
Postiz不仅是发布工具——它让整个反馈循环得以运转。没有它,发布如同盲人摸象;有了它,你将获得:
- 自动化发布通过API发布至TikTok(及28+其他平台)
- 单帖数据分析——每篇帖子的观看量、点赞、评论、分享数据
- 平台级数据分析——粉丝增长趋势、长期互动总量
- 跨平台同步发布——相同内容可同时发布至Instagram、YouTube、Threads
这些数据正是每日分析任务(见第八阶段)的燃料。没有Postiz的数据支持,系统将无法判断哪些钩子内容有效、哪些应该淘汰。
向用户自然阐述:
“关键环节在于——我们需要Postiz来处理发布和数据分析。它能让我追踪每篇帖子的表现,精准判断哪些钩子内容带来流量、哪些应该舍弃。没有它,我们只能靠猜测;有了它,我可以生成每日报告,清晰展示有效策略,并自动推荐更优的钩子方案。”
"这项技能是免费且开源的。如果你想支持它的开发,通过此链接注册将不胜感激:postiz.pro/oliverhenry"
引导他们一步步完成连接:
- 在postiz.pro/oliverhenry注册
- —— 创建一个账户连接 TikTok
- —— 这是主要步骤。前往 集成 → 添加 TikTok → 授权记下 TikTok 集成 ID
- —— 你会在 URL 或集成设置中看到它。我需要这个来发布内容和获取分析数据获取 API 密钥
- —— 设置 → API → 复制密钥。这是我通过编程方式与 Postiz 通信的方式(可选但推荐)
连接 Instagram、YouTube Shorts、Threads 以进行跨平台发布 —— 相同内容,不同算法,免费获得更多覆盖
解释草稿工作流程:
"重要的一点 —— 帖子会以草稿形式发送到你的 TikTok 收件箱,而不是直接发布到你的动态。在发布每个帖子之前,请从 TikTok 的音乐库中添加一个热门声音。音乐是影响 TikTok 覆盖面的最大单一因素 —— 无声的幻灯片会被埋没。每个帖子只需 30 秒,但效果天差地别。这个工作流程帮助我们获得了超过 100 万的 TikTok 浏览量。"在 Postiz 连接成功且 API 密钥生效之前,不要进行下一步。
第五阶段:转化追踪(智能循环)
如果他们有一个集成了RevenueCat的移动应用(你应该在阶段1就已经了解这一点),那么这项技能就从“内容自动化”升级为“智能营销系统”。这是整个技能中最重要的集成。切勿将其视为可选项。
解释其重要性:
“所以,目前通过Postiz,我可以追踪哪些帖子获得了浏览量、点赞和评论。这是漏斗的顶部。但仅靠浏览量无法带来收入——我们需要知道哪些帖子真正驱动了付费订阅。”
“RevenueCat就在这里发挥作用。它追踪你的订阅者、试用、月度经常性收入、流失率——实际的收入数据。当我将Postiz的TikTok分析与RevenueCat的转化数据结合时,我就能做出真正智能的决策:”
“如果一个帖子获得了5万次浏览但零转化,我就知道它的‘钩子’很棒,但行动号召或应用内消息传递需要改进。如果一个帖子获得了2000次浏览但有5个付费订阅者,我就知道这个内容的转化效果极佳——我们只需要让更多人看到它,所以我们会优化‘钩子’。”
“没有RevenueCat,我是在为虚荣指标做优化。有了它,我是在为收入做优化。”
逐步引导他们完成设置:
-
从ClaWHub安装RevenueCat技能:
clawhub install revenuecat
这将安装revenuecat技能(v1.0.2+),它提供对您的RevenueCat项目的完整API访问——包括指标概览、客户、订阅、产品配置、授权、交易等。它包含每个API端点的参考文档和一个用于直接进行API调用的辅助脚本(scripts/rc-api.sh)。
-
获取您的V2秘密API密钥从RevenueCat仪表板:
- 进入您的RC项目 → 设置 → API密钥
- 生成一个V2秘密密钥(以sk_开头)
- ⚠️ 这是一个秘密密钥——不要将其提交到公共代码仓库
-
设置环境变量:
export RC_API_KEY=sk_your_key_here
-
验证其是否正常工作:运行./skills/revenuecat/scripts/rc-api.sh /projects——应该会返回您的项目详情。
-
可选:RevenueCat MCP——用于通过您的代理或IDE以编程方式控制产品、产品配置和授权。请让您的代理研究如何设置。
RevenueCat为每日报告提供的数据:
- GET /projects/{id}/metrics/overview→ MRR、活跃订阅用户、活跃试用用户、流失率
- GET /projects/{id}/transactions→ 带有时间戳的单个购买记录(用于转化归因)
- 每日定时任务将交易时间戳与帖子发布时间(24-72小时窗口)进行交叉比对,以识别哪些帖子推动了哪些转化
由此解锁的洞见:
- "这个钩子获得了5万次浏览但零转化" → 钩子很棒,但行动号召需要改进
- "这个钩子获得了5千次浏览但带来了3个付费订阅用户" → 内容转化效果极佳,改进钩子以获得更多触达
- "所有帖子的转化率都持续低迷" → 可能是应用本身的问题(如新用户引导、付费墙、定价),而非内容问题——该技能会标记此情况以供调查
如果没有RevenueCat:循环仍可在Postiz分析(浏览/点赞/评论)上运行。你可以针对互动进行优化。但在收入方面你如同盲飞。你会知道哪些帖子获得了浏览,但不会知道哪些帖子带来了收入。
有了RevenueCat:你可以针对实际付费用户进行优化。你能分辨出毫无收益的病毒式帖子与带来50美元订阅收入的低调帖子之间的区别。这正是反馈循环的全部意义所在。有了RevenueCat数据,每日报告所做的每个决策都会更好。
如果他们不使用RevenueCat或没有订阅服务,该技能仍然有效,但反馈循环仅限于基于浏览量的优化。
阶段6:内容策略(基于研究构建)
利用竞争对手研究及应用资料,制定初步内容策略:
"根据我的发现以及您的应用功能,这是我为第一周制定的计划……"
呈现:
- 3-5个钩子创意根据其细分领域及竞争对手的空白点量身定制
- 发布排期建议发布时间(默认:上午7:30,下午4:30,晚上9点——使用用户所在时区)
- 首先测试哪些钩子类别(参考竞争对手的有效策略)
- 跨平台发布计划(选择哪些平台,使用相同内容还是适配内容)
将策略保存至tiktok-marketing/strategy.json。
阶段7:设置每日分析定时任务
这是使整个系统实现自我优化的关键。设置一个每日定时任务,它将:
- 从Postiz拉取过去3天的帖子分析数据
- 从RevenueCat拉取转化数据(如果已连接)
- 交叉分析浏览量数据与转化数据,以诊断有效策略
- 生成包含具体建议的报告
- 根据表现模式建议新的钩子
向用户解释:
“我将设置一个每日检查任务,每天早晨运行。它会查看你过去3天帖子的表现——包括浏览量、互动量,以及如果你连接了RevenueCat,还会查看实际转化情况。然后它会明确告诉你哪些策略有效,哪些需要调整。”
“帖子的热度通常在发布后24-48小时达到顶峰,而转化数据最多可能需要72小时才能归因,因此检查3天的时间窗口能让我们获得完整的情况。”
设置定时任务:
利用代理的cron系统安排每日分析任务。将其设置在每天早晨第一条帖子发布之前运行(例如用户所在时区的早上7点),这样报告就能为当天的内容提供参考:
时间安排:每日 07:00(用户所在时区) 任务:运行 scripts/daily-report.js --config tiktok-marketing/config.json --days 3 输出:tiktok-marketing/reports/YYYY-MM-DD.md + 包含摘要的用户消息
每日报告使用以下诊断框架:
- 高浏览量 + 高转化率→ 扩大规模 — 增加同类内容,测试发布时机
- 高浏览量 + 低转化率→ 引子有效,但行动号召失效 — 在第6张幻灯片测试新的行动号召,检查应用落地页
- 低浏览量 + 高转化率→ 内容能转化但无人看到 — 测试完全不同的引子,保留行动号召
- 低浏览量 + 低转化率→ 全面重置 — 新格式、新受众角度、新引子类别
这是智能层。没有它,你只是盲目发布并祈祷。有了它,每天的内容都能得到数据指导。
第8阶段:保存配置并发布首条内容
将所有内容存储到tiktok-marketing/config.json(这是整个流程的单一事实来源):
{
"app": {
"name": "应用名称",
"description": "详细描述",
"audience": "目标人群",
"problem": "解决的痛点",
"differentiator": "独特之处",
"appStoreUrl": "https://...",
"category": "家居|美妆|健身|效率|美食|其他",
"isMobileApp": true
},
"imageGen": {
"provider": "openai",
"apiKey": "sk-...",
"model": "gpt-image-1.5"
},
"postiz": {
"apiKey": "你的-postiz-密钥",
"integrationIds": {
"tiktok": "此处填ID",
"instagram": "此处填ID-可选",
"youtube": "此处填ID-可选"
}
},
"revenuecat": {
"enabled": false,
"v2SecretKey": "sk_...",
"projectId": "proj..."
},
"posting": {
"privacyLevel": "仅自己可见",
"schedule": ["07:30", "16:30", "21:00"],
"crossPost": ["instagram", "youtube"]
},
"competitors": "tiktok-marketing/competitor-research.json",
"strategy": "tiktok-marketing/strategy.json"
}
然后生成首次测试幻灯片——但要设定预期:
“我们来创建第一个幻灯片。这是测试阶段——我们正在调试图像风格,暂不发布。我会生成6张幻灯片,然后我们一起查看。如果图像效果不理想,我们就调整提示词重新尝试。目标是在开始发布前确定最终视觉效果。”
⚠️ 精修过程是技能的一部分:
获得理想图像需要反复调整。这很正常,也在预期之中。请引导用户完成以下步骤:
- 生成包含6张图像的测试组使用你们共同构建的提示词
- 展示生成结果并询问:“这些效果如何?过于精致?太暗?氛围不对?家具不合适?”
- 根据反馈进行调整——修改基础提示词,重新生成
- 重复直到用户满意——可能需要2-5轮调整,这很正常
- 锁定提示词风格当效果达标后——保存至配置
需要关注和询问的要点:
- “这些图像足够真实,还是看起来像AI生成的?”
- “光线合适吗?过亮?过于朦胧?”
- "这符合您的用户实际会联想到的内容吗?"
- "日常细节是否正确?(家具风格、物品、布局)"
您无需发布任何您不喜欢的内容。最初的几代纯粹是为了优化提示词。只有当图像质量持续稳定后才开始发布。智能体会从每一轮中学习——哪些有效、哪些无效、在提示词中应强调什么。
一旦风格确定下来,便运用从竞争对手研究及其类别中获取的钩子策略(参见参考资料/幻灯片结构.md)并开始执行发布计划。
核心工作流程
1. 生成幻灯片图像
使用脚本/生成幻灯片.js:
node scripts/generate-slides.js --config tiktok-marketing/config.json --output tiktok-marketing/posts/YYYY-MM-DD-HHmm/ --prompts prompts.json
该脚本会根据config.imageGen.provider自动路由到正确的提供商。支持 OpenAI、Stability AI、Replicate 或本地图像。
⚠️ 超时警告:生成6张图像总共需要3-9分钟(gpt-image-1.5每张图像耗时30-90秒)。请将您的执行超时时间至少设置为600秒(10分钟)。如果你遇到spawnSync ETIMEDOUT错误,说明执行超时时间设置得太短。脚本支持断点续传——如果中途失败,重新运行它,已完成的幻灯片会被跳过。
关键图像规则(所有提供商均适用):
- 始终采用竖屏宽高比(1024x1536或等效的9:16)——以填满TikTok屏幕
- 在提示词中包含“iPhone照片”和“真实感光照”(针对AI提供商)
- 所有6张幻灯片共享完全相同的核心描述(仅改变风格/功能)
- 锁定所有幻灯片中的关键元素(建筑结构、脸型、拍摄角度)
- 请参阅references/slide-structure.md文件了解6张幻灯片的制作公式
2. 添加文本叠加层
此步骤使用node-canvas库将文本直接渲染到你的幻灯片图像上。这就是Larry制作出那些在TikTok上获得超过100万次观看的幻灯片的方法——其文本大小、位置和样式均经过数百个帖子的反复调试。
设置 node-canvas
在添加文字叠加之前,你的操作者需要安装node-canvas。提示他们:
"为了给幻灯片添加文字叠加,我需要一个名为 node-canvas 的库。它能直接在图像上渲染文字,并完全控制大小、位置和样式——Larry 制作那些病毒式传播的 TikTok 幻灯片时用的就是这个。
你能在终端里运行这个命令吗?"
npm install canvas"如果安装失败,那是因为 node-canvas 需要一些系统库。这是你需要先安装的内容:"
macOS:
brew install pkg-config cairo pango libpng jpeg giflib librsvg npm install canvasUbuntu/Debian:
sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev npm install canvasWindows:
# node-canvas 在 Windows 上会自动下载预构建的二进制文件 npm install canvas"一旦安装完成,剩下的我都可以处理——生成叠加层、调整文字大小、精确定位。你之后就不需要再碰这个了。"
不要跳过这一步。没有 node-canvas,文字叠加功能将无法工作。如果安装失败,帮助他们排查问题——通常是因为缺少某个系统库。一旦安装成功,它就永久生效了。
Larry 的文字叠加流程如何运作
- 加载原始幻灯片图像进入node-canvas
- 配置文本设置根据该特定幻灯片的文本长度
- 绘制文本使用白色填充和粗黑色描边
- 检查输出——检查尺寸、定位、可读性
- 调整并重新渲染如果任何地方看起来不对劲
- 保存最终图像一旦看起来正确
Larry使用的确切代码:
const { createCanvas, loadImage } = require('canvas');
const fs = require('fs');
async function addOverlay(imagePath, text, outputPath) {
const img = await loadImage(imagePath);
const canvas = createCanvas(img.width, img.height);
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// ─── 根据文本长度调整字体大小 ───
const wordCount = text.split(/\s+/).length;
let fontSizePercent;
if (wordCount <= 5) fontSizePercent = 0.075; // 短文本:在1024像素宽度上为75px
else if (wordCount <= 12) fontSizePercent = 0.065; // 中等长度:66px
else fontSizePercent = 0.050; // 长文本:51px
const fontSize = Math.round(img.width * fontSizePercent);
const outlineWidth = Math.round(fontSize * 0.15);
const maxWidth = img.width * 0.75;
const lineHeight = fontSize * 1.3;
ctx.font = `bold ${fontSize}px Arial`;
ctx.textAlign = 'center';
ctx.textBaseline = 'top';
// ─── 自动换行 ───
const lines = [];
const manualLines = text.split('\n');
for (const ml of manualLines) {
const words = ml.trim().split(/\s+/);
let current = '';
for (const word of words) {
const test = current ? `${current} ${word}` : word;
if (ctx.measureText(test).width <= maxWidth) {
current = test;
} else {
if (current) lines.push(current);
current = word;
}
}
if (current) lines.push(current);
}
// ─── 定位:在顶部约28%处居中 ───
const totalHeight = lines.length * lineHeight;
const startY = (img.height * 0.28) - (totalHeight / 2);
const x = img.width / 2;
// ─── 绘制每一行 ───
for (let i = 0; i < lines.length; i++) {
const y = startY + (i * lineHeight);
// 黑色描边
ctx.strokeStyle = '#000000';
ctx.lineWidth = outlineWidth;
ctx.lineJoin = 'round';
ctx.miterLimit = 2;
ctx.strokeText(lines[i], x, y);
// 白色填充
ctx.fillStyle = '#FFFFFF';
ctx.fillText(lines[i], x, y);
}
fs.writeFileSync(outputPath, canvas.toBuffer('image/png'));
}
使Larry的幻灯片看起来专业的关键细节:
- 动态字体大小调整——短文本字体更大(75px),长文本字体更小(51px)。每张幻灯片都经过优化。
- 自动换行——尊重手动换行不仅处理手动换行,还会自动换行超过75%宽度的文本。不压缩。顶部向下28%处居中
- — 文本块以此点为中心垂直居中,而非固定于此点。无论行数多少,始终保持在安全区域内。粗轮廓
- — 字体大小的15%。确保在任何背景上都清晰可读。首选手动换行
- — 在你的文本中使用\n来控制。每行保持4-6个词。文本内容规则:
用反应而非标签
- — 例如“等等...这其实还不错??”而不是“现代极简风”每行4-6个词
- — 短行可以一目了然每张幻灯片3-4行为理想状态
- 不要使用表情符号
- — 画布无法稳定渲染它们安全区域:
- 底部20%(TikTok控件)和顶部10%(状态栏)区域不要放置文字普通幻灯片和爆款幻灯片的区别就在于这些细节。
Larry的幻灯片总能获得5万到15万+的浏览量,因为文字大小合适、位置得当,滚动时能一目了然。⚠️ 换行至关重要 — 请阅读:
那个
texts.json文件中的文本必须包含\n换行符来控制换行位置。如果你传入一个没有换行的长字符串,脚本会自动换行,但手动换行效果更好因为你可以控制节奏。好的示例(手动换行,每行4-6个词):
[ "我给房东看了\nAI认为我们\n厨房应该的样子", "她说你什么\n都不能改\n接受挑战", "于是我下载了\n这个应用\n拍了一张照片", "等等...这真的是\n同一个厨房吗??", "好吧我简直\n迷上了\n这个方案", "Snugly让我看到了\n可能的样子\n链接在简介里" ]
坏的示例(没有换行 — 会自动换行但效果更差):
[ "我给房东看了AI认为我们厨房应该的样子", ... ]
撰写叠加文本的规则:
每行最多4-6个词
- — 短行可以一目了然— short lines are scannable at a glance
- 使用\n来换行— 让你掌控节奏
- 每页3-4行最为理想— 更多行也可以,不会溢出
- 大声读出来— 每一行都应该像一个自然的停顿
- 不要使用表情符号— 画布无法渲染它们,会显示为空白
- 用反应而非标签— 例如“等等……这不错??”而不是“现代极简风”
脚本会自动换行任何超过75%宽度的行作为安全网,但始终首选手动\n换行以获得最佳视觉效果。
3. 发布到TikTok
使用scripts/post-to-tiktok.js:
node scripts/post-to-tiktok.js --config tiktok-marketing/config.json --dir tiktok-marketing/posts/YYYY-MM-DD-HHmm/ --caption "caption" --title "title"
我们为何以草稿(仅自己可见)形式发布 — 最佳实践
帖子会以草稿形式发送到你的TikTok收件箱,而不是直接发布。这是有意为之且至关重要:
- 在TikTok上,音乐就是一切。热门声音能极大地提升触及率。算法偏爱使用流行音频的帖子。API无法挑选出正确的热门声音——你需要浏览TikTok的声音库,并挑选出你所在领域当前最热门的声音。
- 你需要手动添加音乐,然后从你的TikTok收件箱发布。每个帖子大约需要30秒。
- 没有音乐的帖子会被淹没。无声的幻灯片看起来像广告,会被直接跳过。一个热门声音能让你的内容感觉更原生。
- 创意控制。你可以在发布前预览带音乐的最终幻灯片效果。如果有什么地方看起来不对劲,可以在发布前进行修改。
正是这个工作流程帮助我们实现了超过100万的TikTok观看量和每月670美元的经常性收入。不要跳过添加音乐这一步。
在用户上手阶段告诉他们:"帖子将以草稿形式发送到你的TikTok收件箱。在发布每个帖子之前,从TikTok的声音库中添加一个热门声音——这是影响触及率的最大因素。只需30秒,但效果天差地别。"
通过Postiz,可以自动交叉发布到任何已连接的平台(Instagram、YouTube等)。
标题规则:使用长故事性标题(观看量可提升3倍)。结构:钩子 → 问题 → 发现 → 功能 → 结果 → 最多5个话题标签。采用对话式语气。
4. 连接帖子分析(在用户发布后)
用户从TikTok收件箱发布帖子后,需要将其与TikTok视频ID连接,才能启用单帖分析功能。
⚠️ 关键:发布后至少等待1-2小时再进行连接。TikTok的API存在索引延迟——如果立即尝试连接,新视频可能尚未出现在列表中,你可能会连接到错误的视频。这个错误很难撤销(Postiz一旦设置了发布ID,就不容易覆盖)。
使用scripts/check-analytics.js为了实现自动连接:
node scripts/check-analytics.js --config tiktok-marketing/config.json --days 3 --connect
脚本功能:
- 获取过去N天内的所有Postiz帖子
- 跳过发布时间少于2小时的帖子(考虑索引延迟)
- 对于未连接的帖子,调用GET /posts/{id}/missing以获取该账户上的所有TikTok视频
- 按时间顺序匹配帖子和视频(TikTok ID是顺序的:数字越大=视频越新)
- 排除已连接的视频ID,避免重复
- 通过以下接口连接每个帖子PUT /posts/{id}/release-id
- 拉取每篇帖子的分析数据(浏览量、点赞数、评论数、分享数)
匹配机制说明:
- TikTok视频ID是连续的整数(例如7605531854921354518、7605630185727118614)
- 数字越大=发布时间越晚
- 将Postiz帖子(按发布日期)和TikTok ID(按数字大小)按相同顺序排列
- 将它们对应起来:最旧的帖子 → 最小的未关联ID,最新的帖子 → 最大的未关联ID
- 这是可靠的,因为Postiz和TikTok都保持时间顺序
手动关联(如果需要):
- GET /posts/{id}/missing— 返回所有带有缩略图URL的TikTok视频
- 通过缩略图或发布时间识别正确的视频
- PUT /posts/{id}/release-id附带{"releaseId": "tiktok-video-id"}
- GET /analytics/post/{id}现在会返回浏览量/点赞数/评论数/分享数
每日的cron任务会自动处理所有这些。它早上运行,检查过去3天的帖子(都远超过2小时的索引窗口),关联任何未关联的帖子,并生成报告。
⚠️ 已知问题:发布ID无法被覆盖
一旦Postiz帖子通过PUT /posts/{id}/release-id关联到一个TikTok视频ID,就无法更改
。如果你关联了错误的视频,该帖子的分析数据将永久显示错误视频的统计数据。PUT端点看似接受了更新,但会静默地保留原始ID。这就是为什么必须等待2小时,没有商量余地。缺失端点将显示较早的视频,您可能会连接错误的内容。此操作无法撤销。
最佳实践:
- 以草稿形式发布 → 用户添加音乐后发布
- 至少等待2小时(每日早间定时任务会自动处理此事)
- 最新的未连接TikTok视频ID(编号最大)对应最近发布的视频
- 务必验证:自上次连接运行以来,未连接的Postiz帖子数量应与新的TikTok视频ID数量一致
- 若发现异常,请要求用户通过查看视频缩略图进行确认
请参阅references/analytics-loop.md以获取完整的Postiz分析API文档。
反馈循环(至关重要——这是系统运行的核心)
这正是区分“发布TikTok视频”与“运营营销机器”的关键所在。每日定时任务从两个数据源提取数据:
- Postiz→ 单条帖子的TikTok分析数据(浏览量、点赞数、评论数、分享数)
- RevenueCat(如已连接)→ 转化数据(试用开始数、付费订阅数、收入)
结合这些数据,智能代理可以做出关于下一步行动的明智决策——不再依赖猜测或直觉,而是基于实际数据进行优化。
每日定时任务(在初始设置期间配置)
每天早晨在首次发布前,定时任务会运行scripts/daily-report.js:
- 从Postiz拉取最近3天的帖子(帖子热度高峰在24-48小时)
- 获取每条帖子的分析数据(观看量、点赞、评论、分享)
- 如果已连接RevenueCat,则在相同时间窗口内拉取转化事件(归因周期24-72小时)
- 交叉比对:哪些帖子带来了观看量,哪些带来了付费用户
- 应用诊断框架(如下)来确定哪些内容有效
- 生成tiktok-marketing/reports/YYYY-MM-DD.md包含调查结果的文件
- 向用户发送摘要以及今日建议的钩子
诊断框架
这是核心智能。两个维度:观看量(人们看到了吗?)和转化(人们付费了吗?)。
高观看量 + 高转化→ 🟢 扩大规模
- 这很有效。立即制作获胜钩子的3个变体
- 测试不同的发布时间以找到最佳时机
- 跨平台发布到更多平台以获取额外覆盖
- 不要改动行动号召(CTA)的任何部分——它的转化效果很好
高浏览量 + 低转化率→ 🟡 优化行动号召(CTA)
- 开头钩子(Hook)起到了作用——人们在观看。但他们没有下载/订阅
- 在第6张幻灯片上尝试不同的行动号召(直接 vs 含蓄,“下载” vs “在App Store中搜索”)
- 检查应用落地页是否与幻灯片中的承诺一致
- 测试不同的字幕结构——也许行动号召被埋没了
- 开头钩子(Hook)是金子——别动它。修复后续所有环节
低浏览量 + 高转化率→ 🟡 优化开头钩子(Hook)
- 确实看到内容的人转化了——内容和行动号召都很好
- 但看到的人不够多,所以开头钩子/缩略图没能吸引用户停止滚动
- 测试截然不同的钩子(人物+冲突、第一人称视角、清单体、常见错误格式)
- 尝试不同的发布时间和不同的第1张幻灯片图片
- 保持行动号召和内容结构完全一致——只改变开头钩子
低浏览量 + 低转化率→ 🔴 全面重置
- 开头钩子和转化路径都未起作用
- 尝试完全不同的格式或方法
- 研究当前细分领域的最新趋势(使用浏览器)
- 考虑采用不同的目标受众角度
- 从头开始测试新的钩子类别
- 参考竞争对手研究,了解哪些策略对他人有效
高浏览量 + 高下载量 + 低付费用户→ 🔴 应用问题
- 营销是有效的。用户在看也在下载,但他们没有付费。
- 这不是内容问题——应用的新手引导、付费墙或定价需要修复。
- 检查:付费墙是否在正确的时间显示?免费体验是否过于慷慨?
- 检查:新手引导是否在付费墙出现前将用户引导至“顿悟时刻”?
- 检查:定价是否正确?相对于感知价值来说是否太贵?
- 这是一个信号,应暂停发布内容,先修复应用体验
高浏览量 + 低下载量→ 🟡 行动号召问题
- 用户在观看但没有下载。钩子有效,但行动号召无效。
- 轮换使用不同的行动号召:“个人简介中的链接”、“在App Store搜索”、仅应用名称、“免费试用”
- 检查App Store页面——是否与TikTok展示的内容匹配?
- 检查“个人简介中的链接”是否有效并指向正确位置
每日报告自动化处理所有这些工作。它交叉引用TikTok浏览量(Postiz)与下载量和收入(RevenueCat),并准确告诉你漏斗的哪个环节出现了问题——针对每个帖子。它还会根据你的成功模式自动生成新的钩子建议,并在需要轮换行动号召时发出提醒。
钩子演化
在tiktok-marketing/hook-performance.json中追踪
{
"hooks": [
{
"postId": "postiz-id",
"text": "我男朋友说我们的公寓看起来像样板间",
"app": "snugly",
"date": "2026-02-15",
"views": 45000,
"likes": 1200,
"comments": 45,
"shares": 89,
"conversions": 4,
"cta": "下载 Snugly — 链接在个人简介",
"lastChecked": "2026-02-16"
}
],
"ctas": [
{
"text": "下载 [App] — 链接在个人简介",
"timesUsed": 5,
"totalViews": 120000,
"totalConversions": 8,
"conversionRate": 0.067
},
{
"text": "在 App Store 搜索 [App]",
"timesUsed": 3,
"totalViews": 85000,
"totalConversions": 12,
"conversionRate": 0.141
}
],
"rules": {
"doubleDown": ["person-conflict-ai"],
"testing": ["listicle", "pov-format"],
"dropped": ["self-complaint", "price-comparison"]
}
}
每日报告会自动更新此内容。每个帖子都会用其钩子文案、行动号召、观看次数和归因转化进行标记。随着时间的推移,这将清晰地展示哪些钩子文案+行动号召组合真正驱动了收入——而不仅仅是浏览量。
行动号召轮换:当报告检测到高浏览量但低转化率时,它会自动建议轮换到不同的行动号召,并分别跟踪每个行动号召的表现。代理应为每个帖子标记所使用的行动号召,以便数据不断累积。
**决策规则:** - 5万+ 浏览量 → 加倍投入 — 立即制作3个变体 - 1万-5万 浏览量 → 良好 — 保持在轮换中 - 1千-1万 浏览量 → 再尝试1个变体 - 连续两次 <1千 浏览量 → 放弃 — 尝试完全不同的内容 ### 行动号召测试 当浏览量良好但转化率低时,轮换以下行动号召: - "下载 [App] — 链接在个人简介" - "[App] 可以免费试用 — 链接在个人简介" - "我用 [App] 做的这个 — 链接在个人简介" - "在 App Store 搜索 [App]" - 无明确行动号召(仅显示应用名称) 跟踪每种钩子类别下哪些行动号召转化效果最佳。 --- ## 发布时间表 最佳发布时间(根据受众时区调整): - **上午 7:30** — 抓住早起刷手机的人 - **下午 4:30** — 下午休息时间 - **晚上 9:00** — 晚间放松时间 每天至少发布3次。保持一致性胜过偶发的爆款。100个帖子的积累胜过1个爆款。 ## 跨平台发布 Postiz 支持将同一内容同时发布到多个平台。建议: - **Instagram Reels** — 尤其适合美妆/生活方式/家居类内容 - **YouTube Shorts** — 长尾流量发现 - **Threads** — 轻量级互动驱动 相同的幻灯片,不同的算法,更大的曝光面。每个平台的算法会独立评估内容。 ## 应用类别模板 特定类别的幻灯片提示和钩子公式,请参见 [references/app-categories.md](references/app-categories.md)。 ## 常见错误 | 错误 | 修复方法 | |---------|-----| | 1536x1024(横屏) | 使用 1024x1536(竖屏) | | 字体大小为 5% | 使用宽度的 6.5% | | 文本在底部 | 定位在距顶部 30% 处 | | 每张幻灯片是不同的房间 | 在每次提示中锁定建筑结构 | | 标签而非反应 | 用“等等,这个不错??”而非“现代风格” | | 仅追踪浏览量 | 追踪转化率 — 没有收入的浏览量只是虚荣指标 | | 永远使用相同的钩子 | 基于数据迭代,每周测试新格式 | | 不进行跨平台发布 | 使用 Postiz 同时发布到所有平台 | | 过早关联发布 ID | 等待 2 小时以上 — TikTok API 索引延迟 | | 关联了错误的视频 | 无法覆盖 — 关联前务必核实 | | `spawnSync ETIMEDOUT` | 执行超时时间太短 — 生成 6 张幻灯片需要 3-9 分钟。使用 10 分钟超时时间,或者一次生成一张幻灯片 |


微信扫一扫,打赏作者吧~