---
title: "Instagram caption writer for an Airtable editorial plan"
kind: "Kit"
category: "Marketing & SEO"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/103178a3-74ba-4ab1-9929-91a362f7d590"
updated: "2026-11-12"
---

# Instagram caption writer for an Airtable editorial plan

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that watches an Airtable editorial plan for new rows. A minute later an OpenAI agent reads the briefing and your background notes, writes an Instagram caption and saves it in the same row.

Instagram caption writer for an Airtable editorial plan is an n8n workflow in the Marketing \& SEO category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow writes an Instagram caption for each new row in an Airtable editorial plan. It checks the table every minute, then waits one more so whoever made the row can finish its briefing. An OpenAI agent running `gpt-4o` reads the briefing and looks up one record of background notes in a second table, such as the target group and the tone. The caption goes back into the same row. Nine nodes do the work, beside one sticky note.

### Who it suits

Social media managers and small marketing teams who plan their posts in Airtable and want a first draft waiting in the row before an editor looks at it. Skip it if captions must go out with no human check. The workflow only fills a text field and posts nothing.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Travel and tourism | Social media managers | Add a row for each planned post, with a short briefing about the trip or the offer | A travel team adds a row about a spring city break and finds a caption in it a few minutes later. |
| Retail and ecommerce | Brand marketers | Keep the brand’s tone and audience in the background table so every caption sounds alike | A homeware shop writes its tone down once and gets matching captions for the week’s product posts. |
| Agencies | Content planners | Run one base for each client, with that client’s audience notes | An agency plans a month of posts for a client and edits the first drafts in one sitting. |
| Local services | Owners who plan their own posts | Type two lines of briefing and edit the draft | A bakery owner briefs a post about a new sourdough and tidies the caption before posting. |

You need some n8n and some Airtable: an access token, a base with two tables and a few field names that must match.

### Where to use it

