Mindket

Video sales letter scripts from Airtable

Newversion 2 · updated

Overview

An n8n workflow that runs a video sales letter desk from Airtable. Perplexity researches the product, Gemini writes ad angles and full scripts, and a weekly job logs your Facebook video ad results and transcribes the winning ads.

Video sales letter scripts from Airtable is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 2, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud or your own server: import the file and publish it, so the production addresses of both webhooks work
  • Airtable: button fields or automations with a script step make the calls, and each result lands in the record it came from
  • Facebook ads: the weekly job reads the ad accounts that your access token can see
  • Your video team: the scripts sit in Airtable for the people who film and edit them

Platform

Connects 6 apps

How it works

Trigger

Webhook or weekly schedule

It starts in one of three ways:

  • A call to ai-vsl with an action and an Airtable record ID
  • A call to ad-scraping with the ID of an Ads Performance record
  • A weekly schedule that reads your Facebook ad accounts

Actions

  1. Perplexity researches the product and its buyers, and the profile goes into the Product record
  2. Gemini writes five to eight ad angles, and each becomes a row in the Scripting table
  3. Gemini writes the full script for the angle you pick, or rewrites it from your notes
  4. Each week, your active Facebook video ads are logged with their spend and results
  5. On a call, a logged ad’s video is fetched and OpenAI transcribes it into its row

Result

Researched products, ad angles and scripts in Airtable, beside your Facebook ad results and the transcripts of your best ads

Integrations

What you need before you start.

Airtable

Database

Holds the Product, Scripting and Ads Performance tables, which every flow reads from and writes back to.

NeedsPersonal access token, and a base with the three tables

Perplexity

Research

Writes a profile of the product and its buyers through its chat completions endpoint.

NeedsPerplexity API key

Google Gemini

Script writing

Writes the ad angles, the full scripts and the rewrites.

NeedsGemini API key

OpenAI

Parsing and transcripts

Holds the angles to a JSON shape with gpt-4o-mini and turns an ad’s video into text.

NeedsOpenAI API key

Facebook

Ad data

Reads ad accounts, campaigns, ad sets, ads and their results through the Graph API.

NeedsAccess token that can read ads

Scrapfly

Page fetching

Loads a Facebook video page in a browser so the video’s address can be found.

NeedsScrapfly API key

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
46 steps, starting when its webhook is called or on a schedule
AI
5 steps call an AI model: Generate Angles, Parsing, Basic LLM Chain1, Basic LLM Chain2 and OpenAI
Sign-ins
Signs in to: Airtable, Perplexity, Facebook Graph API, OpenAI, Google Gemini and Scrapfly
API keys
No API key is left in the file; 1 blank in it for your own key
Step types
Mindket’s checker reads all 13 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow turns an Airtable base into a small studio for video sales letters. Its 54 nodes make up three flows, and they are independent, so you can use one and ignore the others. The first answers calls to a webhook and does four jobs. Perplexity researches a product and its buyers. Gemini proposes five to eight ad angles, writes a full script for the angle you pick and rewrites that script from your notes. Each result goes back into the Airtable record it came from. The second flow runs weekly and logs your active Facebook video ads with their spend, clicks and conversions. The third takes one logged ad, fetches its video through Scrapfly and has OpenAI transcribe it, so your best ads can shape the next round of angles.

  1. A webhook call names an action and a record
  2. Perplexity researches the product and its buyers
  3. Gemini writes the angles as Airtable rows
  4. Gemini scripts the angle you pick, then revises it
  5. A weekly job logs ads, and winners get transcribed

Who it suits

Performance marketers, small agencies and in-house ad teams that write video ads for Facebook and want the research, the angle ideas and the first drafts in one Airtable base. It is a build for people who already work in Airtable.

Who uses it, and how
IndustryWho uses itHow they use itExample
Online retailBrand owners and media buyersLog each product in the Product table, then call the research action and the angles actionA buyer adds a new water bottle and finds a buyer profile and a set of angles in the base, with no brief written.
Marketing agenciesCreative strategistsKeep one base per client and link each client’s best ad transcripts to the product through the Winning Ad Script fieldA strategist transcribes a client’s top video ad, then asks for fresh angles that build on what it did.
Courses and coachingCourse creatorsResearch who buys a program, then script each angle as a short adA creator researches the buyers of a language course and scripts three angles to test against each other.
Software and appsIn-house growth teamsType notes into a script’s feedback field and call the revision actionA growth lead asks for a shorter, calmer version, and the script is rewritten in place.

