用 n8n 自动生成 Meta Ads 周报:GPT-4 洞察 + Slack 推送 PDF
输入 Meta Ads 账号与日期范围 → n8n 定时拉取广告数据 → 格式化并生成 AI 洞察 → 渲染为 PDF → 推送至 Slack
- 给谁
- 需要定期向团队或客户发送 Meta Ads 周报的营销人员、运营或代理商
- 你会得到
- 每周一早上自动收到一份含图表、AI 洞察与可执行建议的 PDF 报告
硬约束
前置条件:n8n 实例;Meta Ads 账号及 Facebook Graph API 访问权限;OpenAI API 密钥;pdforge(pdf noodle)账号与 API 密钥;Slack OAuth2 凭证与目标频道。费用:OpenAI 按 token 计费,pdforge 按模板渲染计费,Meta Graph API 按平台政策计费。时区默认 America/Sao_Paulo,可在 workflow settings 中修改。
他们做了什么
作者 Marcelo Abreu 在 n8n 模板市场发布了一个工作流模板,用于每周一早上自动拉取指定 Meta Ads 账号的广告数据,经聚合格式化后由 GPT-4.1 生成三层洞察(campaign / adset / ad),再通过 pdforge 渲染为 PDF,最终发送到 Slack。模板提供了完整的 workflow JSON、节点参数与系统提示词。
效果如何
作者自述该工作流可自动生成含图表与 AI 洞察的 PDF 报告并推送 Slack(author_report)。模板在 n8n.io 获得 4287 次查看。
值得知道
1) 本站未实际导入运行,reproduction=not_tested;2) pdforge 为第三方付费服务,需单独注册;3) Slack channelId 与 Meta Ads 账号 ID 为硬编码示例值,必须替换;4) 系统提示词要求输出英文洞察,若需其他语言需自行修改;5) 时区默认 America/Sao_Paulo,跨时区用户需调整 Schedule Trigger;6) Meta Graph API 有速率限制与权限审核,新账号可能需要额外配置;7) workflow JSON 中 OpenAI 模型为 gpt-4.1,但 description 提及 GPT-4 insights,两者均可支持
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- HTTP Request - Meta Ads 节点:绑定HTTP Header Auth 凭证。
- Pdforge 节点:绑定pdforgeApi 凭证。
- OpenAI Chat Model 节点:绑定OpenAI API 凭证。
- Slack - Send Message with File 节点:绑定Slack OAuth2 凭证。
需要替换的配置
- 源模板来自 n8n 公开库 #5386(约 14 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-24
步骤
配置触发条件与广告账号
在 n8n 中打开模板。先配置 Schedule Trigger 节点:默认每周一 8:00 执行,可按需调整。再配置 Configuration(Set)节点:将 ad_account_id 替换为你的 Meta Ads 账号 ID(如 act_123456789),date_range 选择 'last_7d'、'last_14d' 或 'last30d'。
通过 Meta Graph API 拉取广告数据
配置 HTTP Request 节点:使用 genericCredentialType = httpHeaderAuth,URL 为 https://graph.facebook.com/v23.0/act_{{$json.ad_account_id}}/insights。Query 参数包括 fields(campaign_id, campaign_name, adset_id, adset_name, ad_id, ad_name, reach, impressions, inline_link_clicks, inline_link_click_ctr, conversions, spend, cpc, cost_per_conversion, action_values, purchase_roas)、time_increment=1、date_preset 从上游读取、level=ad。启用分页:paginationMode=responseContainsNextURL,requestInterval=500,completeExpression='={{ !$response.body.paging.next }}'。随后 Split Out 节点将返回的 data 数组拆分为单条记录。
格式化与聚合数据
Format data(Code)节点执行 JavaScript 聚合:提取所有记录,计算全局起止日期,生成 overview(总花费、展示、点击、CTR、CPC)、day_by_day(每日展示与点击趋势)、按 campaign/adset/ad 聚合的指标、Top 10 最低 CPC 项目,以及按投资降序的对比数据。输出为单一 JSON 对象 report。
生成 AI 洞察
Generating Insights for Meta Ads(AI Agent)节点接收上一步的 report JSON,通过 OpenAI Chat Model(gpt-4.1)与 Structured Output Parser 生成三段洞察。将 report JSON 作为输入文本传入,systemMessage 定义角色、目标、格式与输出约束。输出必须为纯 JSON,含 campaign_insights、adset_insights、ad_insights 三个键,每条 200–300 字符,以英文撰写,结尾附 actionable tip。
运行提示词 · 来源原文。n8n AI Agent 节点 'Generating Insights for Meta Ads' 的 options.systemMessage 字段
=## Persona You are a data-driven Meta Ads Insights Agent: concise, analytical, and focused on turning raw campaign data into clear, actionable recommendations. ## Objective - Ingest structured Meta Ads data (campaigns → adsets → ads). - Generate three tiers of performance insights: campaign, adset, ad. - Keep each insight 200–300 characters, in English, ending with a practical tip. ## Rules ### Formatting - Output **only** a JSON object with keys: `campaign_insights`, `adset_insights`, `ad_insights`. - Do **not** include any additional text or explanation. - Ensure each insight string is between **200 and 300 characters** (inclusive). ### Content - All insights must be written in clear, idiomatic English. - Each insight must: 1. Summarize performance (e.g., spend vs. CTR/CPC comparisons). 2. Highlight one key strength or weakness. 3. Conclude with a single, concrete, actionable tip. ### Constraints - Base insights strictly on the supplied data. - Do not reference hypothetical or external factors. - Do not break JSON syntax or embed markdown in the output. ## Step by Step Instructions 1. **Parse Input**: Read the incoming JSON payload of `campaigns` → `adsets` → `ads`. 2. **Aggregate Metrics**: - For each campaign: compute total investment, average CTR (weighted by impressions), and average CPC. - For each adset: compute its CTR and CPC. - For each ad: read its individual metrics. 3. **Identify Highlights**: - Campaign: find overall high or low performance signal. - Adset: select the best or worst by CTR or CPC. - Ad: select the top or bottom ad by CTR or CPC. 4. **Compose Insights**: For each level, draft a 200–300 character string that: - Summarizes performance. - Notes one key strength or weakness. - Ends with “Tip: …” giving a clear improvement action. 5. **Validate Length**: Confirm each insight is within 200–300 characters. 6. **Return Output**: Emit exactly the JSON object described below. ## Output Format ```json { "campaign_insights": "string (200–300 chars)", "adset_insights": "string (200–300 chars)", "ad_insights": "string (200–300 chars)" } ```渲染 PDF 报告
Pdforge 节点使用模板 templateId='meta_ads',将上一步合并后的变量(含 report 数据与 AI 洞察)以 JSON.stringify($json) 传入。需先在 pdforge/pdfnoodle 注册账号并获取 API 密钥,在 n8n 中配置 pdforgeApi 凭证。
下载 PDF 并推送 Slack
Download Binary 节点从 Pdforge 返回的 signedUrl 下载 PDF 二进制。Slack 节点使用 resource='file'、authentication='oAuth2',上传文件到指定频道。将 channelId 替换为你的 Slack 频道 ID;fileName 使用表达式 '=Meta ADS Report - {{ $('Generate variables').first().json.report_date }}';initialComment 为消息标题。
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限
这一段是提示词,页面不会在这里插入广告。
你是一个 n8n 模板搭建助手。用户想复现「Meta Ads 周报自动发送」工作流。请按以下顺序协助:1) 确认用户已拥有 Meta Ads 账号 ID、OpenAI API 密钥、pdforge 账号、Slack OAuth2 凭证;2) 指导导入 workflow JSON 并替换 Configuration 中的 ad_account_id 与 date_range;3) 说明各凭证节点的配置位置与常见错误;4) 建议先用手动执行测试,再启用 Schedule Trigger。不要代替用户执行涉及密钥的操作。
粘贴你的 Meta Ads 账号 ID 和想使用的日期范围(last_7d / last_14d / last30d)
来源
Generate weekly Meta Ads report with GPT-4 insights and Slack delivery · mabreum · n8n.io · 2025-06-26
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。