AI PLAY玩法更新持续收录
← 回到更新流

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实例

具体怎么做

  1. 配置定时触发器

    新建工作流,添加Schedule Trigger节点,设置每天固定时间运行,例如每天上午10:00。如想一天发多条,可加多个触发时间点。先用Execute once手动触发做联调,正式启用时再激活工作流。

  2. 调用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数组非空。

  3. 拆分并随机选片

    接Split Out节点把results数组拆成单条影片,再用Code节点取随机一条:Math.floor(Math.random()*items.length)。保留选中影片的title、overview、vote_average、release_date、poster_path字段供下游使用。

  4. 让OpenAI写推荐语

    添加OpenAI节点,选择已连接的凭据,把影片信息填入提示词(见下方材料),要求生成一段简短的Telegram推荐文案。默认生成英文,如需中文可在提示词末尾指定输出语言。注意Token用量与模型单价相关,具体费用以OpenAI账单为准。

  5. 拼消息并发到频道

    添加Telegram节点,操作选Send Photo,Chat ID填你的频道用户名(把@your_channel_username替换为实际值),Photo填https://image.tmdb.org/t/p/w500加上poster_path,Caption填上一步生成的推荐语。机器人必须是该频道管理员,否则发送被拒。

  6. 在测试频道先跑通

    按原作者建议,先把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