No developers. No coding. No manual posting. Just a database and a checkbox.
Who This Guide Is For
If you manage social media for a business that regularly publishes similar types of content — property listings, job postings, product launches, event announcements, weekly roundups — this guide is for you.
You don't need to know how to code. You don't need a developer. You need:
- An Airtable account (free plan works)
- A Storylayer account
- About 2 hours to set everything up
After that? You add a row to Airtable, check a box, and Storylayer handles the rest — designing the graphic, writing the captions, and posting to Instagram, Facebook, X (Twitter), and your blog automatically.
The Problem This Solves
Here's what most social media managers go through every time they want to post a new listing, product, or piece of content:
- Find the raw data (price, photos, description, location)
- Open Canva or Photoshop and manually design a graphic
- Write a caption from scratch
- Log into Instagram, upload the graphic, paste the caption
- Repeat for Facebook
- Repeat for Twitter
- Write a blog post
- Schedule everything
For Buy An A-Frame — an Instagram account curating A-frame properties for sale across the United States — this meant spending 30–45 minutes per listing. They post multiple times per week. The math adds up fast.
With Storylayer, that entire process is now zero minutes of human time. A property gets added to their Airtable database, and within 5 minutes it's live on Instagram, Facebook, X, and their Ghost blog — complete with a professionally designed stats card, an editorial caption, and a full blog article.
This guide shows you exactly how to build that.
Why Storylayer Instead of Other Tools?
There are other automation tools out there — Zapier, Make, Buffer, Hootsuite. Here's why Storylayer is different for content-heavy workflows:
| | Storylayer | Zapier / Make | Buffer / Hootsuite | |---|---|---|---| | AI caption writing | Built-in per post | Requires OpenAI setup | None | | Branded graphic design | Creatomate templates | No design layer | Basic image posting | | Airtable field mapping | Visual, no-code | Possible but no AI/design | Not supported | | Multi-channel from one record | IG + FB + X + Ghost | Complex to set up | Limited | | Writes results back to Airtable | URLs + status | Manual | None | | Built for recurring content types | Core feature | One-off automations | Manual scheduling |
The key difference: Storylayer is built specifically for recurring, structured content — the same type of post, over and over, with different data each time. Listings. Products. Events. Jobs. It's designed for exactly this use case.
What You'll Build
By the end of this guide, you'll have a pipeline that works like this:
New row added to Airtable ↓ Storylayer picks it up automatically (every 5 min) ↓ AI generates a property name and captions ↓ Creatomate renders a branded stats card graphic ↓ Posts to Instagram carousel Posts to Facebook Posts to X / Twitter Publishes to Ghost blog ↓ Writes back to Airtable: ✓ Storylayer Posted ✓ Posted Date & Time ✓ Instagram URL ✓ Facebook URL ✓ X URL ✓ Ghost URL
Part 1: Setting Up Your Airtable Base
The Columns You Need
Your Airtable base is the source of truth. Every piece of data that appears in your posts comes from here.
For Buy An A-Frame, the base has these columns:
| Column Name | Type | What It Contains | |---|---|---| | Address | Single line text | Street address | | City | Single line text | City name | | State | Single line text | State abbreviation (WA, CO, AZ) | | Full Location | Formula | City + ", " + State name | | Price | Currency | Listing price | | BD | Number | Bedrooms | | BA | Number | Bathrooms | | sq. ft. | Number | Square footage | | Year built | Single line text | e.g. "Built in 1965" | | Days Listed | Number | Days on market | | Image | URL | Main photo URL (or attachment) | | Description | Long text | Property description | | Instagram Name | Formula / AI | AI-generated property name | | Post to Storylayer | Checkbox | Triggers the automation | | Storylayer Posted | Checkbox | Set by Storylayer after posting | | Storylayer Posted Date | Date | Set automatically | | Instagram URL | URL | Written back by Storylayer | | Facebook URL | URL | Written back by Storylayer | | X URL | URL | Written back by Storylayer | | Ghost URL | URL | Written back by Storylayer | | Storylayer Error | Long text | Populated if something fails |
The bold columns are the ones Storylayer reads and writes. The rest are your data.
Tip: The column names don't have to match exactly — you'll map them to Storylayer fields in the next step. But keeping them consistent makes setup easier.
How Data Gets Into Airtable
You have several options for how rows get added to your base:
- Manually — type in each row yourself. Full control, most effort.
- Bardeen — a browser extension that can scrape Zillow (or any website) and write directly to Airtable on a schedule. This is what Buy An A-Frame uses.
- Zapier / Make — connect any data source to Airtable automatically.
- Airtable forms — let a team member or external source submit entries.
- CSV import — bulk upload from a spreadsheet.
Storylayer doesn't care how rows get into Airtable. It just watches for the checkbox.
Part 2: Designing Your Template in Creatomate
Storylayer uses Creatomate to render your branded graphics. You design the template once, and Storylayer fills in the data fields automatically for every post.
What Is Creatomate?
Creatomate is a template-based image and video rendering platform. Think of it like Canva, but instead of you filling in the fields manually, an automation fills them in for you.
You design a template with named text fields and image placeholders. Storylayer sends the data, Creatomate renders the final image.
The Buy An A-Frame Template
Buy An A-Frame uses a 1080 × 1350px portrait template (the ideal Instagram feed size). It contains:
- A large hero photo of the property
- The AI-generated property name in bold display type (e.g. GLASS GROVE GALLERY)
- The price in large type (e.g. $1.6M)
- Location, bedrooms, bathrooms, square footage
- Year built and days on market
- The month and year of posting
- The @buyanaframe Instagram handle
- The brand logo
Every text element has a named field in Creatomate. When you connect it to Storylayer, you map those field names to your Airtable columns.
Creating Your Template
- Go to creatomate.com and create a free account
- Click New Template and set the size (1080 × 1350 for Instagram portrait)
- Add your design elements — background, text boxes, image placeholder
- Name every element — these names are how Storylayer finds them
- Use descriptive names like
Price.text,Location.text,Hero-Image.source
The most important step: Every element you want Storylayer to fill in must have a name. In Creatomate, click an element → Properties panel → set the Name field.
Once your template is saved, copy the Template ID from the URL or template settings page. You'll need this in Storylayer.
Template Sizes by Channel
For best results, use different template sizes for different channels:
| Channel | Recommended Size | Aspect Ratio | |---|---|---| | Instagram Feed | 1080 × 1350 px | 4:5 portrait | | Facebook | 1080 × 1350 px | 4:5 portrait | | X / Twitter | 1200 × 675 px | 16:9 landscape | | Ghost (feature image) | 1200 × 675 px | 16:9 landscape |
You can use the same template for Instagram and Facebook if you prefer a single template.
Part 3: Connecting Everything in Storylayer
Step 1: Connect Your Social Accounts
In Storylayer, go to Dashboard → Social Accounts and connect:
- Instagram — Business account required, connected via Facebook OAuth
- Facebook Page — connected automatically with Instagram
- X / Twitter — OAuth flow
- Ghost — your Ghost site URL and Admin API key (found in Ghost Admin → Settings → Integrations → Add custom integration). Ghost custom integrations require the Publisher plan or higher.
Step 2: Connect Airtable
Go to Dashboard → Data Connectors and click Connect Airtable.
You'll need a Personal Access Token from airtable.com/create/tokens with these scopes:
data.records:read— so Storylayer can read your recordsdata.records:write— so Storylayer can write post URLs backschema.bases:read— so Storylayer can list your bases and tables
Select your base and table. Storylayer will show a preview of your columns immediately.
Step 3: Create a New Automation
Click Create A Story and select Recurring / Automated.
The wizard walks you through 5 steps:
Step 1 — Choose Your Channels
Select Instagram, Facebook, X, and Ghost. You can enable or disable channels at any time.
Step 2 — Connect Your Data Source
Select Airtable as your data source. Your connected base and table will appear automatically.
For the trigger, choose Airtable — when record is created and select the "Post to Storylayer" checkbox column as your trigger field.
Configure AI guidance: set your tone (casual, professional, inspiring), add "Always include" and "Never include" rules.
Step 3 — Map Your Fields
Tell Storylayer which Airtable column maps to which template field.
For Buy An A-Frame, the mapping looks like this:
| Template Field | Airtable Column | |---|---| | Name | Instagram Name | | Price | Price | | Location | Full Location | | Hero-Image | Image | | Bedrooms | BD | | Bathrooms | BA | | Square-Feet | sq. ft. | | Year-Built | Year built | | Days-on-Market | Days Listed |
Storylayer shows a live preview of how your template will look with real data from your first Airtable row.
Set your brand defaults (handle and logo) and optionally choose a caption source column from Airtable.
Step 4 — Configure Each Channel
For each channel, set:
- The caption style and tone
- Any channel-specific settings (Instagram hashtags, Ghost tags, tweet format)
- The Creatomate template (each channel can use a different one)
Step 5 — Activate
Click Save to create the automation, then click Enable Automation. Storylayer will now poll your Airtable base every 5 minutes.
Step 4: Trigger Your First Post
In Airtable, check the Post to Storylayer checkbox on any row.
Within 5 minutes, Storylayer will:
- Find the row
- Generate the property name and captions with AI
- Render your Creatomate template with that row's data
- Post to all configured channels
- Write back the URLs and check Storylayer Posted
Part 4: Seeing It Live
Here's what the Buy An A-Frame pipeline produces for every listing, on a consistent schedule:
A branded 4:5 graphic with the property stats card. Caption pulled from the "Instagram Content" column or AI-generated — editorial, 200–300 words, ending with hashtags.
The same stats card image, with a caption adapted for Facebook's format.
X / Twitter
A 1:1 or 16:9 graphic optimized for X's feed. Short punchy tweet under 280 characters with key stats and hashtags.
Ghost Blog Post
A full blog article with the stats card as the feature image. AI-generated title, 500–700 word article body with property details, neighborhood highlights, and a lifestyle angle. Auto-tagged from location and property type.
Airtable Write-back
After all channels post successfully, Storylayer checks Storylayer Posted and fills in every URL column. You have a permanent record of everything that's been published, directly in your database.
Part 5: What Happens When Something Goes Wrong
Storylayer is designed to be resilient:
- If one channel fails, the others still post. The error is written to the Storylayer Error column in Airtable.
- If a post is duplicated, Storylayer has multiple dedup layers — in-memory checks, database constraints, and Airtable's own filter — to prevent the same record from being posted twice.
- If you add a new channel later, Storylayer will catch up existing records automatically. The Storylayer Posted flag is only set once all configured channels have queue items, so new channels always get picked up.
Part 6: Scaling Up
Once your pipeline is running, here's how to scale it:
Adding new listings: Use Bardeen, Zapier, or any tool that writes to Airtable on a schedule. New rows appear, the checkbox gets checked, posts go live. No human involvement.
Reviewing before posting: Set the automation to Approved mode. Posts land in the Storylayer queue for you to review, edit, or reject before publishing.
Editing captions: Every post in the queue has an Edit Caption button. Tweak the AI-generated caption before it goes live without touching any other settings.
Pausing the automation: Click Pause on any automation in the queue. No new posts will be created until you resume.
Adding new channels: Add X or Ghost to an existing automation that already handles Instagram and Facebook. New records post to all channels. Existing records that haven't been posted to the new channel will be caught up automatically.
Results: What Buy An A-Frame Achieved
Before Storylayer:
- 30–45 minutes per listing
- Manual design, manual captions, manual scheduling
- Inconsistent posting frequency
- No audit trail
After Storylayer:
- 0 minutes per listing — runs consistently on schedule
- Consistent branded design on every post
- Posts go live within 5 minutes of a row being added
- Full audit trail in Airtable with post URLs and timestamps
- Content published to 4 channels simultaneously
Getting Started
Ready to build your own pipeline?
- Create a Storylayer account
- Connect your social accounts and Airtable base
- Design your Creatomate template (or use a built-in one)
- Create your automation and activate
Your first Airtable-to-social automation can be live in under 2 hours.
No credit card required.
Related Guides
- How to Automate Instagram Posts from Airtable (No Code) — SEO tutorial for new users
- Automate Your Social Media Posts from Airtable — Landing Page
- How to Automate Daily Social Posts from Your Own API — connect any JSON API
- How to Automate Instagram Posts from Google Sheets
- How to Post Ski Conditions to Instagram Automatically
- How to Automate Ghost Blog Posts with AI
Buy An A-Frame is a real Storylayer customer. All posts shown in this guide were created automatically using the pipeline described above.