Any n8n that can reach Airtable and OpenAI will run it, as long as the workflow is switched on, because the trigger only polls then.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file and steps
- Airtable: the caption lands in the \`SoMe\_Text\_KI\` field of the row
- Your posting tool: add a node after \`Post Caption into Airtable Record\` to send the caption on

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Build the two tables before you import it.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key that can use \`gpt-4o\` |
| Airtable | A personal access token that can read and write your base |
| The editorial table | The fields \`created\_at\` (created time), \`Briefing\`, \`SoMe\_Text\_KI\`, \`Posten\` and \`Werbeanzeige\` |
| The background table | One record that describes your readers and your wording |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add an Airtable credential with your token. Select it in `Airtable Trigger: New Record`, `Get Airtable Record Data`, `Background Info` and `Post Caption into Airtable Record`.
3. Add an OpenAI credential and select it in `OpenAI Chat Model`.
4. In those four nodes, replace `YOUR_BASE_ID` with your base’s ID, the part of its address that starts with `app`.
5. Replace `YOUR_TABLE_ID` with the editorial table’s ID, which starts with `tbl`, in the trigger, `Get Airtable Record Data` and `Post Caption into Airtable Record`.
6. In `Background Info`, replace `YOUR_BACKGROUND_TABLE_ID` with the other table’s ID and `YOUR_RECORD_ID` with the ID of the record that holds your notes. A record’s ID starts with `rec`.
7. Save and press Publish. Add a row with a short briefing and wait a couple of minutes.

### How to use it

Add a row to the editorial table and fill in `Briefing` within about a minute. The workflow reads the row after waiting, so a briefing typed later is missed. The caption appears in `SoMe_Text_KI`. Read it and edit it before the post goes anywhere.

What to change for a different result

| To change | Where |
| --- | --- |
| The caption’s rules | The system message of \`AI Agent\`, which names Instagram |
| What the agent knows about your readers | The record that \`Background Info\` reads |
| The model | \`gpt-4o\` in \`OpenAI Chat Model\` |
| The wait | The amount in \`Wait 1 Minute\` |
| The field names | \`Briefing\` in \`AI Agent\`, and the three fields in \`Post Caption into Airtable Record\` |

### Example

A travel team adds a row with the briefing “Spring weekend in Lisbon, three nights, family hotel, offer ends 30 April”. The background record says the readers are parents aged 30 to 45 and the tone is friendly and light.

The agent reads both and answers with a single caption: an opening line, a few sentences on the trip and a call to action such as an invitation to comment. It arrives as plain text with nothing around it. Check the dates and the offer yourself, because the model only knows what the briefing says.

### 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 one runs in a straight line from the trigger to the save. The agent sits to one side with its model, its memory and its one tool. Start with a single test row.

**For experts.** The memory key is the record’s ID and the window is five exchanges, kept in the n8n process only.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`Airtable Trigger: New Record\` | Polls every minute on the \`created\_at\` field | The field must be a created-time field |
| \`Wait 1 Minute\` | Pauses before the row is read | The file sets minutes and 1, so no default applies |
| \`Background Info\` | An Airtable tool that reads one record by its ID | The ID is fixed in the node, so the agent always gets the same record |
| \`Post Caption into Airtable Record\` | Updates the row by its ID | It also writes unticked into \`Posten\` and \`Werbeanzeige\` |

### Good to know

The caption goes into the row and nowhere else. Two field names in the original copy need a look.

- Models: OpenAI’s deprecations page, read on 12 November 2026, lists the dated \`gpt-4o\` versions for shutdown on 14 January 2027, with \`gpt-6-luna\` as the replacement. It does not list the bare name \`gpt-4o\`, which Mindket’s copy keeps
- Field names: the agent’s prompt reads \`Briefing\` in two places and \`Briefing/Notizen\` in a third. Unless your field has that second name, the third comes out empty
- Tables: in the original copy the read node pointed at a different table than the trigger and the save. Mindket’s copy gives all three the same placeholder, so they must be one table
- Overwrites: every run writes unticked into \`Posten\` and \`Werbeanzeige\`, which clears a box you ticked on that row. Your table needs both fields, or remove them from the node
- Timing: the trigger polls once a minute and the workflow then waits another one
- Billing: OpenAI bills a model call for every step the agent takes, at least one a run
- Open table: anyone who can add a row starts a run on your OpenAI key
- Your data: the briefing and the background record go to OpenAI
- Memory: n8n drops it after an hour without use, and a restart clears it
- Credentials: the JSON holds none

## README

```markdown
# Instagram caption writer for an Airtable editorial plan

An n8n workflow that watches an Airtable editorial plan for new rows. A minute after a row appears, an OpenAI agent
reads its briefing, looks up your target group and wording notes in a second table, writes an Instagram caption and
saves it in the same row.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 9 nodes and one sticky note. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

- Every Airtable base, table and record address is now a placeholder: `YOUR_BASE_ID`, `YOUR_TABLE_ID`,
  `YOUR_BACKGROUND_TABLE_ID` and `YOUR_RECORD_ID`. The original copy's `Get Airtable Record Data` pointed at a different
  table than the trigger and the save did. All three nodes now share `YOUR_TABLE_ID`, so they must be one table.
- The field list inside `Post Caption into Airtable Record` shrank to the four fields the node writes. The original copy
  held the full field list of its author's own table.
- The sticky note is rewritten and holds no personal links.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An Airtable personal access token that can read and write your base.
- An OpenAI API key that can use `gpt-4o`.
- An Airtable base with two tables, described below.

## The Airtable base

The editorial table is where you plan posts. It needs these fields:

| Field | Type | Used for |
|---|---|---|
| `created_at` | Created time | The trigger watches it for new rows |
| `Briefing` | Long text | What the post is about, read by the agent |
| `SoMe_Text_KI` | Long text | Where the caption is saved |
| `Posten` | Checkbox | Set to unticked by every run |
| `Werbeanzeige` | Checkbox | Set to unticked by every run |

The background table holds one record that describes your audience and wording: who the readers are, what tone to use,
which words you like or avoid. Its fields are free. The agent reads whatever the record holds.

