关于 tiktok-app-marketing
面向 AI Agent 的应用 TikTok 营销技能,围绕幻灯片内容制作、发布和效果追踪,支持持续调整内容策略。
主要功能
- 01竞品研究与内容规划
- 02配置幻灯片或视频格式
- 03生成图像或使用自备图像
- 04为幻灯片添加文字叠层
- 05通过 Upload-Post 发布并查看分析
- 06借助 RevenueCat 追踪转化
适用场景
- 01参考竞品内容规划帖子
- 02制作图片式 TikTok 幻灯片
- 03发布帖子并查看互动数据
- 04分析帖子与订阅转化的关系
MCP 相关
README 提到 RevenueCat MCP 可用于以编程方式管理产品和产品方案;它是可选组件,与本技能分开。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ upload-post/ upload-post-larry-marketing-skill --skill tiktok-app-marketing安装后在 Claude Code 中输入/tiktok-app-marketing确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
_meta.jsonREADME.md.gitignoreLICENSEindex.htmlreferences/slide-structure.mdrevenuecat-integration.mdanalytics-loop.mdcompetitor-research.mdapp-categories.mdscripts/competitor-research.jscheck-analytics.jsonboarding.jsdaily-report.jsadd-text-overlay.jsgenerate-slides.jspost-to-platforms.js详细介绍
TikTok 应用营销
自动化整个 TikTok 幻灯片营销流程:生成 → 叠加 → 发布 → 跟踪 → 迭代。
已验证的成果: 病毒式传播的 X 文章获得 700 万次浏览,TikTok 视频获得 100 万次以上浏览,月经常性收入达 670 美元——这一切都由一台旧游戏电脑上运行的 AI Agent 实现。
前提条件
此技能不捆绑任何依赖项。你的 AI Agent 需要根据你的配置自行研究并安装以下内容。告诉 Agent 你正在使用什么,它就会处理其余事项。
必需项
- Node.js(v18+)——所有脚本都在 Node 上运行。你的 Agent 应确认是否已安装;如果没有,则安装。
- node-canvas(
npm install canvas)——用于为幻灯片图片添加文字叠加层。这是一个原生模块,某些系统可能需要构建工具(Python、make、C++ 编译器)。你的 Agent 应研究适用于你操作系统的安装要求。 - Upload-Post——这是整个系统的核心。Upload-Post 只需一次 API 调用,即可同时向 TikTok、Instagram 和其他 10 多个平台发布内容。它还提供分析数据(粉丝、曝光量、触达量)和上传历史记录(按帖子跟踪),为每日反馈循环提供支持。没有 Upload-Post,Agent 就无法发布内容或跟踪哪些内容有效;而反馈循环正是这项技能能够真正帮助账号增长,而不是盲目发布内容的关键。请前往 upload-post.com 注册。
图片生成(任选其一)
选择用于生成图片的工具。你的 Agent 应研究所选工具的 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——它能完善整个智能反馈闭环。Upload-Post 会告诉你哪些帖子获得了曝光量;RevenueCat 会告诉你哪些帖子带来了付费用户。两者结合后,Agent 就能区分只带来病毒式传播却没有收入的帖子,与表现普通但真正带来转化的帖子,并据此优化。从 ClaWHub 安装 RevenueCat 技能(
clawhub install revenuecat),即可完整访问订阅用户、MRR、试用、流失和收入相关 API。你还可以使用 RevenueCat MCP,通过 Agent/IDE 以编程方式管理产品和套餐。
跨平台发布(Upload-Post 内置功能)
Upload-Post 支持通过一次 API 调用,将内容发布到 TikTok、Instagram、YouTube、LinkedIn、Facebook、X(Twitter)、Threads、Pinterest、Reddit 和 Bluesky。你的 Agent 应研究哪些平台适合你的受众,并在 Upload-Post 个人资料中连接这些平台。同一份内容,不同的算法,更多的触达。
首次运行——引导设置
首次加载此技能时,立即开始与用户对话。不要直接抛出一份检查清单——要像营销合作伙伴那样自然交流。下面的流程只是指南,不是逐字照读的脚本。自然地沟通,每次问一两个问题,根据用户的回答作出回应,并以他们的回答为基础继续交流。
重要提示: 最后使用 scripts/onboarding.js --validate 确认配置完整。
阶段 0:TikTok 账号预热(至关重要——不要跳过)
在做任何事情之前,先确认用户是否已经有带有发布记录的 TikTok 账号。如果他们要创建新账号,就必须先进行预热,否则 TikTok 会把他们当成机器人,从第一天起就限制他们的触达量。
自然地说明:
“在开始之前先快速问一下——你已经有一个一直在用的 TikTok 账号,还是要从头开始?如果是新账号,我们需要先预热。TikTok 的算法会观察新账号的行为,如果你从创建账号直接跳到发布 AI 幻灯片视频,它就会把你标记为机器人,并压低你的触达量。”
如果账号是新的或几乎没用过,请引导他们完成以下步骤:
目标是在发布任何内容之前,先像普通人一样使用 TikTok 7-14 天。每天在应用上花 30-60 分钟:
- 自然浏览“为你推荐”页面。 有些视频从头看到尾,有些看到一半就划走。不要每个视频都看到最后——真实用户不会这样浏览。
- 少量点赞。 大约每 10 个视频点赞 1 个。不要什么都点赞——那是机器人的行为。只给你在自己的细分领域里确实感兴趣的内容点赞。
- 关注你所在细分领域的账号。 如果他们要推广健身应用,就关注健身创作者;如果是房间设计,就关注室内设计账号。这样能帮助算法了解这个账号的主题。
- 有意观看细分领域的内容。 这是最重要的一步。TikTok 会学习你互动的内容,并开始向你推荐更多类似内容。你希望“为你推荐”页面上大部分都是与你即将发布的内容相似的内容。
- 留下一些真诚的评论。 不要刷垃圾评论,要发表真实的感想。每次使用时留几条即可。
- 或许发布 1-2 条随意的视频。 不要带有推广性质,只发布普通内容,让 TikTok 知道账号背后有真人。
需要关注的信号: 当他们打开 TikTok 时,“为你推荐”页面上几乎每个视频都属于自己的细分领域,就说明账号已经预热好了。算法已经了解他们了。现在可以开始发布了。
告诉用户:“我知道两周听起来像是在浪费时间,但跳过预热的账号,首批帖子获得的触达量通常会少 80-90%。把预热做好。这决定了你的首个帖子是获得 200 次观看,还是 20,000 次观看。”
**如果账号已经在活跃使用且运营成熟,**就完全跳过这一阶段,进入阶段 1。
第 1 阶段:了解他们的应用(对话式)
轻松开场,例如:
“嘿!我们来着手设置你的 TikTok 营销吧。先跟我说说你的应用。它叫什么,有什么功能?”
然后根据对方的回答继续追问。不要一次性问完所有 9 个问题。顺着对方的话题深入了解:
- 对方提到应用的功能 → 问目标用户是谁(“你的理想用户是谁?”)
- 对方介绍了受众 → 问他们的痛点(“它主要帮他们解决什么问题?”)
- 对方解释了问题 → 问你的应用有何不同(“和其他替代方案相比,你的应用有什么突出之处?”)
- 自然地询问 App Store 或网站链接(“可以把链接发给我吗?”)
- 确定类别(家居/美容/健身/效率/美食/其他)——通常可以推断出来
**不要像机器人一样询问“品牌指南”。**换一种说法:“你们有现成的内容,或者想要营造某种风格吗?还是要从头开始?”
然后询问他们的应用和变现方式:
“这是移动应用吗?你们是否使用 RevenueCat(或其他订阅/应用内购买系统)处理付款?”
这很关键,因为它决定我们能否完成完整的反馈闭环。如果他们有移动应用并使用 RevenueCat:
- 告诉他们 ClawHub 上的 RevenueCat 技能(
clawhub install revenuecat)。它可以通过 API 全面访问订阅用户、MRR、试用、流失、收入和交易数据。不要自动安装——只需告诉他们它的存在和可解锁的功能,他们可以自行决定是否安装。 - **说明它为何重要:**没有 RevenueCat 数据时,该技能只能针对浏览量进行优化(虚荣指标);有了这些数据,技能就能针对实际付费用户进行优化。两者差别巨大。一条获得 200K 次浏览却没有任何转化的帖子毫无价值。一条获得 5K 次浏览并带来 10 名付费订阅用户的帖子则价值连城。只有接入 RevenueCat,才能看出其中的差异。
如果他们不使用 RevenueCat,但有其他订阅系统,请记录下来,并根据现有数据开展工作。如果不是移动应用(例如实体产品、SaaS、服务),则跳过 RevenueCat,但仍要追踪他们拥有的转化指标(网站注册、购买、潜在客户)。
将所有信息存储在 tiktok-marketing/app-profile.json 中。
第 2 阶段:竞品调研(需要浏览器权限)
制定内容策略前,先研究竞品在 TikTok 上的表现。这很关键——你需要了解市场情况。
询问用户:
“在开始创作内容前,我想先研究一下你的竞品在 TikTok 上的表现——你的细分领域中哪些内容能获得浏览量、他们用了哪些钩子、哪些做法有效、哪些无效。我可以用浏览器浏览 TikTok 和 App Store 吗?”
**等待用户授权。**然后:
- 搜索 TikTok,查找该应用所属的细分领域(例如“室内设计应用”“丰唇滤镜”“健身蜕变应用”)
- 找到 3-5 个竞品账号,这些账号发布的内容与之类似
- 分析他们表现最好的内容:
- 他们用了哪些钩子?
- 采用了什么幻灯片形式?(前后对比、列表、POV、教程)
- 他们表现最佳和平均水平的帖子分别有多少浏览量?
- 他们发布内容的频率如何?
- 他们用了哪些 CTA?
- 该细分领域有哪些热门音乐/声音?
- 查看 App Store 中该应用所属的类别——浏览竞品应用、截图、描述和评分
- 将调研结果整理到
tiktok-marketing/competitor-research.json中:
{
"researchDate": "2026-02-16",
"competitors": [
{
"name": "CompetitorApp",
"tiktokHandle": "@competitor",
"followers": 50000,
"topHooks": ["hook 1", "hook 2"],
"avgViews": 15000,
"bestVideo": { "views": 500000, "hook": "..." },
"format": "before-after slideshows",
"postingFrequency": "daily",
"cta": "link in bio",
"notes": "Strong at X, weak at Y"
}
],
"nicheInsights": {
"trendingSounds": [],
"commonFormats": [],
"gapOpportunities": "What competitors AREN'T doing that we could",
"avoidPatterns": "What's clearly not working"
}
}
- 用对话的方式向用户分享调研结果:
“我看了一下目前的情况。[竞品 A] 采用 [形式],表现不错——他们表现最好的一条帖子用了 [钩子类型],获得了 [X] 次浏览。不过我发现,几乎没人涉足 [空白领域]。这就是我们的切入点。”
这项调研会直接影响钩子生成和内容策略。创作帖子时要参考调研结果。
第 3 阶段:内容格式与图像生成
首先,询问内容格式:
“你想制作幻灯片(照片轮播)还是视频?Larry 使用的是幻灯片,这也是此技能围绕其构建的内容形式——TikTok 的数据显示,幻灯片获得的评论量是视频的 2.9 倍,分享量是视频的 2.6 倍,而且 AI 更容易稳定地生成幻灯片。当然,如果你想尝试视频,此技能也支持,不过视频还没有像幻灯片那样经过充分验证。由你决定。”
将他们的选择存储在 config 中,值为 format: "slideshow" 或 format: "video"。如果他们选择视频,请说明文字叠加、6 张幻灯片的结构和提示词模板都是为幻灯片设计的。视频需要更多试验,Agent 应坦诚说明这一点。
对于幻灯片(推荐):
自然地询问:
“制作幻灯片需要图像。我强烈推荐 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 生成的结果则逼真得像照片,能让人停下滑动。这个设置可能就是 1K 和 100K 次观看量之间的差别。
如果他们拿不定主意,始终推荐 gpt-image-1.5。这是经过验证的选择。
将图像生成配置存储在 config 的 imageGen 中,包含 provider、apiKey 和 model。
如果他们选择 OpenAI,请提及 Batch API:
“有一点值得了解——OpenAI 提供的 Batch API 比实时生成便宜 50%。你不用当场生成幻灯片,而是将它们作为批处理任务提交,并在 24 小时内(通常快得多)获得结果。它非常适合在夜间预先生成第二天的幻灯片。画质相同,成本减半。要我帮你设置吗?”
如果他们感兴趣,请在 imageGen 配置中存储 "useBatchAPI": true。生成脚本支持两种模式——用于快速迭代的实时生成,以及用于安排每日内容的批处理。
接下来——这一步至关重要——和他们一起确定图像风格。 不要只用通用提示词。糟糕的图像 = 没人观看。自然地询问以下问题,每次问一两个:
“现在我们来确定这些图像具体应该是什么样子。你想让它们看起来像有人用手机拍的真实照片,还是更像精致的图形或插画?”
然后根据他们的回答深入询问:
- 主体是什么? “我们具体要展示什么?房间?人物?产品?前后对比?”
- 想要什么氛围? “温馨暖意?简洁极简?奢华?想想你的受众会产生共鸣或向往什么。”
- 保持一致: “6 张幻灯片看起来应该像是同一个地方或同一个人吗?如果是,我需要确定具体细节,避免每张幻灯片看起来都完全不同。”
- 必须包含的元素? “每张图里必须出现什么东西吗?某个特定产品?特定家具?宠物?”
和他们一起构建基础提示词。好的基础提示词如下所示:
iPhone photo of a [specific room/scene], [specific style], [specific details].
Realistic lighting, natural colors, taken on iPhone 15 Pro.
No text, no watermarks, no logos.
[Consistency anchors: "same window on left wall", "same grey sofa", "wooden coffee table in center"]
将商定的提示词风格保存到 config 的 imageGen.basePrompt 中, 以便今后的每篇帖子都使用它。
关键提示词规则(遇到时再解释,不要说教):
- “iPhone 照片” + “真实光线” = 看起来真实,而非 AI 生成
- 每条幻灯片提示词都要锁定建筑结构和布局,否则每张幻灯片看起来都像是不同的地方
- 加入日常用品(马克杯、遥控器、杂志),营造有人生活的感觉
- 对于前后对比:“改造前”应是现代但略显陈旧,而不是古老
- 始终使用纵向方向(1024x1536)——这是 TikTok 的格式
- 越具体越好,不要含糊(“带白色橱柜、洗手池上方有窗户的小型狭长厨房”优于“厨房”)
绝不要使用“一个漂亮的客厅”或“一个美丽的脸”之类的通用提示词——它们生成的图像千篇一律,会被人划过。
第 4 阶段:设置 Upload-Post(必需 — 支持多平台发布和分析)
Upload-Post 是实现多平台发布和分析跟踪的引擎。只需一次 API 调用,内容就能同时发布到 TikTok、Instagram 和其他已连接的平台。它提供:
- 多平台发布 — 通过一次 API 调用发布到 TikTok + Instagram(以及 YouTube、LinkedIn、Facebook、X、Threads、Pinterest、Reddit、Bluesky)
- 上传历史记录 — 跟踪每条帖子的 request_ids、帖子 URL 和成功/失败状态
- 平台分析数据 — 粉丝数、展示次数、覆盖人数、个人主页浏览量和时间序列数据
- 自动跟踪 — 无需手动关联视频 ID(通过 request_id 跟踪)
自然地向用户介绍:
“关键在这里——我们需要 Upload-Post 来处理发布和分析。它可以让我通过一次 API 调用,同时将内容发布到 TikTok 和 Instagram,并跟踪每条帖子的表现。一次上传,多个平台,自动跟踪。”
逐步引导他们完成连接:
- 在 upload-post.com 注册 — 创建一个账号
- 连接 TikTok — 这是最重要的平台。前往个人主页 → Connect TikTok → Authorize
- 连接 Instagram — 流程相同。这可以免费将覆盖范围扩大一倍。
- 创建一个 Profile — 这是 API 调用中使用的 Profile 名称(例如,“mybrand”)。记下这个名称。
- 获取 API 密钥 — Dashboard → API Keys → Generate。这是 Agent 以编程方式与 Upload-Post 通信的凭证。
- (可选) 连接 YouTube、LinkedIn、Threads 等平台,以进一步扩大覆盖范围 — 相同的内容,不同的算法。
在 Upload-Post 完成连接且 API 密钥可用之前,不要继续。 调用分析端点进行测试。如果返回了数据,就说明一切正常。
阶段 5:转化追踪(智能闭环)
如果他们有一款使用 RevenueCat 的移动应用(你应该已经在阶段 1 了解过这一点),那么技能就会从“内容自动化”升级为“智能营销系统”。这是整个技能中最重要的集成,不要把它当作可选项。
解释它的重要性:
“目前通过 Upload-Post,我可以追踪哪些帖子获得了展示量和触达量,以及它们是否成功发布到了各个平台。这是漏斗的顶端。但仅有展示量并不能带来收入——我们需要知道哪些帖子真正带来了付费订阅者。”
“这就是 RevenueCat 的用武之地。它会追踪订阅者、试用、MRR、流失情况——也就是实际收入。将 Upload-Post 的平台分析数据与 RevenueCat 的转化数据结合起来后,我就能做出真正明智的决策:”
“如果一条帖子获得了 50K 次展示但没有带来任何转化,我就知道钩子很吸引人,但 CTA 或应用文案需要改进。如果一条帖子获得了 2K 次展示,却带来了 5 位付费订阅者,我就知道内容的转化效果非常好——我们只需要让更多人看到它,所以要改进钩子。”
“没有 RevenueCat,我优化的是虚荣指标。有了它,我优化的就是收入。”
逐步引导他们完成设置:
-
从 ClaWHub 安装 RevenueCat 技能:
clawhub install revenuecat这会安装
revenuecat技能(v1.0.2+),为你的 RevenueCat 项目提供完整的 API 访问权限,包括指标概览、客户、订阅、产品方案、权益、交易等。它还包含每个 API 端点的参考文档,以及用于直接调用 API 的辅助脚本(scripts/rc-api.sh)。 -
从 RevenueCat 控制面板获取 V2 secret API key:
- 前往你的 RC 项目 → Settings → API Keys
- 生成一个 V2 secret key(以
sk_开头) - ⚠️ 这是一个密钥——不要将它提交到公开仓库
-
设置环境变量:
export RC_API_KEY=sk_your_key_here -
**验证是否有效:**运行
./skills/revenuecat/scripts/rc-api.sh /projects——应该会返回你的项目详情。 -
可选:RevenueCat MCP——通过你的 Agent 或 IDE,以编程方式管理产品、产品方案和权益。让你的 Agent 研究如何设置。
RevenueCat 为每日报告提供的数据:
GET /projects/{id}/metrics/overview→ MRR、活跃订阅者、活跃试用、流失率GET /projects/{id}/transactions→ 带时间戳的单笔购买记录(用于转化归因)- 每日 cron 会将交易时间戳与帖子发布时间交叉比对(24-72h 窗口),以识别哪些帖子带来了哪些转化
由此实现的智能分析:
- “这个钩子获得了 50K 次观看,但没有带来任何转化” → 钩子很吸引人,CTA 需要改进
- “这个钩子获得了 5K 次观看,却带来了 3 位付费订阅者” → 内容的转化效果非常好,改进钩子以获得更多触达
- “所有帖子的转化效果都持续不佳” → 问题可能出在应用上(引导流程、付费墙、定价),而不是内容上——技能会标记这一点以供调查
**没有 RevenueCat:**闭环仍会基于 Upload-Post 分析数据(展示量/触达量/上传状态)运行。你可以优化互动效果,但无法掌握收入情况。你会知道哪些帖子获得了展示量,却不知道哪些帖子带来了收入。
**有了 RevenueCat:**你可以针对实际付费用户进行优化。你能分辨出哪些帖子虽然走红却没有带来收入,哪些不太起眼的帖子却带来了 $50 的订阅收入。这正是反馈闭环的核心意义。每日报告做出的每项决策,都会因 RevenueCat 数据而更准确。
如果他们不使用 RevenueCat 或没有订阅业务,技能仍然可以运行,但反馈闭环只能进行基于展示量的优化。
第 6 阶段:内容策略(基于调研)
结合竞品调研和应用简介,制定初步内容策略:
“根据我的发现和你的应用功能,这是我为第一周制定的计划……”
展示:
- 3-5 个吸引点创意,针对其细分领域和竞品的不足量身打造
- 发布计划建议(默认:上午 7:30、下午 4:30、晚上 9 点——按用户所在时区)
- 优先测试的吸引点类别(参考竞品中效果好的类别)
- 跨平台发布计划(选择哪些平台,以及发布相同内容还是调整后的内容)
将策略保存到 tiktok-marketing/strategy.json。
第 7 阶段:设置每日分析 Cron
这是让整个系统持续自我优化的关键。设置一个每日 Cron 任务,以便:
- 从 Upload-Post 获取平台分析数据(粉丝、展示量、触达趋势)
- 获取上传记录,检查各平台帖子的成功或失败情况
- 获取 RevenueCat 的转化数据(如已连接)
- 将展示量与转化数据交叉对照,诊断哪些内容有效
- 生成报告并提供具体建议
- 根据表现趋势提出新的吸引点创意
向用户说明:
“我会设置一个每天早晨运行的检查任务。它会查看你过去 3 天发布的内容表现——平台分析数据、TikTok 和 Instagram 上的上传状态,以及在你连接了 RevenueCat 的情况下,实际转化情况。然后,它会准确告诉你哪些内容有效,以及需要调整什么。”
“帖子的表现通常会在 24-48 小时达到峰值,而转化归因最多需要 72 小时,因此查看 3 天的数据窗口可以帮助我们全面了解情况。”
设置 Cron:
使用 Agent 的 Cron 系统安排每日分析任务。将其设置为每天早晨在当天第一条帖子发布前运行(例如用户所在时区的上午 7:00),以便报告为当天的内容提供参考:
Schedule: daily at 07:00 (user's timezone)
Task: Run scripts/daily-report.js --config tiktok-marketing/config.json --days 3
Output: tiktok-marketing/reports/YYYY-MM-DD.md + message to user with summary
每日报告使用以下诊断框架:
- 高浏览量 + 高转化 → 扩大规模——发布更多类似内容,并测试发布时间
- 高浏览量 + 低转化 → 吸引点有效,但行动号召有问题——测试第 6 张幻灯片上的新行动号召,并检查应用落地页
- 低浏览量 + 高转化 → 内容转化效果好,但触达不足——测试截然不同的吸引点,保留行动号召
- 低浏览量 + 低转化 → 全面重启——采用新形式、新受众切入角度和新的吸引点类别
这是智能分析层。没有它,你只是在发布内容并寄希望于效果。有了它,每天的内容都能以数据为依据。
阶段 8:保存配置并发布第一条内容
将所有内容存储在 tiktok-marketing/config.json 中(这是整个流水线的事实来源):
{
"app": {
"name": "AppName",
"description": "Detailed description",
"audience": "Target demographic",
"problem": "Pain point it solves",
"differentiator": "What makes it unique",
"appStoreUrl": "https://...",
"category": "home|beauty|fitness|productivity|food|other",
"isMobileApp": true
},
"imageGen": {
"provider": "openai",
"apiKey": "sk-...",
"model": "gpt-image-1.5"
},
"uploadPost": {
"apiKey": "your-upload-post-api-key",
"profile": "your_profile_name",
"platforms": ["tiktok", "instagram"]
},
"revenuecat": {
"enabled": false,
"v2SecretKey": "sk_...",
"projectId": "proj..."
},
"posting": {
"schedule": ["07:30", "16:30", "21:00"],
"crossPost": ["youtube", "threads"]
},
"competitors": "tiktok-marketing/competitor-research.json",
"strategy": "tiktok-marketing/strategy.json"
}
然后生成第一组测试幻灯片——但要设定好预期:
“我们来制作第一组幻灯片。这是一次测试——我们要调整图片风格,暂时还不发布。我会生成 6 张幻灯片,我们一起看看。如果图片效果不理想,就调整提示词再试。我们的目标是在开始发布之前,把风格确定下来。”
⚠️ 调整过程是这项技能的一部分:
要让图片效果理想,需要反复迭代。这很正常,也在预期之内。请引导用户完成以下过程:
- 使用你们共同设计的提示词生成一组 6 张测试图片
- 展示结果并询问:“你觉得效果怎么样?是不是太精致了?太暗了?氛围不对?家具不合适?”
- 根据反馈调整——修改基础提示词,然后重新生成
- 重复以上步骤,直到用户满意——可能需要 2-5 轮,没关系
- 风格确定后锁定提示词——保存到配置中
需要留意并询问的问题:
- “这些图片够真实吗?还是看起来像 AI 生成的?”
- “光线合适吗?太亮了?氛围太阴郁了?”
- “这符合你的用户实际会有的共鸣吗?”
- “日常细节合适吗?(家具风格、物品、布局)”
你不必发布任何自己不喜欢的内容。 前几轮生成纯粹是为了完善提示词。只有当图片效果稳定且令人满意后,才开始发布。Agent 会从每一轮中学习——哪些有效,哪些无效,以及提示词中需要强调什么。
风格确定后,再使用竞品调研得出的钩子策略及其类别(参见 references/slide-structure.md),然后开始发布计划。
核心工作流
1. 生成幻灯片图片
使用 scripts/generate-slides.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 秒)。请将 exec 超时设为至少 600 秒(10 分钟)。如果出现 spawnSync ETIMEDOUT,说明 exec 超时时间太短。脚本支持断点续跑——如果中途失败,重新运行即可,已完成的幻灯片会被跳过。
关键图片规则(适用于所有提供商):
- 始终使用纵向宽高比(1024x1536 或等效的 9:16)——铺满 TikTok 屏幕
- 在提示词中加入 "iPhone photo" 和 "realistic lighting"(适用于 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 auto-downloads prebuilt binaries on 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);
// ─── Adjust font size based on text length ───
const wordCount = text.split(/\s+/).length;
let fontSizePercent;
if (wordCount <= 5) fontSizePercent = 0.075; // Short: 75px on 1024w
else if (wordCount <= 12) fontSizePercent = 0.065; // Medium: 66px
else fontSizePercent = 0.050; // Long: 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';
// ─── Word wrap ───
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);
}
// ─── Position: centered at ~28% from top ───
const totalHeight = lines.length * lineHeight;
const startY = (img.height * 0.28) - (totalHeight / 2);
const x = img.width / 2;
// ─── Draw each line ───
for (let i = 0; i < lines.length; i++) {
const y = startY + (i * lineHeight);
// Black outline
ctx.strokeStyle = '#000000';
ctx.lineWidth = outlineWidth;
ctx.lineJoin = 'round';
ctx.miterLimit = 2;
ctx.strokeText(lines[i], x, y);
// White fill
ctx.fillStyle = '#FFFFFF';
ctx.fillText(lines[i], x, y);
}
fs.writeFileSync(outputPath, canvas.toBuffer('image/png'));
}
让 Larry 的幻灯片看起来更专业的关键细节:
- 动态调整字体大小——短文字使用较大字号(75px),长文字使用较小字号(51px)。每张幻灯片都会进行优化。
- 自动换行——遵循手动添加的
\n换行符,也会自动换行超过宽度 75% 的文本。不会挤压文字。 - 从顶部向下 28% 处居中——文本块以此处为中心垂直居中,而不是固定在该位置。无论行数多少,都能保持在安全区域内。
- 粗描边——宽度为字体大小的 15%。在任何背景上都能保证文字清晰易读。
- 优先手动换行——在文本中使用
\n来控制换行。每行保持 4-6 个单词。
文本内容规则:
- 写反应,不写标签——“等等……这竟然还挺不错??”而不是“现代简约”
- 每行 4-6 个单词——短句便于快速浏览
- 每张幻灯片以 3-4 行为宜
- 不要使用 emoji——canvas 无法可靠地渲染它们
- 安全区域: 底部 20%(TikTok 控件区域)和顶部 10%(状态栏区域)不要放置文字
普通幻灯片与爆款幻灯片的差别就在这些细节中。 Larry 的幻灯片播放量稳定达到 50K-150K+,因为文字大小恰当、位置合适,而且用户滑动浏览时也能一眼看清。
⚠️ 换行至关重要——请仔细阅读:
texts.json 文件中的文本必须包含 \n 换行符,以控制文本的换行位置。如果传入一整段没有换行符的长字符串,脚本会自动换行,但手动换行效果更好,因为你可以控制文字节奏。
正确示例(手动换行,每行 4-6 个单词):
[
"I showed my landlord\nwhat AI thinks our\nkitchen should look like",
"She said you can't\nchange anything\nchallenge accepted",
"So I downloaded\nthis app and\ntook one photo",
"Wait... is this\nactually the same\nkitchen??",
"Okay I'm literally\nobsessed with\nthis one",
"Snugly showed me\nwhat's possible\nlink in bio"
]
错误示例(没有换行——虽然会自动换行,但效果较差):
[
"I showed my landlord what AI thinks our kitchen should look like",
...
]
编写叠加文字的规则:
- 每行最多 4-6 个单词——短句便于快速浏览
- 使用
\n换行——这样可以控制文字节奏 - 每张幻灯片以 3-4 行为宜——更多行也可以,不会溢出
- 大声读出来——每行听起来都应该像自然的停顿
- 不要使用 emoji——canvas 无法渲染它们,会显示为空白
- 写反应,不写标签——“等等……这挺不错??”而不是“现代简约”
作为保险措施,脚本会自动换行超过宽度 75% 的文本,但为了获得最佳视觉效果,请始终优先手动使用 \n 换行。
3. 发布到 TikTok + Instagram
使用 scripts/post-to-platforms.js:
node scripts/post-to-platforms.js --config tiktok-marketing/config.json --dir tiktok-marketing/posts/YYYY-MM-DD-HHmm/ --caption "caption" --title "title"
此脚本会上传所有幻灯片图片,并通过 Upload-Post 的一次 API 调用,同时将其发布到 TikTok + Instagram(以及任何其他已配置的平台)。
工作原理:
- 从目录中读取幻灯片图片(slide1.png 至 slideN.png)
- 将图片发送到 Upload-Post 的
POST /upload_photos端点 - 在同一个请求中包含所有已配置的平台
- 使用
async_upload=true在后台处理 - 返回用于追踪的
request_id(保存在meta.json中)
无需手动关联视频 ID。 Upload-Post 会通过 request_id 自动追踪帖子。上传历史端点会返回各个平台的帖子 URL 以及成功或失败状态。
文案规则: 使用较长的叙事型文案(浏览量可提高 3 倍)。结构:吸引注意 → 问题 → 发现 → 功能 → 结果 → 最多 5 个标签。语气自然亲切。
为什么我们将 TikTok 幻灯片设为草稿发布——最佳实践
对于 TikTok,帖子会以照片轮播的形式发布。TikTok 照片帖子能从热门音乐中获益良多:
- 音乐对 TikTok 至关重要。 热门音乐能大幅提升触达率。算法会优先推荐使用热门音频的帖子。
- 发布后,从 TikTok 的音乐库添加音乐——浏览你所在领域的热门音乐。
- 没有音乐的帖子容易被淹没。 无声幻灯片看起来像广告,很容易被跳过。热门音乐能让你的内容显得更自然。
正是这套工作流帮助我们获得了 100 万以上的 TikTok 浏览量和每月 670 美元的 MRR。不要跳过添加音乐这一步。
Instagram 轮播不需要音乐——直接发布效果就很好。Upload-Post 会为这两个平台设置适当的选项。
4. 追踪分析数据
使用 scripts/check-analytics.js 获取平台分析数据和上传历史:
node scripts/check-analytics.js --config tiktok-marketing/config.json --days 3
该脚本会:
- 获取平台级分析数据(关注者、展示次数、触达人数、个人主页浏览量)
- 获取最近 N 天的上传历史
- 按
request_id对上传内容分组(一篇帖子 = 多个平台条目) - 显示每篇帖子的成功或失败状态以及帖子 URL
- 将快照保存到
analytics-snapshot.json
无需连接步骤。 与需要手动关联帖子 ID 的系统不同,Upload-Post 会通过 request_id 自动追踪所有内容。上传后,历史记录会立即显示帖子发布到了哪些平台以及对应的帖子 URL。
每日 cron 会自动处理所有这些工作。 它会在早上运行,检查最近 3 天的数据,并生成一份全面报告。
反馈循环(至关重要——这是成功的关键)
这就是“发布 TikTok 帖子”和“运营营销机器”之间的区别。每日 cron 会从两个来源获取数据:
- Upload-Post → 平台分析数据(关注者、展示次数、触达人数)+ 上传历史(每篇帖子的成功状态、帖子 URL)
- RevenueCat(如果已连接)→ 转化数据(试用开始次数、付费订阅、收入)
结合这些数据,Agent 可以智能地决定下一步该做什么——不靠猜测,不凭感觉,而是基于实际数据进行优化。
每日 Cron(在引导设置期间配置)
每天早上,在发布第一篇帖子之前,cron 会运行 scripts/daily-report.js:
- 从 Upload-Post 获取平台分析数据(关注者、展示次数、触达人数时间序列)
- 获取最近 3 天的上传历史(每篇帖子的状态、帖子 URL)
- 如果已连接 RevenueCat,则获取同一时间段内的转化事件(24–72 小时归因)
- 交叉比对:哪些帖子带来了浏览量,哪些帖子带来了付费用户
- 应用诊断框架(如下),判断哪些做法有效
- 生成
tiktok-marketing/reports/YYYY-MM-DD.md,记录调查结果 - 向用户发送摘要以及今天可用的建议开场文案
诊断框架
这是核心智能。两个维度:浏览量(有人看到吗?)和 转化量(有人付费吗?)。
高浏览量 + 高转化量 → 🟢 扩大规模
- 效果不错。立即根据表现最佳的钩子制作 3 个变体
- 测试不同的发布时间,找到最佳时段
- 同步发布到更多平台,以获得额外触达
- 不要改动任何 CTA——它正在带来转化
高浏览量 + 低转化量 → 🟡 优化 CTA
- 钩子发挥了作用——人们在观看。但他们没有下载/订阅
- 尝试在第 6 页使用不同的 CTA(直接与含蓄、“下载”与“在 App Store 搜索”)
- 检查应用落地页是否符合幻灯片中的承诺
- 测试不同的说明文字结构——CTA 可能被埋得太深了
- 钩子很出色——别动它。优化后续所有环节
低浏览量 + 高转化量 → 🟡 优化钩子
- 看到内容的人确实会转化——内容和 CTA 都很棒
- 但看到的人不够多,所以钩子/缩略图没能让人停下滚动
- 测试截然不同的钩子(人物+冲突、POV、清单式、错误形式)
- 尝试不同的发布时间和不同的第 1 页图片
- 保持 CTA 和内容结构不变——只改钩子
低浏览量 + 低转化量 → 🔴 全面重置
- 钩子和转化路径都不起作用
- 尝试完全不同的形式或方法
- 调研当前细分领域的热门趋势(使用浏览器)
- 考虑采用不同的目标受众切入角度
- 从头测试新的钩子类别
- 参考竞品调研,了解哪些做法对其他人有效
高浏览量 + 高下载量 + 低付费订阅量 → 🔴 应用问题
- 营销奏效了。人们在观看,也在下载。但他们没有付费。
- 这不是内容问题——应用引导流程、付费墙或定价需要调整。
- 检查:是否在合适的时机显示付费墙?免费体验是否过于宽松?
- 检查:应用引导是否在付费墙出现前,引导用户体验到“顿悟时刻”?
- 检查:定价是否合理?相对于用户感知价值而言,是否太贵?
- 这是一个信号:暂停发布内容,先修复应用体验
高浏览量 + 低下载量 → 🟡 CTA 问题
- 人们在观看,但没有下载。钩子有效,CTA 无效。
- 轮换使用不同的 CTA:“个人简介中的链接”、“在 App Store 搜索”、仅显示应用名称、“免费试用”
- 检查 App Store 页面——它是否与 TikTok 展示的内容一致?
- 检查“个人简介中的链接”是否确实有效,并指向正确位置
每日报告会自动完成以上所有分析。 它会交叉比对平台展示量(Upload-Post)与下载量和收入(RevenueCat),并按帖子准确指出漏斗中的哪个环节出了问题。它还会根据表现最佳的模式自动生成新的钩子建议,并在 CTA 需要轮换时发出提醒。
钩子迭代
在 tiktok-marketing/hook-performance.json 中跟踪:
{
"hooks": [
{
"requestId": "abc123def456",
"text": "My boyfriend said our flat looks like a catalogue",
"date": "2026-02-15",
"platforms": {
"tiktok": { "success": true, "postUrl": "..." },
"instagram": { "success": true, "postUrl": "..." }
},
"conversions": 4,
"cta": "Download Snugly — link in bio",
"lastChecked": "2026-02-16"
}
],
"ctas": [
{
"text": "Download [App] — link in bio",
"timesUsed": 5,
"totalConversions": 8,
"conversionRate": 0.067
},
{
"text": "Search [App] on the App Store",
"timesUsed": 3,
"totalConversions": 12,
"conversionRate": 0.141
}
],
"rules": {
"doubleDown": ["person-conflict-ai"],
"testing": ["listicle", "pov-format"],
"dropped": ["self-complaint", "price-comparison"]
}
}
每日报告会自动更新此文件。 每条帖子都会标记其钩子文案、CTA 和归因转化量。随着时间推移,这能清晰呈现哪些钩子 + CTA 组合真正带来收入,而不仅仅是浏览量。
CTA 轮换: 报告检测到展示量高但转化量低时,会自动建议轮换为不同的 CTA,并分别跟踪各个 CTA 的表现。Agent 应为每条帖子标记所使用的 CTA,以便持续积累数据。
决策规则:
- 展示量 + 转化量增长 → 加倍投入——立即制作 3 个变体
- 展示量稳定 → 良好——继续轮换使用
- 展示量下降 → 再尝试 1 个变体
- 持续表现不佳 → 停用——尝试截然不同的方案
CTA 测试
当浏览量不错但转化率偏低时,轮换使用不同的 CTA:
- “下载 [App] — 链接在个人简介中”
- “[App] 可免费试用 — 链接在个人简介中”
- “我用 [App] 做了这个 — 链接在个人简介中”
- “在 App Store 搜索 [App]”
- 不添加明确的 CTA(只显示应用名称)
按钩子类别跟踪哪种 CTA 的转化效果最好。
发布安排
最佳发布时间(根据受众所在时区调整):
- 上午 7:30 — 抓住早起刷内容的用户
- 下午 4:30 — 下午休息时间
- 晚上 9:00 — 晚间放松时间
每天至少发布 3 次。保持稳定胜过偶尔爆红。发布 100 条内容胜过 1 条爆款。
多平台发布
Upload-Post 支持通过一次 API 调用,同时将同一内容发布到 10 多个平台。建议:
- Instagram — 对美容、生活方式和家居内容尤其有效(默认包含)
- YouTube Shorts — 带来长尾发现
- Threads — 轻量级互动渠道
- LinkedIn — 适合 B2B/专业类应用
- Pinterest — 适合视觉、家居和设计领域
相同的幻灯片,不同的算法,覆盖面更广。每个平台的算法都会独立评估内容。Upload-Post 会自动处理各个平台的格式要求。
应用类别模板
类别专属的幻灯片提示词和钩子公式请参阅 references/app-categories.md。
常见错误
| 错误 | 修正方法 |
|---|---|
| 1536x1024(横向) | 使用 1024x1536(纵向) |
| 字体大小为 5% | 使用宽度的 6.5% |
| 文字位于底部 | 放在距顶部 30% 的位置 |
| 每张幻灯片的房间都不同 | 在每条提示词中锁定建筑结构 |
| 标签不是反应式文案 | 使用“等等,这也太棒了吧??”而不是“现代风格” |
| 只跟踪浏览量 | 跟踪转化 — 只有浏览量却没有收入等于自我陶醉 |
| 永远使用相同的钩子 | 根据数据迭代,每周测试新形式 |
| 不进行多平台发布 | 使用 Upload-Post 同时发布到所有平台 |
spawnSync ETIMEDOUT | 执行超时时间太短 — 生成图片需要 3-9 分钟才能完成 6 张幻灯片。使用 10 分钟超时,或一次生成一张幻灯片 |