2026-09-04 · 原文发布日
每天往Telegram频道自动发电影推荐
这个n8n模板适合运营影视频道的人:定时调用TMDB的发现接口,按评分、上映日期、票数、语言等条件捞候选影片并随机挑一部,交给OpenAI写一段简短英文推荐语,再把文案和TMDB海报图拼成消息发到指定Telegram频道。筛选条件、提示词、发布时间都能在配置里改。
原文要点
原模板按定时计划运行,调用TMDB Discover API,按评分、上映日期、票数、语言、排除类型等条件并随机翻页捞候选影片,拆成单条后随机选一部,交给OpenAI生成简短英文推荐文案,再把文案和TMDB海报URL拼成消息发到指定Telegram频道。筛选条件、提示词、发布时间均可改。需TMDB API Key、OpenAI凭据、Telegram Bot凭据,且机器人须是频道管理员。作者建议先在私密测试频道试运行。
这次做成什么
在n8n中搭一条每日自动更新的电影推荐频道机器人:定时从TMDB筛选高评分影片随机挑一部,由OpenAI写推荐语,带海报发到Telegram频道,无需人工干预。
准备什么
- TMDB账号及API Key(在themoviedb.org设置页申请)
- OpenAI API凭据,确认所选模型在账号中可用
- Telegram Bot凭据(通过@BotFather创建机器人获取Token)
- 一个Telegram频道,且已将机器人添加为管理员
- 一个可运行定时任务的n8n实例
具体怎么做
配置定时触发器
新建工作流,添加Schedule Trigger节点,设置每天固定时间运行,例如每天上午10:00。如想一天发多条,可加多个触发时间点。先用Execute once手动触发做联调,正式启用时再激活工作流。
调用TMDB Discover接口
添加HTTP Request节点,GET请求TMDB Discover接口,URL中带上api_key参数填你的Key,并设置筛选参数:vote_average.gte(最低评分)、vote_count.gte(最低票数)、primary_release_date.gte和lte(上映日期范围)、with_original_language(原始语言)、without_genres(排除的类型ID)。再加一个随机页码参数page,用表达式在1到10之间取随机整数,避免每天结果雷同。先手动执行确认返回results数组非空。
拆分并随机选片
接Split Out节点把results数组拆成单条影片,再用Code节点取随机一条:Math.floor(Math.random()*items.length)。保留选中影片的title、overview、vote_average、release_date、poster_path字段供下游使用。
让OpenAI写推荐语
添加OpenAI节点,选择已连接的凭据,把影片信息填入提示词(见下方材料),要求生成一段简短的Telegram推荐文案。默认生成英文,如需中文可在提示词末尾指定输出语言。注意Token用量与模型单价相关,具体费用以OpenAI账单为准。
拼消息并发到频道
添加Telegram节点,操作选Send Photo,Chat ID填你的频道用户名(把@your_channel_username替换为实际值),Photo填https://image.tmdb.org/t/p/w500加上poster_path,Caption填上一步生成的推荐语。机器人必须是该频道管理员,否则发送被拒。
在测试频道先跑通
按原作者建议,先把Chat ID指向一个私密测试频道,手动执行若干次,确认海报显示正常、文案长度不超Telegram的Caption上限(约1024字符),再把频道切换为正式频道并激活定时任务。
可直接复制的材料
OpenAI推荐语生成提示词
本站独立编写;要输出中文时在末尾加一行"Write the caption in Simplified Chinese"即可
You are a movie recommendation writer for a Telegram channel. Write a short, engaging recommendation caption for the movie below.
Requirements:
- 3 to 5 sentences, under 700 characters total
- Start with the movie title and release year in bold
- Mention the TMDB rating and one standout reason to watch (story hook, cast, or visual style)
- Keep the tone enthusiastic but not exaggerated
- Do not invent plot details not present in the overview
- End with a question inviting discussion
Movie title: {{$json.title}}
Release date: {{$json.release_date}}
TMDB rating: {{$json.vote_average}}
Overview: {{$json.overview}}TMDB Discover请求参数示例
本站独立示例值,均为参考设定;without_genres里的数字是TMDB类型ID,可按TMDB类型列表自行调整
{"api_key":"在此填入你的TMDB_API_KEY","vote_average.gte":"7.0","vote_count.gte":"500","primary_release_date.gte":"2015-01-01","primary_release_date.lte":"2025-12-31","with_original_language":"en","without_genres":"99,10751","sort_by":"popularity.desc","page":"{{1到10之间的随机整数}}"}随机选片Code节点脚本
本站独立编写,接在Split Out节点之后;若候选为空请先在上游加IF节点判断results长度
const items = $input.all();
const pick = items[Math.floor(Math.random() * items.length)];
return [pick];输入与输出示例
本站虚构影片与文案示意,非TMDB真实数据,未实际调用任何接口
输入
某次运行TMDB返回的候选中随机选中影片:title为"The Silent Orbit",release_date为2021-06-18,vote_average为7.8,poster_path为/abc123.jpg,overview讲述一名宇航员独自修复空间站的故事。对应输出
Telegram频道收到一条带图消息:图片URL为https://image.tmdb.org/t/p/w500/abc123.jpg,Caption为"**The Silent Orbit (2021)** — TMDB 7.8. A lone astronaut races to repair a failing station before oxygen runs out. A slow-burn survival story with stunning zero-gravity visuals. Would you last a week alone in orbit?"做完检查这些
- 手动执行时TMDB请求返回的results数组长度大于0
- 每次运行的page参数不同,连续多次选中的影片不完全相同
- OpenAI输出的文案不超过700字符且不含虚构剧情
- Telegram节点发出的消息海报图能正常显示、Caption完整
- 机器人在目标频道具有管理员权限,发送不报403错误
容易卡住的地方
- TMDB筛选条件过严(如评分8.5加票数千以上)会导致results为空,下游全部失败
- Telegram的Photo Caption上限约1024字符,超长会被截断或报错
- 机器人未被设为频道管理员是最常见的发送失败原因
- 海报URL必须拼完整前缀,直接传poster_path相对路径会发不出图
- 随机翻页范围写死时若实际总页数不足会拿到空页
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Send daily TMDB movie recommendations to a Telegram channel with OpenAI
- 原作者
- Vladyslav
- 原始发布日期
- 2026-09-04T10:55:23.587Z
- 来源
- https://n8n.io/workflows/19197