## 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 access token. Select it in `Airtable Trigger: New Record`,
   `Get Airtable Record Data`, `Background Info` and `Post Caption into Airtable Record`.
3. Add an OpenAI credential and select it in `OpenAI Chat Model`.
4. In those four nodes, replace `YOUR_BASE_ID` with your base's ID. It is the part of the base's web address that starts
   with `app`.
5. Replace `YOUR_TABLE_ID` with the editorial table's ID, the part that starts with `tbl`, in the trigger,
   `Get Airtable Record Data` and `Post Caption into Airtable Record`.
6. In `Background Info`, replace `YOUR_BACKGROUND_TABLE_ID` with the background table's ID, and `YOUR_RECORD_ID` with the
   ID of the record that holds your notes. A record's ID starts with `rec`.
7. Save, then press Publish. The trigger only polls while the workflow is switched on.
8. Add a row with a short briefing and wait a couple of minutes.

## How a run goes

1. `Airtable Trigger: New Record` checks the editorial table every minute and fires on a row whose `created_at` is new.
2. `Wait 1 Minute` pauses for one minute, so whoever made the row can finish writing the briefing.
3. `Get Airtable Record Data` reads the row again by its ID.
4. `AI Agent` gets the row's `Briefing` as its message. Its system message asks for an Instagram caption with a clear
   call to action and nothing else around it.
5. The agent can call `Background Info`, which reads one record from the background table. `OpenAI Chat Model` runs
   `gpt-4o`, and `Window Buffer Memory` keeps the last five exchanges under the row's ID.
6. `Format Fields` puts the agent's answer in a field named `SoMe Text`.
7. `Post Caption into Airtable Record` updates the row by its ID. It writes the caption into `SoMe_Text_KI` and sets
   `Posten` and `Werbeanzeige` to unticked.

## Change the look

- The caption's rules: the system message of `AI Agent`. It is written in capitals and names Instagram, so change that
  line for another network.
- What the agent knows about your readers: the record `Background Info` reads, or its table.
- The model: `gpt-4o` in `OpenAI Chat Model`.
- The wait: the amount in `Wait 1 Minute`. A longer wait gives a slower writer more time.
- The fields: `Briefing` in `AI Agent`, and `SoMe_Text_KI`, `Posten` and `Werbeanzeige` in
  `Post Caption into Airtable Record`.

## Good to know

- OpenAI's deprecations page, read on 12 November 2026, lists the dated `gpt-4o` versions for shutdown on 14 January
  2027, with `gpt-6-luna` as the replacement. It does not list the bare name `gpt-4o`, which this copy keeps.
- The agent's prompt reads `Briefing` in two places and `Briefing/Notizen` in a third. Unless your field has that second
  name, the third comes out empty.
- Every run writes unticked to `Posten` and `Werbeanzeige`, so a box you ticked on that row is cleared. Your table needs
  both fields. Otherwise Airtable refuses the update, and you can remove them from the node.
- The trigger polls once a minute and the workflow waits another minute, so a briefing typed later than that is missed.
- `Background Info` reads one fixed record. The agent never picks a different one.
- OpenAI bills a model call for every step the agent takes, at least one a run, and the briefing and the background
  record both go to OpenAI.
- Anyone who can add a row to the table starts a run that spends your OpenAI key.
- The caption is only saved in the row. Nothing is posted to Instagram.
- `Window Buffer Memory` keeps its history in the n8n process. n8n drops a history after an hour without use, and a
  restart clears it.
```

## What is in it

3 files, 17 KB, downloaded as a zip.

```text
NOTICE.md  649 B
README.md  6 KB
workflow.json  11 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 6 steps, starting on an Airtable event
- AI: 1 step calls an AI model: AI Agent
- Sign-ins: Signs in to: Airtable and OpenAI
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 5 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/103178a3-74ba-4ab1-9929-91a362f7d590)
- [Its page on Mindket](https://mindket.com/p/103178a3-74ba-4ab1-9929-91a362f7d590)
