A social post can begin as a standalone idea or as a selected variation of something that already exists. The record structure should support both without forcing every blog post, podcast episode, or YouTube video into a full batch of social content.
For a standalone post, the author supplies the context and direction. For a parent-derived post, the automation retrieves the approved article or final transcript and combines it with the selected Brand, audience, platform, goal, angle, type, tone, prompt, and Style Guide.
The output is still one Social Post record for one destination and one creative direction. If you want three platforms, create three independently editable records. If you want two angles for LinkedIn, create two LinkedIn records. Selection creates the work; the existence of a parent does not.
- Brand records: voice, positioning, rules, and connected social accounts
- Persona records: the audience context passed into generation
- A shared Prompts table: active Social Content prompts for the formats and platforms you use
- Approved parent workflows, when using the parent-derived path: build the relevant Blog Post, Podcast, YouTube, or General Content record with a stable approved draft or transcript field
- A database and AI tool: the record system and model used to generate and store each post
- Optional publishing connection: a platform integration, automation tool, or social planner
The field names shown here are one working example, not a required schema. Preserve the source relationship, generation inputs, review checkpoint, destination state, and publishing return data in whatever tools you choose.
Record
Create one place for every platform-ready post.
Direct
Choose the source, platform, goal, angle, type, tone, and prompt.
Generate
Create one variation from the current saved inputs.
Review
Edit, regenerate, approve, or archive the record.
Publish
Send it live and return destination data and metrics.
Create every social asset on purpose. A source provides material, but the platform and angle determine the post.
Create one Social Posts table or add Social Post as a type inside a shared Content table. One record should hold one final platform-specific asset from its initial direction through publishing and measurement.
Do not place LinkedIn, Instagram, Facebook, and X copy in four columns on one record. Separate records let each variation carry its own length, format, media, approval state, schedule, live URL, and metrics.
Use Social Channel for the network, such as LinkedIn or Instagram. Add Destination Account when the same Brand publishes to multiple profiles or pages on that network. Smaller systems can use one field until they need that distinction.
A short internal label for finding the post. It does not need to appear in the published copy.
The Brand whose voice, business context, language rules, and connected accounts apply.
The full audience profile the AI should write toward, not only the Persona name.
The platform this exact record is written for. Examples include LinkedIn, Instagram, Facebook, X, Threads, TikTok, Pinterest, YouTube, or another active destination.
The specific connected page, profile, board, or channel that should receive the post.
The result this post should support, such as awareness, engagement, traffic, authority, lead generation, conversation, or offer response.
The single perspective this variation will take. Examples: Pain / Problem Agitation, Transformation Story, Behind the Scenes, Case Study / Proof, Mechanism / How It Works, Hot Take / Contrarian, Quick Tip / Value, and Offer / CTA.
The structural approach, such as short insight, story, teaching post, list, observation, recap, or direct offer.
The destination format, such as text post, image post, carousel, reel, story, short video, link post, or poll.
The delivery for this post inside the broader Brand voice. Examples: direct, conversational, analytical, contrarian, encouraging, or instructional.
Select from the shared Prompts table, filtered to Active Social Content prompts. The prompt controls the writing job; Brand and Persona stay linked separately.
A platform-specific guide built from approved examples. If it is blank, use the Brand voice and selected Social Content Prompt.
The action and destination the post should support. Do not force a link or CTA into posts whose goal does not require one.
The required image, carousel, clip, aspect ratio, alt text, or production note. Instagram and video formats may require media before publishing.
Standalone, Blog Post, Podcast Episode, YouTube Video, General Content, or another parent type your system supports.
The exact approved source record. Use typed relationships or a Parent Type plus Parent ID pattern so the source remains traceable.
The point, story, draft, observation, offer, or raw material used when no parent content exists.
The model used for generation and regeneration. Saving it makes output differences traceable.
The exact platform-ready copy after review. A manually written standalone post can be saved here without using AI.
At minimum: Draft, Approved, Scheduled, Published, Failed, and Archived.
The planned time before publishing and the confirmed time after the destination reports success.
The platform or planner identifier used to update the post and retrieve its state or metrics later.
The public destination. Save it back instead of asking future workflows or team members to find the post again.
Store the metrics the destination actually returns, such as reach, impressions, views, reactions, comments, shares, saves, and clicks. Add Last Synced At when retrieval is automated.
Show the full prompt
I want to build a reusable Social Post workflow in [AIRTABLE / NOTION / GOOGLE SHEETS / SUPABASE / MY OWN APP]. Help me create the database structure. I am building my own operating system, not recreating a specific interface.
Create one Social Posts table. One record represents one platform-specific post from direction through publishing and measurement.
IDENTITY AND DESTINATION
- Internal Headline: single-line text, required
- Brand: linked Brand record, required
- Intended Audience: linked Persona record, required
- Social Channel: single select, required
- Destination Account: linked account or destination ID, optional until publishing
CREATIVE DIRECTION
- Content Goal: single select, required
- Post Angle: single select, required
- Post Style: single select, required
- Post Type: single select, required
- Writing Tone: single select, required
- Social Content Prompt: linked record from the shared Prompts table, filtered to Active and Social Content, required
- Style Guide: linked record, optional
- CTA and Destination Link: text and URL, optional
- Media Direction: long text or linked media, optional
SOURCE AND GENERATION
- Source Type: Standalone, Blog Post, Podcast Episode, YouTube Video, General Content, or Other, required
- Parent Content: linked source record or Parent Type plus Parent ID, required when Source Type is not Standalone
- Standalone Source Notes: long text, required when Source Type is Standalone and Final Content is empty
- AI Tool to Use: single select, recommended
- Final Content: rich text or long text, generated and editable
PUBLISHING AND PERFORMANCE
- Status: Draft, Approved, Scheduled, Published, Failed, Archived
- Scheduled / Published Date: date and time
- Destination Post ID: single-line text
- Live Post URL: URL
- Reach, Impressions, Views, Reactions, Comments, Shares, Saves, Clicks: numbers, optional
- Last Synced At: date and time, optional
Then show me:
1. The table structure and relationships
2. A standalone post form
3. A parent-derived generation action
4. Views for Draft, Approved, Scheduled, Published, Failed, and Archived
5. How to create one independent record for every selected platform and angle
6. How to prevent retries from duplicating records
7. How to return the destination post ID, live URL, and metrics after publishingOne record can hold either a standalone post or one selected parent-derived variation without mixing multiple platforms into the same content field.
Standalone path
Create a Social Post record directly. Select the Brand, Persona, Social Channel, goal, angle, style, type, tone, prompt, and optional Style Guide. Add source notes or write the Final Content manually. Nothing must be linked to a parent.
Parent-derived path
Begin on an approved parent record. Select only the platforms, angles, and prompts you want. The automation retrieves the parent source and creates one linked Social Post record for each explicit variation.
Standalone LinkedIn post
Source: Standalone notes about why chat should not be a permanent decision log. Direction: LinkedIn, thought leadership goal, Hot Take / Contrarian angle, text post, direct tone, and an active LinkedIn point-of-view prompt. Result: one Draft LinkedIn record with no parent.
Instagram post from a blog
Source: the approved draft of “How to Stop Losing Client Decisions in Slack.” Direction: Instagram, education goal, Quick Tip / Value angle, carousel type, conversational tone, and an active Instagram teaching prompt. Result: one linked Draft Instagram record. No other platform is created.
Do not multiply every selected platform by every selected angle and prompt unless the author explicitly chose each combination. Show the planned variations before generation or create them one at a time. Control is more important than batch size.
Show the trigger and action map
TRIGGER
Event: Author requests social posts from a parent record
Input: {{parent_type}}, {{parent_record_id}}, {{selected_variations}}
RUN CONDITIONS
- The parent record exists
- The parent source field is approved and not empty
- At least one explicit platform and direction combination is selected
ACTIONS
1. Retrieve the current parent record by ID
2. Retrieve the approved draft or final transcript for that parent type
3. Retrieve the parent Brand and its full voice context
4. Retrieve the selected Persona, prompt, Style Guide, goal, angle, type, tone, CTA, and media direction
5. Show or validate the exact variation list
6. Create one Social Post record for each selected variation
7. Save the parent relationship, source type, platform, and direction on every record
8. Send each record through Prompt 03 independently
9. Save each returned post to its own Final Content field
10. Keep every new record in Draft for human review
ON RETRY
- Use a stable variation key made from parent ID, platform, angle, and prompt ID
- Do not create a duplicate record when that key already exists unless the author explicitly requests another version
ON FAILURE
- Preserve every successful record
- Mark only the failed variation as Failed or leave it available for retry
- Do not regenerate completed variations automaticallyThe workflow can retrieve the correct source and create exactly the requested platform records, with no unrequested batch.
The generation step should receive one complete Social Post record and one trusted source. It should not decide which platform, angle, or goal to use. Those are human selections made before the model writes.
For parent-derived content, the source record remains the factual authority. The model should select and shape one useful idea rather than summarize the entire blog post, podcast, or video. For a standalone post, the saved notes or draft become the authority.
The record contains one editable Final Content draft written for its selected channel, goal, angle, type, and tone.
A LinkedIn post and Instagram caption can share a source and idea without sharing identical copy. The selected platform should affect structure, length, formatting, CTA behavior, and media requirements.
Show the trigger and action map
TRIGGER
Event: Author requests generation for one Social Post record
Input: {{social_post_record_id}}
RUN CONDITIONS
- Brand, Persona, Social Channel, Content Goal, Post Angle, Post Style, Post Type, Writing Tone, and Social Content Prompt are present
- Either Parent Content or Standalone Source Notes is present
ACTIONS
1. Retrieve the current Social Post record
2. Retrieve the full Brand, Persona, Social Content Prompt, and optional Style Guide
3. Retrieve the current approved parent source or Standalone Source Notes
4. Map all saved values into Prompt 03
5. Send Prompt 03 to the selected AI model
6. Validate that the response contains one complete post and no unsupported claims
7. Preserve an existing Final Content version when regenerating
8. Save the new draft to Final Content
9. Keep Status Draft and notify the author
ON FAILURE
- Do not overwrite an existing Final Content field with a partial response
- Log the failed step and error
- Leave the record available for a manual retryShow the full prompt
You are writing one social post for one selected destination. The source and direction have already been chosen. Do not change the platform, goal, angle, type, or tone, and do not create additional variations.
POST DIRECTION
Internal headline: {{internal_headline}}
Social channel: {{social_channel}}
Destination account context: {{destination_account_context}}
Content goal: {{content_goal}}
Post angle: {{post_angle}}
Post style: {{post_style}}
Post type: {{post_type}}
Writing tone: {{writing_tone}}
CTA: {{cta}}
Destination link: {{destination_link}}
Media direction: {{media_direction}}
LINKED CONTEXT
Brand voice and business context: {{brand_context}}
Intended audience Persona: {{persona_context}}
Selected Social Content Prompt: {{social_content_prompt}}
Platform-specific Style Guide, if selected: {{style_guide}}
SOURCE
Source type: {{source_type}}
Source title: {{source_title}}
Approved source content or standalone notes: {{source_content}}
Source URL, if published: {{source_url}}
INSTRUCTIONS
1. Write one complete post for the selected Social Channel and Post Type.
2. Follow the selected prompt and Style Guide. If they conflict, use the Style Guide for voice and the selected platform, goal, angle, and type for this post’s structure.
3. Build the post around one useful idea from the source. Do not summarize every point in the parent content.
4. Keep factual claims, examples, quotations, and results traceable to the supplied source. Do not invent personal experience, client results, statistics, or attribution.
5. Adapt length, formatting, opening, CTA behavior, and media dependence to the selected platform. Do not copy another platform’s conventions automatically.
6. Use the CTA and link only when supplied and relevant to the selected goal. Do not add an engagement question, hashtags, emojis, or a link by default unless the prompt or Style Guide calls for them.
7. If the source is a transcript, remove filler and spoken repetition while preserving the speaker’s meaning.
8. If media is required for the selected Post Type, keep the copy consistent with the supplied Media Direction. Do not claim that an unseen visual contains something it does not.
RETURN EXACTLY
FINAL CONTENT
[One platform-ready social post]
MEDIA NOTE
[One concise production note when media is required. Otherwise: None.]Each selected variation exists as its own Draft record with platform-ready, editable content grounded in the saved source.
Edit
Change Final Content directly when the draft is close. The saved human-edited version, not the original model response, should move to publishing.
Regenerate
Update the direction or source first, then generate a fresh version from all current inputs. Preserve the prior draft through version history or a related Versions table.
Approve
Change Status to Approved only after the platform, facts, voice, CTA, link, and media requirements have been checked.
Archive or delete
Archive a valid variation you chose not to use so its history remains available. Reserve deletion for mistaken, duplicate, or test records your retention rules allow you to remove.
Do not let draft generation send a post directly to a live channel. Approval should be an explicit human action, even when the next step is fully automated.
The final edited copy and required media are approved on the Social Post record, or the unused variation has been archived.
Publishing can be manual, direct through an automation platform, or routed through a social planner. Choose the path that covers the destinations you actually use. Keep account credentials and API keys in the integration layer, not on the Social Post record.
An automation tool with native social publishing modules can send approved records directly to the networks it supports. A social planner with a posting API can add destinations through one connection. Before choosing either path, confirm that it supports the post formats and media you use, can create or schedule the post, returns a stable destination ID or live URL, and exposes any performance data you plan to retrieve. Coverage and authentication requirements change, so verify them when building.
After the destination confirms success, save the returned post ID, live URL when available, and actual publication time back to the Social Post record. That return path turns publishing into a closed workflow instead of a one-way send.
You can copy the approved post into a platform or planner and paste the live URL back into the record. Automate only after the record and approval logic are reliable.
Begin with manual entry if needed. Automate retrieval only when the platform or planner provides a stable lookup key and a metrics endpoint or export. Use the Destination Post ID to request the measures that source actually exposes.
Show the publish and return map
TRIGGER
Event: Author chooses Publish, or the saved Scheduled time arrives
Input: {{social_post_record_id}}
RUN CONDITIONS
- Status is Approved or Scheduled
- Final Content is not empty
- Required media and Destination Account are present
- The destination connection is active
ACTIONS
1. Retrieve the current approved Final Content, link, media, Post Type, and Destination Account
2. Map those fields to the selected platform connection, publishing automation, or social planner
3. Create or schedule the post
4. Confirm success before changing the source record
5. Save the returned Destination Post ID
6. Save the Live Post URL when the destination returns one
7. Save the actual publication date and time
8. Change Status to Published
SCHEDULED PATH
- Keep Status Scheduled until the destination confirms publication
- Do not treat a successful scheduling request as a published post
ON FAILURE
- Keep the approved content unchanged
- Set Status Failed or retain Approved for manual retry
- Log the destination and returned error
- Do not submit another post automatically when the result is uncertainShow the metrics return map
TRIGGER
Event: Manual refresh, scheduled sync, or reporting run
Input: {{social_post_record_id}}
RUN CONDITIONS
- Status is Published
- Destination Post ID is present
- The selected destination exposes performance data
ACTIONS
1. Retrieve the Social Post record and its Destination Post ID
2. Request the current metrics from the platform or social planner
3. Store only the measures that destination returns
4. Normalize comparable fields carefully, such as reactions versus likes
5. Save the current totals on the Social Post record
6. Save Last Synced At
7. If trend reporting matters, add a dated related snapshot instead of replacing the only historical value
ON FAILURE
- Keep the last successful metrics unchanged
- Log the destination error and attempted sync time
- Do not change the post’s Published statusThe approved post is published, its destination identity is saved on the source record, and performance can be entered manually or refreshed through a traceable metrics workflow.