π¬ Create faceless vertical Shorts with OpenAI Sora 2, PostWire, and Sheets
β‘ 5 views Β· π¬ Content Creation & Video
π‘ Pro Tip β Since TikTok doesnβt have a public API, getting data usually means fragile HTTP scraping. ScraperNode is a community node that gives you clean JSON for TikTok profiles, videos, and comments β drop it into your workflow and skip the parsing.
Description
Quick Overview
This workflow runs daily, uses Google Sheets to avoid repeating topics, generates a new Shorts concept and Sora 2 video with OpenAI, publishes it via PostWire to YouTube Shorts, TikTok, and Instagram Reels, then logs results back to Google Sheets and emails you on failures.
How it works
- Runs every day at 9:00 on a schedule.
- Loads channel settings (niche, visual style, video length, and alert email) and reads your previous posts from Google Sheets.
- Uses OpenAI (chat model) to pick a new, non-repeating topic and produce a Sora 2 prompt, caption idea, and YouTube title.
- Generates a 9:16 video with audio using OpenAI Sora 2 based on the prompt and configured duration.
- Publishes the video through PostWire to YouTube, TikTok, and Instagram with platform-specific title/caption handling.
- Appends a βpublishedβ row with the platform link to Google Sheets, or logs the failure and sends a Gmail alert with the error details.
Setup
- Install and configure the PostWire node, create a PostWire account, connect your YouTube/TikTok/Instagram accounts, and add a PostWire API credential in n8n.
- Add an OpenAI credential for both the chat model and the Sora 2 video generation node.
- Create a Google Sheet with columns
date, topic, network, status, link, note, connect Google Sheets credentials, and select the correct spreadsheet and sheet in the read/log nodes. - Add a Gmail credential and set your destination email address in the channel settings.
π Nodes Used
Google Sheets, Gmail, Schedule Trigger, Basic LLM Chain, OpenAI Chat Model, Structured Output Parser
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File