🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets to Google Drive, Sora videos organized

Lisa Granqvist Partner Workflow Automation Expert

Video batches sound simple until you’re juggling prompts, render statuses, filenames, and “where did that output go?” across tabs. The worst part is the waiting, because you still have to keep checking.

This Sora video automation hits marketing managers first (launch timelines don’t wait), but a content strategist and a small agency owner feel it too. You’ll turn a messy “prompt → render → download → upload → track” routine into one clean pipeline that leaves you with Drive links and an updated Sheet.

Below, you’ll see exactly what the workflow does, what you get out of it, and how to think about setup without needing to be technical.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets to Google Drive, Sora videos organized

The Problem: Sora batches turn into status-chasing

When you run Sora generations in batches, the work isn’t “making videos.” It’s the in-between stuff. You paste prompts into one place, submit jobs somewhere else, then you wait. And while you wait, you keep checking because you need the outputs for a post, a client review, or tomorrow’s campaign. One missing link breaks the whole chain: you can’t find the file, you don’t know if it failed, and now your tracking sheet is lying to you. Honestly, the mental load is what gets you. Your attention keeps snapping back to the same question: “Is it done yet?”

It adds up fast.

  • You end up re-checking render status multiple times per video, which quietly eats an hour across a batch.
  • Downloads and uploads get sloppy, so filenames drift and people share the wrong link.
  • Your Google Sheet stops being a source of truth because “STATUS” is updated late, or not at all.
  • When a render fails, you discover it too late and lose the day’s momentum.

The Solution: Run Sora from Sheets, store in Drive, log everything

This workflow turns Google Sheets into your control panel for Sora. You keep a simple row-per-video list (prompt, duration, resolution), then run the workflow in n8n to process every pending row. For each prompt, it submits a render request to the Sora API, waits, and checks status again with retry logic so you’re not babysitting. Once the video is ready, it generates a more SEO-friendly title using GPT-4 (so you don’t end up with “final_v7_REAL_final.mp4” vibes), downloads the finished file, and uploads it to Google Drive. Finally, it writes the Drive URL back into the same Sheet and marks the status so your tracking stays clean.

The workflow starts with a manual run in n8n after you’ve filled your Sheet. Sora handles rendering in the background while n8n waits and verifies status until the job is complete (or marked failed). At the end, you get Drive-hosted videos plus a Sheet that’s updated automatically with titles, links, and status.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you generate 10 Sora clips for a weekly content push. Manually, you might spend about 10 minutes per clip checking status, downloading, uploading to Drive, and pasting links back into the Sheet, which is roughly 100 minutes plus interruptions. With this workflow, you spend about 10 minutes up front filling in prompts and kicking off the run, then you come back later to a Sheet full of Drive URLs and finished statuses. The waiting still happens, but you’re not stuck watching it.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store prompts, status, and URLs.
  • Google Drive to store and share finished video files.
  • OpenAI API key (Sora access) (get it from your OpenAI account dashboard).

Skill level: Intermediate. You’ll connect accounts, paste a few IDs, and test one row before running full batches.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

You run it when you’re ready. This workflow uses a manual start, so you trigger it when your Sheet has a batch of prompts you want processed.

Google Sheets becomes the intake form. n8n pulls rows from your Sheet, filters to only the ones that are still pending, then standardizes fields like duration, resolution, and prompt so the next steps don’t get tripped up by missing values.

Sora rendering happens via API calls. n8n submits each prompt to the Sora endpoint, waits, and then checks status again. If the render isn’t ready yet, it loops through another wait and check. If the render fails, the workflow writes that failure back to the Sheet so you can re-run just those rows.

Drive storage and tracking are automatic. For completed renders, GPT-4 generates a cleaner title, the video file is downloaded, uploaded into Google Drive, and the final Drive URL and status are recorded back in Google Sheets.