Skip it if you do not use Airtable or run Facebook video ads. Both are built in, and the script prompt is written for Facebook ad video.

Where to use it

Any n8n that your Airtable can reach over the internet, because Airtable makes the calls.

  • n8n Cloud or your own server: import the file and publish it, so the production addresses of both webhooks work
  • Airtable: button fields or automations with a script step make the calls, and each result lands in the record it came from
  • Facebook ads: the weekly job reads the ad accounts that your access token can see
  • Your video team: the scripts sit in Airtable for the people who film and edit them

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. The file holds no credential, and the Airtable base is not in it, so build the base first.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server with an address Airtable can reach
AirtableA base with Product, Scripting and Ads Performance tables, and a personal access token that can read and write it
PerplexityAn API key, kept in n8n as an HTTP Header Auth credential
Google AI StudioA key for the Gemini API
OpenAIAn API key, for parsing the angles and for transcripts
FacebookA Marketing API access token that can read ads, for the weekly job
ScrapflyAn API key, only for the transcript flow
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Build the Airtable base from the tables in the setup notes, add an Airtable credential and select it in every Airtable node.
  3. In those nodes, put your base in YOUR_BASE_ID and each table in YOUR_PRODUCT_TABLE_ID, YOUR_SCRIPTING_TABLE_ID or YOUR_ADS_TABLE_ID.
  4. Add an HTTP Header Auth credential with the header Authorization and your Perplexity key, and select it in Product Overview & Customer Research.
  5. Add Google Gemini and OpenAI credentials and select them in the chat model and OpenAI nodes.
  6. Add a Facebook Graph API credential with your token and select it in the Facebook nodes.
  7. In HTTP Request1, put your Scrapfly key where it says YOUR_SCRAPFLY_KEY.
  8. Save, press Publish, copy the production addresses of Webhook and Webhook1, and point your Airtable buttons or automations at them.

How to use it

Call the ai-vsl address with two values in its query string: action, and recordId, the Airtable record to work on. The action decides which table the record belongs to.

The four actions
ActionRecord fromWhat happensWritten back
generateProjectDetailsProductPerplexity writes a profile of the product and its buyers from Product Name and Product NotesProduct Details, and Status
generateAnglesProductGemini proposes five to eight angles from the profile, the notes, the winning scripts and the angles you already haveOne Scripting row per angle
generateScriptScriptingGemini writes the full script for that angleScript, and Status
feedbackIterationScriptingGemini rewrites the script from your notesScript, and Status

The second address, ad-scraping, takes the recordId of an Ads Performance row and transcribes that ad’s video into its Video Script field. The weekly job needs no call: it starts from its own schedule.

Example

A shop adds a water bottle to the Product table with a few notes. The first action returns a profile of the product and who buys it. The second adds Scripting rows, one per angle, with these fields filled:

{
  "AngleHeadline": "…",
  "ConceptSummary": "…",
  "VSLStructure": "…",
  "VideoSuggestion": "…",
  "EmotionalTriggers": "…",
  "CognitiveBiasesLeveraged": "…",
  "DirectResponseTechniques": "…"
}

A call is a plain GET, with your own address and record ID:

GET https://YOUR-N8N-ADDRESS/webhook/ai-vsl?action=generateAngles&recordId=YOUR_RECORD_ID

Calling generateScript on one of those rows fills Script with Markdown that opens straight on the hook, with no introduction, and runs through Hook, Lead, Body and CTA. Put notes in the feedback field and call feedbackIteration to get a rewrite.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This file is large, but three notes name its groups: Weekly Ad Schedule, Best Ad Video Transcript and Scripting/Idea Generation/Feedback System. Set up the last group first and get research, angles and scripts working before you touch Facebook.

For experts. Five models and services share the work, and each step names its own.

