# Write a video script and shot list from a brief

Turn approved notes into a short production script with a hook, narration, suggested shots, and a timing estimate. Save it as an editable Google Doc.

**Category** Marketing · Content Creation  
**Tools** n8n, OpenAI, Google Docs, n8n Data Tables  
**Trigger** Authenticated POST from an internal content queue or form  
**Proposed catalog URL** https://uptune.io/templates/video-script-shot-list  
**Package** [Workflow JSON](video-script-shot-list.n8n.json) · [Test payloads](test-payloads.json) · [Validation report](validation-report.txt)

Import the workflow in n8n and run **Run with sample data**. The workflow imports inactive with **dryRun** enabled. The sample stays inside n8n and uses fictional data.

## How it works

1. Read the video topic, audience, approved notes, target length, and approved call to action.
2. Write a hook and three to eight scenes. Each scene contains voiceover, a suggested shot, and an exact excerpt from the brief.
3. Estimate narration time at 144 words per minute, add the supplied call to action verbatim, and save the production script to Google Docs.

## How to use

1. Create a Data Table for this workflow with text columns **event_key**, **status**, **detail**, and **result_id**. Enter its ID, the OpenAI model, and the brand voice in **Setup**.
2. Configure an OpenAI bearer **Header Auth** credential, Google Docs OAuth2 on both Google Docs HTTP nodes, and a separate private inbound **Header Auth** credential.
3. POST **requestId**, **topic**, **audience**, **durationSeconds** (30–180), **approvedNotes**, and **callToAction**. The response acknowledges receipt. Read the resulting Google document ID from the Data Table's **result_id** field.
4. In staging, disable dry run and submit the fixture. Read the narration aloud to check pacing and verify the shot list is feasible.

## Test and operate

- The sample produces three scenes and includes the approved CTA.
- Overlong narration or a scene with an unsupported source excerpt stops before Google Docs.
- Review the time estimate with the presenter. Pauses, cuts, and visual holds affect the final runtime.
- If a run stops at **doc_pending**, check the stored document ID or search Drive for the title with the request ID before retrying. Create a new request ID for a deliberate revision.

[n8n source by Anshul Chauhan](https://n8n.io/workflows/9342-generate-youtube-scripts-for-shorts-and-long-form-with-gemini-ai-and-tavily-research/) · [Google Docs batch update API](https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/batchUpdate)
