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…
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 . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
New Airtable row
It starts when a new row appears in your editorial table, which the trigger checks every minute:
An Instagram caption inside the editorial plan row, ready for a person to read and edit
What you need before you start.
Editorial plan and background notes
Fires on each new row, reads it, gives the agent one background record and takes the finished caption back into the row.
NeedsAirtable personal access token, in an Airtable credential
Language model
Runs gpt-4o as the agent that writes the caption.
NeedsOpenAI API key
Checked by Mindket on 13 Nov 2026
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.
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.
| 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.
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.
SoMe_Text_KI field of the rowPost Caption into Airtable Record to send the caption onDownload saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Build the two tables before you import it.
| 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 |
workflow.json.Airtable Trigger: New Record, Get Airtable Record Data, Background Info and Post Caption into Airtable Record.OpenAI Chat Model.YOUR_BASE_ID with your base’s ID, the part of its address that starts with app.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.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.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.
| 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 |
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.
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.
| 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 |
The caption goes into the row and nowhere else. Two field names in the original copy need a look.
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 keepsBriefing in two places and Briefing/Notizen in a third. Unless your field has that second name, the third comes out emptyPosten and Werbeanzeige, which clears a box you ticked on that row. Your table needs both fields, or remove them from the nodeAn 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.
workflow.json: the workflow as n8n exports it, 9 nodes and one sticky note. It holds no credential.README.md: these notes.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 differentYOUR_TABLE_ID, so they must be one table.Post Caption into Airtable Record shrank to the four fields the node writes. The original copygpt-4o.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.
workflow.json.Airtable Trigger: New Record,Get Airtable Record Data, Background Info and Post Caption into Airtable Record.OpenAI Chat Model.YOUR_BASE_ID with your base's ID. It is the part of the base's web address that startsapp.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.Background Info, replace YOUR_BACKGROUND_TABLE_ID with the background table's ID, and YOUR_RECORD_ID with therec.Airtable Trigger: New Record checks the editorial table every minute and fires on a row whose created_at is new.Wait 1 Minute pauses for one minute, so whoever made the row can finish writing the briefing.Get Airtable Record Data reads the row again by its ID.AI Agent gets the row's Briefing as its message. Its system message asks for an Instagram caption with a clearBackground Info, which reads one record from the background table. OpenAI Chat Model runsgpt-4o, and Window Buffer Memory keeps the last five exchanges under the row's ID.Format Fields puts the agent's answer in a field named SoMe Text.Post Caption into Airtable Record updates the row by its ID. It writes the caption into SoMe_Text_KI and setsPosten and Werbeanzeige to unticked.AI Agent. It is written in capitals and names Instagram, so change thatBackground Info reads, or its table.gpt-4o in OpenAI Chat Model.Wait 1 Minute. A longer wait gives a slower writer more time.Briefing in AI Agent, and SoMe_Text_KI, Posten and Werbeanzeige inPost Caption into Airtable Record.gpt-4o versions for shutdown on 14 Januarygpt-6-luna as the replacement. It does not list the bare name gpt-4o, which this copy keeps.Briefing in two places and Briefing/Notizen in a third. Unless your field has that secondPosten and Werbeanzeige, so a box you ticked on that row is cleared. Your table needsBackground Info reads one fixed record. The agent never picks a different one.Window Buffer Memory keeps its history in the n8n process. n8n drops a history after an hour without use, and aNOTICE.md 649 B README.md 6 KB workflow.json 11 KB
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…
Qwen · Kit
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…
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…
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…
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…
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…