The model behind each step
StepModelWhat to know
ResearchPerplexity sonar-reasoning, through an HTTP Request nodeThe request text lives in Edit Fields2, and a header-auth credential carries the key
AnglesGemini, models/gemini-2.5-pro-exp-03-25An experimental model id. If the node reports that it is gone, pick a current Gemini Pro model
Parsing the anglesOpenAI gpt-4o-mini with a Structured Output ParserThe schema requires seven fields per angle and allows no others
Scripts and revisionsThe same Gemini modelThe script prompt fixes the four-part layout. The revision prompt is short, so your notes carry the change
TranscriptsOpenAI audio transcriptionThe file sets no model, so the node uses its default

Good to know

Every part bills its own provider, and two parts are fragile.

  • Open webhooks: anyone who learns an address can start runs on your keys, so add authentication to both webhook nodes or keep the addresses private
  • Overwrites: a revision replaces Script, so copy the old text first if you want to keep it
  • Field names: the script prompts read Time and Feedback, while the file’s own Scripting schema names those fields 3️⃣ Select Script Length and 4️⃣ Feedback. Make the names and the expressions agree
  • Weekly rows: Airtable9 creates a row for every active video ad each week and never updates an old one, so the table fills with repeats
  • Conversions: Edit Fields6 reads them from actions[4] and action_values[8], positions that suit one account’s data. Check them against yours
  • Wait: the Wait node holds 30 with no unit, and n8n’s default unit is seconds, so it pauses 30 seconds. Set minutes there if you meant them
  • Transcripts: the video address is found by searching a Facebook page that Scrapfly fetched, so a change to that page breaks this branch. Check Facebook’s and Scrapfly’s terms for your use
  • Your data: product notes and scripts reach Perplexity, Google and OpenAI, and ad videos reach Scrapfly and OpenAI

README and files

README

Video sales letter scripts from Airtable

An n8n workflow. Call its webhook with a record from your Airtable base, and it researches a product, proposes ad angles,
writes a video sales letter script for the angle you pick and rewrites it from your notes. A weekly job also logs your
active Facebook video ads, and a second webhook transcribes the video of a logged ad.

What is inside

  • workflow.json: the workflow as n8n exports it, 54 nodes in three groups. It holds no credential, none of its author's
    Airtable ids and no stored run data. Its groups carry the labels Weekly Ad Schedule, Best Ad Video Transcript and
    Scripting/Idea Generation/Feedback System.
  • README.md: these notes.
  • Not included: the Airtable base. Build it from the table list below.

One repair: the original copy of the file had lost three backslashes. Mindket put them back in Code1 (the pattern that finds
the video address, and its & clean-up) and in the line join of Generate Angles.

Before you start

  • An n8n instance with an address Airtable can reach: n8n Cloud, or your own server on the internet.
  • An Airtable base with the three tables below, and a personal access token that can read and write it.
  • A Perplexity API key.
  • A Gemini API key from Google AI Studio.
  • An OpenAI API key.
  • For the weekly job: a Facebook Marketing API access token that can read ads.
  • For transcripts: a Scrapfly API key.

The Airtable base

The nodes read and write these fields. Names are as the file writes them, emoji included.

| Table | Fields the workflow uses |
|---|---|
| Product | Product Name, Product Notes, Product Details, Status, 2️⃣ Generate Angles, Winning Ad Script, Angle Headline, and a link to Scripting |
| Scripting | AngleHeadline, ConceptSummary, VSLStructure, VideoSuggestion, EmotionalTriggers, CognitiveBiasesLeveraged, Direct Response Techniques, Script, Status, 5️⃣ Generate Script, About Product, a link to Product, and the length and feedback fields |
| Ads Performance | Ad Name, Ad ID, Video ID, Campaign Name, AdSet Name, Active Status, Spend, Impressions, Clicks, CPC, CPM, Conversions, Conversion Value, Best Ads?, Video Script |

Status on Product takes Idle, Generating Product Details, Generating Angles, Product Details Generated and Angles Generated.
On Scripting it takes Idle, Generating Script, Revision in progress, Script Generated and Script Revised.