You can easily modify the Sheet columns to match your naming standards based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Set up the workflow entry point so you can run the video production flow on demand.

  1. Add the Manual Start Trigger node as the trigger for the workflow.
  2. Leave all fields in Manual Start Trigger as defaults (this node has no parameters).
  3. Connect Manual Start Trigger to Retrieve Prompt Rows.

Step 2: Connect Google Sheets

Configure the sheet that stores your video prompts and the status tracking fields.

  1. Open Retrieve Prompt Rows and set Document to example and Sheet to Video prompts.
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Prompt Rows.
  3. Open Mark Video as Failed, set Operation to update, and map PROMPT to {{ $json.prompt }} and STATUS to {{ $json.status }} - {{ $json.error.message }}.
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials in Mark Video as Failed.
  5. Open Record Video Link, set Operation to update, and map PROMPT to {{ $items('Fetch Finished Video')[$itemIndex].json.output.prompt }}, VIDEO URL to {{ $json.webViewLink }}, VIDEO TITLE to {{ $items('Fetch Finished Video')[$itemIndex].json.output.title }}, and STATUS to Video Created.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Record Video Link.

Tip: Ensure the Google Sheet has columns named exactly PROMPT, STATUS, VIDEO TITLE, and VIDEO URL to match the mapping in Mark Video as Failed and Record Video Link.

Step 3: Set Up Filtering and Standardization

Filter pending rows and normalize field names before calling the video generation API.

  1. In Filter Pending Videos, keep the condition where STATUS is empty using {{ $json.STATUS }} with the empty operator.
  2. In Standardize Video Fields, set these assignments: PROMPT to {{ $json.PROMPT }}, DURATION (In Seconds) to {{ $json['DURATION (In Seconds)'] }}, and VIDEO RESOLUTION to {{ $json['VIDEO RESOLUTION'] }}.
  3. Connect Retrieve Prompt RowsFilter Pending VideosStandardize Video Fields.

⚠️ Common Pitfall: If your sheet stores the duration or resolution in different column names, update the expressions in Standardize Video Fields to match your column headers exactly.

Step 4: Configure Sora Rendering and Status Loop

Send requests to the OpenAI video endpoint, wait for rendering, and loop until completion.

  1. In Initiate Sora Render, set URL to https://api.openai.com/v1/videos and Method to POST.
  2. Set JSON Body to { "model": "sora-2", "prompt": "{{ $json.PROMPT }}", "size": "{{ $json['VIDEO RESOLUTION'] || '1280x720' }}", "seconds": "{{ $json['DURATION (In Seconds)'] || 4 }}" }.
  3. In Initiate Sora Render, set headers: Authorization to Bearer [CONFIGURE_YOUR_TOKEN] and Content-Type to application/json.
  4. In Pause for Rendering, set Amount to 60 seconds.
  5. In Verify Render Status, set URL to https://api.openai.com/v1/videos/{{ $json.id }} and pass the Authorization header.
  6. Connect Standardize Video FieldsInitiate Sora RenderPause for RenderingVerify Render StatusRoute by Render State.
  7. In Route by Render State, keep the four rules for failed, queued, in_progress, and completed using {{ $json.status }}.
  8. Ensure the queued and in_progress outputs from Route by Render State both reconnect to Pause for Rendering to keep the polling loop.

⚠️ Common Pitfall: The OpenAI HTTP requests in Initiate Sora Render and Verify Render Status require a valid API token in the Authorization header. Replace Bearer [CONFIGURE_YOUR_TOKEN] with your actual token.

Step 5: Set Up AI Title Generation and Parsing

Generate a SEO-friendly video title using GPT and parse the structured response.

  1. Open Compose SEO Title and set Text to the full prompt template using {{ $json.prompt }}, {{ $json.seconds }}, and {{ $json.id }}.
  2. Connect GPT-4 Chat Engine as the language model for Compose SEO Title and select model gpt-4.1-mini.
  3. Credential Required: Connect your openAiApi credentials in GPT-4 Chat Engine.
  4. Attach Structured Result Parser to Compose SEO Title and keep JSON Schema Example as { "title": "String", "video_id": "String", "prompt": "String" }.
  5. Ensure Route by Render State routes the completed output to Compose SEO Title.

