mcpField
T
tiktok-app-marketing

tiktok-app-marketing

github.com/upload-post营销与增长43230 次安装36 周前更新
代码仓库

关于 tiktok-app-marketing

面向 AI Agent 的应用 TikTok 营销技能,围绕幻灯片内容制作、发布和效果追踪,支持持续调整内容策略。

主要功能

  1. 01竞品研究与内容规划
  2. 02配置幻灯片或视频格式
  3. 03生成图像或使用自备图像
  4. 04为幻灯片添加文字叠层
  5. 05通过 Upload-Post 发布并查看分析
  6. 06借助 RevenueCat 追踪转化

适用场景

  1. 01参考竞品内容规划帖子
  2. 02制作图片式 TikTok 幻灯片
  3. 03发布帖子并查看互动数据
  4. 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.json
README.md
.gitignore
LICENSE
index.html
references/
slide-structure.md
revenuecat-integration.md
analytics-loop.md
competitor-research.md
app-categories.md
scripts/
competitor-research.js
check-analytics.js
onboarding.js
daily-report.js
add-text-overlay.js
generate-slides.js
post-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 吗?”

**等待用户授权。**然后:

  1. 搜索 TikTok,查找该应用所属的细分领域(例如“室内设计应用”“丰唇滤镜”“健身蜕变应用”)
  2. 找到 3-5 个竞品账号,这些账号发布的内容与之类似
  3. 分析他们表现最好的内容:
    • 他们用了哪些钩子?
    • 采用了什么幻灯片形式?(前后对比、列表、POV、教程)
    • 他们表现最佳和平均水平的帖子分别有多少浏览量?
    • 他们发布内容的频率如何?
    • 他们用了哪些 CTA?
    • 该细分领域有哪些热门音乐/声音?
  4. 查看 App Store 中该应用所属的类别——浏览竞品应用、截图、描述和评分
  5. 将调研结果整理到 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"
  }
}
  1. 用对话的方式向用户分享调研结果:

“我看了一下目前的情况。[竞品 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,并跟踪每条帖子的表现。一次上传,多个平台,自动跟踪。”

逐步引导他们完成连接:

  1. 在 upload-post.com 注册 — 创建一个账号
  2. 连接 TikTok — 这是最重要的平台。前往个人主页 → Connect TikTok → Authorize
  3. 连接 Instagram — 流程相同。这可以免费将覆盖范围扩大一倍。
  4. 创建一个 Profile — 这是 API 调用中使用的 Profile 名称(例如,“mybrand”)。记下这个名称。
  5. 获取 API 密钥 — Dashboard → API Keys → Generate。这是 Agent 以编程方式与 Upload-Post 通信的凭证。
  6. (可选) 连接 YouTube、LinkedIn、Threads 等平台,以进一步扩大覆盖范围 — 相同的内容,不同的算法。

在 Upload-Post 完成连接且 API 密钥可用之前,不要继续。 调用分析端点进行测试。如果返回了数据,就说明一切正常。

阶段 5:转化追踪(智能闭环)

如果他们有一款使用 RevenueCat 的移动应用(你应该已经在阶段 1 了解过这一点),那么技能就会从“内容自动化”升级为“智能营销系统”。这是整个技能中最重要的集成,不要把它当作可选项。

解释它的重要性:

“目前通过 Upload-Post,我可以追踪哪些帖子获得了展示量和触达量,以及它们是否成功发布到了各个平台。这是漏斗的顶端。但仅有展示量并不能带来收入——我们需要知道哪些帖子真正带来了付费订阅者。”

“这就是 RevenueCat 的用武之地。它会追踪订阅者、试用、MRR、流失情况——也就是实际收入。将 Upload-Post 的平台分析数据与 RevenueCat 的转化数据结合起来后,我就能做出真正明智的决策:”

“如果一条帖子获得了 50K 次展示但没有带来任何转化,我就知道钩子很吸引人,但 CTA 或应用文案需要改进。如果一条帖子获得了 2K 次展示,却带来了 5 位付费订阅者,我就知道内容的转化效果非常好——我们只需要让更多人看到它,所以要改进钩子。”

“没有 RevenueCat,我优化的是虚荣指标。有了它,我优化的就是收入。”

逐步引导他们完成设置:

  1. 从 ClaWHub 安装 RevenueCat 技能:

    clawhub install revenuecat
    

    这会安装 revenuecat 技能(v1.0.2+),为你的 RevenueCat 项目提供完整的 API 访问权限,包括指标概览、客户、订阅、产品方案、权益、交易等。它还包含每个 API 端点的参考文档,以及用于直接调用 API 的辅助脚本(scripts/rc-api.sh)。

  2. 从 RevenueCat 控制面板获取 V2 secret API key:

    • 前往你的 RC 项目 → Settings → API Keys
    • 生成一个 V2 secret key(以 sk_ 开头)
    • ⚠️ 这是一个密钥——不要将它提交到公开仓库
  3. 设置环境变量:

    export RC_API_KEY=sk_your_key_here
    
  4. **验证是否有效:**运行 ./skills/revenuecat/scripts/rc-api.sh /projects——应该会返回你的项目详情。

  5. 可选: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 阶段:内容策略(基于调研)

结合竞品调研和应用简介,制定初步内容策略:

“根据我的发现和你的应用功能,这是我为第一周制定的计划……”

展示:

  1. 3-5 个吸引点创意,针对其细分领域和竞品的不足量身打造
  2. 发布计划建议(默认:上午 7:30、下午 4:30、晚上 9 点——按用户所在时区)
  3. 优先测试的吸引点类别(参考竞品中效果好的类别)
  4. 跨平台发布计划(选择哪些平台,以及发布相同内容还是调整后的内容)

将策略保存到 tiktok-marketing/strategy.json。

第 7 阶段:设置每日分析 Cron

这是让整个系统持续自我优化的关键。设置一个每日 Cron 任务,以便:

  1. 从 Upload-Post 获取平台分析数据(粉丝、展示量、触达趋势)
  2. 获取上传记录,检查各平台帖子的成功或失败情况
  3. 获取 RevenueCat 的转化数据(如已连接)
  4. 将展示量与转化数据交叉对照,诊断哪些内容有效
  5. 生成报告并提供具体建议
  6. 根据表现趋势提出新的吸引点创意

向用户说明:

“我会设置一个每天早晨运行的检查任务。它会查看你过去 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 张幻灯片,我们一起看看。如果图片效果不理想,就调整提示词再试。我们的目标是在开始发布之前,把风格确定下来。”

⚠️ 调整过程是这项技能的一部分:

要让图片效果理想,需要反复迭代。这很正常,也在预期之内。请引导用户完成以下过程:

  1. 使用你们共同设计的提示词生成一组 6 张测试图片
  2. 展示结果并询问:“你觉得效果怎么样?是不是太精致了?太暗了?氛围不对?家具不合适?”
  3. 根据反馈调整——修改基础提示词,然后重新生成
  4. 重复以上步骤,直到用户满意——可能需要 2-5 轮,没关系
  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 canvas

Ubuntu/Debian:

sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
npm install canvas

Windows:

# node-canvas auto-downloads prebuilt binaries on Windows
npm install canvas

“安装完成后,其他事情我都能处理——生成叠加层、调整文字大小、精准放置文字。之后你就不用再管这件事了。”

不要跳过此步骤。 没有 node-canvas,文字叠加层就无法正常工作。如果安装失败,请帮用户排查问题——通常是缺少系统库。安装一次后,它就会一直保留。

Larry 的文字叠加流程
  1. 将原始幻灯片图片加载到 node-canvas 中
  2. 根据该幻灯片的文字长度配置文字设置
  3. 使用白色填充和粗黑色描边绘制文字
  4. 检查输出效果——确认大小、位置和可读性
  5. 如果效果不理想,就调整并重新渲染
  6. 效果满意后保存最终图片

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",
  ...
]

编写叠加文字的规则:

  1. 每行最多 4-6 个单词——短句便于快速浏览
  2. 使用 \n 换行——这样可以控制文字节奏
  3. 每张幻灯片以 3-4 行为宜——更多行也可以,不会溢出
  4. 大声读出来——每行听起来都应该像自然的停顿
  5. 不要使用 emoji——canvas 无法渲染它们,会显示为空白
  6. 写反应,不写标签——“等等……这挺不错??”而不是“现代简约”

作为保险措施,脚本会自动换行超过宽度 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(以及任何其他已配置的平台)。

工作原理:

  1. 从目录中读取幻灯片图片(slide1.png 至 slideN.png)
  2. 将图片发送到 Upload-Post 的 POST /upload_photos 端点
  3. 在同一个请求中包含所有已配置的平台
  4. 使用 async_upload=true 在后台处理
  5. 返回用于追踪的 request_id(保存在 meta.json 中)

无需手动关联视频 ID。 Upload-Post 会通过 request_id 自动追踪帖子。上传历史端点会返回各个平台的帖子 URL 以及成功或失败状态。

文案规则: 使用较长的叙事型文案(浏览量可提高 3 倍)。结构:吸引注意 → 问题 → 发现 → 功能 → 结果 → 最多 5 个标签。语气自然亲切。

为什么我们将 TikTok 幻灯片设为草稿发布——最佳实践

对于 TikTok,帖子会以照片轮播的形式发布。TikTok 照片帖子能从热门音乐中获益良多:

  1. 音乐对 TikTok 至关重要。 热门音乐能大幅提升触达率。算法会优先推荐使用热门音频的帖子。
  2. 发布后,从 TikTok 的音乐库添加音乐——浏览你所在领域的热门音乐。
  3. 没有音乐的帖子容易被淹没。 无声幻灯片看起来像广告,很容易被跳过。热门音乐能让你的内容显得更自然。

正是这套工作流帮助我们获得了 100 万以上的 TikTok 浏览量和每月 670 美元的 MRR。不要跳过添加音乐这一步。

Instagram 轮播不需要音乐——直接发布效果就很好。Upload-Post 会为这两个平台设置适当的选项。

4. 追踪分析数据

使用 scripts/check-analytics.js 获取平台分析数据和上传历史:

node scripts/check-analytics.js --config tiktok-marketing/config.json --days 3

该脚本会:

  1. 获取平台级分析数据(关注者、展示次数、触达人数、个人主页浏览量)
  2. 获取最近 N 天的上传历史
  3. 按 request_id 对上传内容分组(一篇帖子 = 多个平台条目)
  4. 显示每篇帖子的成功或失败状态以及帖子 URL
  5. 将快照保存到 analytics-snapshot.json

无需连接步骤。 与需要手动关联帖子 ID 的系统不同,Upload-Post 会通过 request_id 自动追踪所有内容。上传后,历史记录会立即显示帖子发布到了哪些平台以及对应的帖子 URL。

每日 cron 会自动处理所有这些工作。 它会在早上运行,检查最近 3 天的数据,并生成一份全面报告。


反馈循环(至关重要——这是成功的关键)

这就是“发布 TikTok 帖子”和“运营营销机器”之间的区别。每日 cron 会从两个来源获取数据:

  1. Upload-Post → 平台分析数据(关注者、展示次数、触达人数)+ 上传历史(每篇帖子的成功状态、帖子 URL)
  2. RevenueCat(如果已连接)→ 转化数据(试用开始次数、付费订阅、收入)

结合这些数据,Agent 可以智能地决定下一步该做什么——不靠猜测,不凭感觉,而是基于实际数据进行优化。

每日 Cron(在引导设置期间配置)

每天早上,在发布第一篇帖子之前,cron 会运行 scripts/daily-report.js:

  1. 从 Upload-Post 获取平台分析数据(关注者、展示次数、触达人数时间序列)
  2. 获取最近 3 天的上传历史(每篇帖子的状态、帖子 URL)
  3. 如果已连接 RevenueCat,则获取同一时间段内的转化事件(24–72 小时归因)
  4. 交叉比对:哪些帖子带来了浏览量,哪些帖子带来了付费用户
  5. 应用诊断框架(如下),判断哪些做法有效
  6. 生成 tiktok-marketing/reports/YYYY-MM-DD.md,记录调查结果
  7. 向用户发送摘要以及今天可用的建议开场文案
诊断框架

这是核心智能。两个维度:浏览量(有人看到吗?)和 转化量(有人付费吗?)。

高浏览量 + 高转化量 → 🟢 扩大规模

  • 效果不错。立即根据表现最佳的钩子制作 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 分钟超时,或一次生成一张幻灯片

评论

支持 Markdown