In the file's schema, Winning Ad Script and Angle Headline on Product and About Product on Scripting are read-only, so
build them as lookups into the linked tables.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an Airtable credential with your personal access token. In every Airtable node, put your base in YOUR_BASE_ID, and the
    table in YOUR_PRODUCT_TABLE_ID, YOUR_SCRIPTING_TABLE_ID or YOUR_ADS_TABLE_ID, then select the credential.
  3. Add an HTTP Header Auth credential: header name Authorization, value Bearer and your Perplexity key. Select it in
    Product Overview & Customer Research.
  4. Add a Google Gemini (PaLM) API credential and select it in the three Gemini chat models. Add an OpenAI credential and
    select it in OpenAI Chat Model1 and OpenAI.
  5. Add a Facebook Graph API credential with your token and select it in Get FB Ad Accounts, Get Ad Campaigns,
    Get FB Ad Sets, Get FB Ad Contents and Facebook Graph API10.
  6. Open HTTP Request1 and replace YOUR_SCRAPFLY_KEY with your Scrapfly key.
  7. Save, then press Publish at the top of the canvas (or Shift+P). Open Webhook and Webhook1, copy their production
    addresses and use them in Airtable.

Call it

Both webhooks use GET. A button field with an Open URL formula, or an automation with a script step, can make the call.

| Address | Query | What happens |
|---|---|---|
| ai-vsl | action=generateProjectDetails&recordId=<Product record> | Perplexity profiles the product and its buyers. Product Details is filled |
| ai-vsl | action=generateAngles&recordId=<Product record> | Gemini adds five to eight rows to Scripting |
| ai-vsl | action=generateScript&recordId=<Scripting record> | Gemini fills Script |
| ai-vsl | action=feedbackIteration&recordId=<Scripting record> | Gemini rewrites Script from the feedback field |
| ad-scraping | recordId=<Ads Performance record> | The ad's video is fetched and transcribed into Video Script |

The weekly job starts from Schedule Trigger2, so it needs no call.

How the weekly job and the transcripts work

The job lists your ad accounts, then their campaigns and ad sets, and keeps only those whose status is ACTIVE. For each ad set
it reads the ads with their results to date, keeps the active ones that have results and a video, and creates one Ads
Performance row per ad. The transcript flow reads that row and asks the Graph API for the video's page. Scrapfly loads that page in a
browser, the flow looks through the page's JSON for the video address, and OpenAI transcribes the downloaded file.

Change it

  • Angles: the instructions sit in Generate Angles, and the count of five to eight is in its prompt.
  • Scripts and rewrites: the instructions sit in Basic LLM Chain1 and Basic LLM Chain2.
  • Research: the request text sent to Perplexity is in Edit Fields2.
  • Weekly job: the interval is in Schedule Trigger2, and the ad fields it reads are in the fields query of
    Get FB Ad Contents.

Good to know

  • Both webhooks are open. Anyone who learns an address can start runs that spend your keys, so add authentication to the
    webhook nodes or keep the addresses private.
  • A rewrite replaces Script. Copy the old text first if you want to keep it.
  • The script prompts read the fields Time and Feedback, but the file's own Scripting schema calls them
    3️⃣ Select Script Length and 4️⃣ Feedback. Make the field names and the expressions agree.
  • Update Product Details clears 2️⃣ Generate Angles and leaves 1️⃣ Generate Product Details as it was.
  • Airtable9 creates a new row for each active video ad every week and never updates an older one.
  • Edit Fields6 takes conversions from actions[4] and conversion value from action_values[8]. Those positions fit one
    account's data, so check them against yours.
  • Wait holds 30 with no unit, and n8n's default unit is seconds, so it pauses 30 seconds. Set minutes there if you
    meant them.
  • The three Gemini nodes name an experimental model, models/gemini-2.5-pro-exp-03-25. If it is gone, pick a current one.
  • The transcript flow depends on how Facebook builds its video page, so it can stop working when that changes. Check
    Facebook's and Scrapfly's terms for your use.
  • Product notes and scripts go to Perplexity, Google and OpenAI. Ad videos go to Scrapfly and OpenAI. Ad results go to Airtable.
Files
README.md  7 KB
workflow.json  111 KB

2 files, 118 KB, downloaded as a zip.

What’s new

  • Version 2 · 2026-11-09

    Updated by Mindket to the current version of this kit.

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

anaksor-ocr

Sokheng · Kit

Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

New

Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…

New

ACE-Step 1.5 XL SFT

ACE-Step · Kit

Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…

New

Similar in Marketing & SEO

See all in Marketing & SEO

Huashu Design

alchaincyf · Skill

Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…

New29.4k

Pixel Art XL

nerijs · Kit

A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…

New

Licon MSR for LTX-2.5

LiconStudio · Kit

Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…

New