Quick overview
This workflow checks Airtable for due content topics, researches them with Tavily, generates and edits an article plus images and a short video using OpenAI, then waits for Gmail approval before publishing to WordPress, Facebook, and Instagram and writing all asset links back to Airtable.
How it works
- Runs on a schedule or manually and selects one Airtable record marked Ready whose Planned Date is due.
- Uses Tavily to gather sources, then OpenAI to draft an article and review its claims against the retrieved research.
- Generates an SEO title, category, meta description, slug and FAQs, then converts the article and FAQs into HTML.
- Creates a feature-image brief and prompt, generates the feature image and five article-based slide illustrations with native OpenAI image nodes, and uploads the images to Cloudinary and ImageKit.
- Selects a music track from Google Sheets, checks its ID against an n8n Data Table, retries used tracks, and downloads the selected audio from Google Drive.
- Uses FFmpeg to combine the five illustrations, captions and background music into a vertical video, uploads it to ImageKit, and automatically removes temporary rendering files.
- Generates social captions, marks the record Awaiting approval, and sends the article, captions and media links to a reviewer through Gmail.
- Approval publishes to WordPress, Facebook and Instagram, including an Instagram Reel, then records assets and published links in Airtable with Status set to Published. Rejection marks Needs changes and stops without publishing.
Setup
- Connect Airtable credentials and select your base/table in the Airtable nodes. Create Topic, Content Brief, Planned Date and Status fields, plus the output fields listed in the workflow notes. Add Ready, Awaiting approval, Needs changes and Published status options.
- Configure Tavily Header Auth credentials and OpenAI credentials. Select the text and image models in their respective nodes.
- Configure Cloudinary and ImageKit credentials, account settings and upload presets. Uploaded media must have direct URLs accessible to the publishing platforms.
- Connect Google Sheets and Google Drive, select your music spreadsheet, and configure the Used Music Ids Data Table. Keep the music_id, title and artist_name library columns.
- Install FFmpeg, ffprobe and a suitable font in the environment executing the video Code node. Permit the fs and child_process modules, and adjust the font path in Build Captioned Video.
- Connect Gmail credentials and enter the reviewer’s email in Review Content Before Publishing. Ensure your public n8n approval links are reachable.
- Configure WordPress Application Password authentication and your site URL. Connect Meta credentials and replace the Facebook Page and Instagram account placeholders with accounts that have the required publishing permissions.
Requirements
- Self-hosted n8n with FFmpeg, ffprobe, an installed font and task-runner access to fs and child_process.
- Airtable, Tavily and OpenAI credentials.
- Google Sheets and Google Drive access for the music library, plus an n8n Data Table for used track IDs.
- Cloudinary and ImageKit accounts for the included storage steps.
- Gmail credentials and a reviewer email address.
- WordPress REST API access, a Facebook Page and an Instagram professional account with appropriate publishing permissions.
- Music you have permission to publish.
Customization
- Adjust topics, content briefs, writing prompts and the production schedule.
- Replace text or image providers by adapting their output mappings.
- Replace Cloudinary or ImageKit with your preferred storage. Google Drive can be used if you provide directly fetchable media URLs; ordinary sharing-page links are insufficient.
- Adjust video captions, font, scene duration and music volume.
- Use your own music library and approval recipient.
Additional info
- Human approval is required before any WordPress, Facebook or Instagram publishing.
- Videos use captions and library music; no narration service is required.
- Rejected topics are marked Needs changes. Edit the brief and return the topic to Ready to regenerate.
- Approved assets and published links are saved to the same Airtable record.
- Temporary rendering files are automatically deleted.
- Use one generation at a time. Inspect any already-published posts before retrying a partially completed publishing run.
- Connected-service charges depend on usage.