2026-09-26 · 原文发布日
丢个文章链接到Telegram,自动产出TikTok竖屏视频
指定Telegram用户发来含文章URL的消息即触发,用Jina AI reader把文章抓成Markdown;OpenAI提取正文并生成TikTok视频方案(标题、配文、脚本、分镜、动效、配图URL)再合成配音;Whisper出词级时间戳对齐字幕;本机Node.js/FFmpeg下载分镜图、加推拉缩放动效、烧入卡拉OK字幕输出MP4;上传Google Drive后在Telegram问你要发布、重渲还是取消;确认后经pm3k API选TikTok账号发布并轮询结果。需主机可跑node和ffmpeg。模板免费。
原文要点
这是Dmitrii Suchilin发布的免费n8n模板:指定Telegram用户发来含文章URL的消息即触发并回复确认;用Jina AI reader把文章抓成Markdown(带图片摘要);OpenAI提取正文并生成TikTok视频方案(标题、配文、脚本、分镜、动效、配图URL),再生成配音音频;Whisper(whisper-1)产出词级时间戳,对齐出分镜时长和字幕块;本机Node.js/FFmpeg下载分镜图、施加推拉缩放动效、烧入卡拉OK字幕输出MP4;上传Google Drive并公开分享后,在Telegram询问发布、重渲或取消;批准发布则经pm3k API列出TikTok账号供选择、创建发布批次并轮询到成功或失败。要求n8n主机能跑node和ffmpeg,可写/home/node/.n8n-files/work,另需Telegram Bot、OpenAI(含tts-1-hd与whisper-1)、Google Drive OAuth2和pm3k的Bearer凭据。
这次做成什么
跑通“Telegram丢链接→出竖屏视频→人工确认→发TikTok”的完整链路。本站未随原文获得模板JSON,且渲染细节依赖主机环境,故给出独立设计的环境自检脚本、视频方案提示词和测试输入;若你能导入原模板,具体命令路径以模板为准,不要照搬未经核实的参数。
准备什么
- 自托管n8n,主机已安装Node.js和ffmpeg且可写工作目录
- Telegram Bot凭据,并知道自己的Telegram用户ID
- OpenAI API凭据(聊天、tts-1-hd、whisper-1可用)
- Google Drive OAuth2凭据及目标文件夹ID
- pm3k.org账号及HTTP Bearer令牌,已绑定至少一个TikTok账号
具体怎么做
主机环境自检
在n8n主机执行下方自检脚本:确认node、ffmpeg在PATH里,工作目录可写。任一失败就先修环境,否则渲染节点必然报错。
配置触发与权限
Telegram Trigger限制只响应allowed_user_id(你的数字ID),收到消息后先回复“开始处理”。接一个Function从文本中正则提取第一个http(s)链接。
抓文与生成方案
HTTP Request节点调Jina reader(https://r.jina.ai/加URL)拿Markdown;OpenAI Chat先用下方提示词产出视频方案JSON(标题、配文、脚本、4-6个分镜各含动效与配图URL);再用TTS接口(tts-1-hd)把脚本转成配音文件。
字幕对齐
把配音发Whisper(whisper-1)请求词级时间戳,按脚本分句切成字幕块,并据此计算每个分镜的显示时长,输出渲染清单JSON。
渲染并上传
执行模板的node/ffmpeg渲染步骤:下载分镜图、施加pan/zoom、烧入卡拉OK字幕,输出竖屏MP4;Google Drive节点上传到指定文件夹并开启公开分享。
Telegram确认与发布
发Telegram三键询问:发布/重渲/取消。选发布则调pm3k列出TikTok账号让你选,创建发布批次后轮询其状态直至成功或失败,结果都回Telegram通知;重渲回到步骤三;取消则清理临时文件。
可直接复制的材料
TikTok视频方案生成提示词(system)
本站独立编写;分镜数和动效枚举需与渲染脚本支持的取值一致,导入模板后先核对。
你是短视频策划。输入是一篇文章的Markdown正文(可能含图片链接)。只输出一个JSON对象,字段:
title:15字以内的中文视频标题,有钩子但不夸大。
caption:发布配文,50字以内,可含2个话题标签。
script:60至90字的中文口播脚本,口语化,只保留文章最有价值的一个观点。
scenes:4至6个分镜的数组,每项含:text(该镜画面文字,≤12字)、motion(从"zoom_in"、"zoom_out"、"pan_left"、"pan_right"中选一个)、image_url(优先用文中出现的图片链接,文中没有合适图片时写null)。
script必须与scenes顺序对应,逐句覆盖各分镜。不输出JSON以外的任何文字。主机环境自检脚本
本站编写的自检脚本,在n8n主机终端运行;路径与模板默认一致,改过路径的同步改这里。
#!/bin/bash
set -e
echo "node: $(node -v 2>/dev/null || echo MISSING)"
echo "ffmpeg: $(ffmpeg -version 2>/dev/null | head -1 || echo MISSING)"
WORK=/home/node/.n8n-files/work
mkdir -p "$WORK" && touch "$WORK/.write_test" && rm "$WORK/.write_test" && echo "workdir writable: yes" || echo "workdir writable: NO"
ffmpeg -version >/dev/null 2>&1 && ffmpeg -filters 2>/dev/null | grep -q zoompan && echo "zoompan filter: yes" || echo "zoompan filter: 未确认"输入与输出示例
本站虚构演示,说明各环节产物形态;非原作者运行结果,未真实调用任何API,渲染与发布耗时取决于素材和主机性能,不作保证。
输入
向Bot发送:"这篇讲社区食堂养老模式的文章值得做视频 https://example.com/article/elderly-canteen",allowed_user_id=123456789与发送者一致。对应输出
Bot立即回:“收到,开始处理”。方案JSON示例片段:{"title":"一顿热饭背后的养老账","caption":"社区食堂怎么可持续?#养老 #社区","script":"社区食堂不只是便宜,关键是用中央厨房把成本压到每餐六元以内……","scenes":[{"text":"六元一餐","motion":"zoom_in","image_url":"https://example.com/img1.jpg"}]};渲染完成后Bot发三键询问,点“发布”后选账号,最终通知:“TikTok发布成功”。做完检查这些
- 自检脚本四项输出全部通过,特别是zoompan滤镜存在
- 给非授权Telegram账号发链接,流程不触发也不回复
- 文中无图的分镜image_url为null时渲染不中断(用占位或纯色底)
- 在Telegram选“取消”后,流程不调用pm3k且临时文件被清理
- 发布轮询失败时Bot能收到失败通知而不是无限等待
容易卡住的地方
- n8n Cloud无法跑本地node/ffmpeg渲染,必须自托管且容器内装好ffmpeg
- Jina reader对需登录或强反爬的页面可能抓不到正文,要先手动验证URL
- Whisper按音频时长计费、TTS按字符计费,长文章配音前留意额度
- pm3k是第三方服务,TikTok发布受其接口与账号状态限制,失败重试要限次数
- 模板默认写死/home/node/.n8n-files/work,Docker自定义挂载时必须同步改路径
- 卡拉OK字幕烧入对字体文件有要求,容器内中文字体缺失会出方块字
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Create TikTok videos from articles with OpenAI, Telegram, and Google Drive
- 原作者
- Dmitrii Suchilin
- 原始发布日期
- 2026-09-25T22:58:56.549Z
- 来源
- https://n8n.io/workflows/19950