Tip: Structured Result Parser is an AI sub-node; credentials are added on GPT-4 Chat Engine, not on the parser itself.

Step 6: Download and Store the Final Video

Fetch the completed video file, store it in Google Drive, and write the URL back to your sheet.

  1. In Fetch Finished Video, set URL to https://api.openai.com/v1/videos/{{ $json.output.video_id }}/content and keep the response format as file.
  2. In Send to Drive Storage, set Name to {{ $json.output.title }} and choose Drive My Drive and Folder / (Root folder).
  3. Credential Required: Connect your googleDriveOAuth2Api credentials in Send to Drive Storage.
  4. Connect Compose SEO TitleFetch Finished VideoSend to Drive StorageRecord Video Link.

Step 7: Test and Activate Your Workflow

Verify the full flow from prompt selection to storage and logging.

  1. Click Execute Workflow on Manual Start Trigger to run a test.
  2. Confirm pending rows in the sheet are filtered by Filter Pending Videos and passed into Standardize Video Fields.
  3. Watch Initiate Sora Render create a render job and verify the status loop through Pause for Rendering and Verify Render Status.
  4. On completion, confirm Compose SEO Title returns a structured title, Fetch Finished Video downloads the file, and Send to Drive Storage uploads it.
  5. Check Record Video Link updates the sheet with VIDEO URL, VIDEO TITLE, and STATUS set to Video Created.
  6. When satisfied, toggle the workflow to Active to use it in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets permissions can be picky in shared Drives. If updates don’t write back, check the connected Google account and the specific Sheet access first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • OpenAI credentials and access levels matter for Sora. If the initiate request fails, confirm your API key has Sora access and verify your usage limits in your OpenAI dashboard.

Frequently Asked Questions

How long does it take to set up this Sora video automation automation?

About 30 minutes if your accounts and API key are ready.

Do I need coding skills to automate Sora video automation?

No. You will connect your Google and OpenAI accounts and paste in the correct Sheet ID. Most of the work is mapping columns once.

Is n8n free to use for this Sora video automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which depend on how many videos you generate.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Sora video automation workflow for different columns and naming rules?

Yes, and it’s one of the best reasons to use n8n here. You can change the column mapping in the Google Sheets “Retrieve Prompt Rows” and “Record Video Link” steps, then adjust the “Standardize Video Fields” step to enforce your defaults. If you want different naming, edit the “Compose SEO Title” prompt so GPT-4 matches your brand voice. Some teams also add extra columns like CAMPAIGN, CLIENT, or ASPECT_RATIO to keep batches easy to filter later.

Why is my Google Sheets connection failing in this workflow?

Usually it’s permissions or the wrong Sheet ID referenced in one of the nodes. Reconnect the Google Sheets credential in n8n, then confirm the connected account can edit (not just view) that Sheet. If it works on some nodes but not others, you probably updated the ID in one place and missed another.

How many videos can this Sora video automation automation handle?

A lot, as long as you respect API limits and keep your waits reasonable. On n8n Cloud Starter you’re working within monthly execution limits, so very large batches may push you toward a higher plan. If you self-host, you’re mainly limited by your server and how aggressively you poll Sora for status. Practically, most teams run batches of 10 to 50 at a time so failures are easy to spot and rerun.

Is this Sora video automation automation better than using Zapier or Make?

Often, yes, because Sora rendering needs waiting, retrying, and branching when jobs are still processing or failed. n8n handles that logic cleanly without turning your automation into a fragile chain of zaps. You also get the self-host option, which keeps costs predictable when you’re running lots of rows. Zapier or Make can be fine for simple “row added → do one thing” workflows, but polling and retries get annoying fast. Talk to an automation expert if you want help choosing.

Once this is in place, your Sheet becomes the control room and Drive becomes the library. The workflow handles the repetitive parts so you can focus on the creative decisions that actually move the needle.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal