How this works
The setup has three parts:
- Google Sheets as your content calendar (titles, captions, video links, target platforms, publish dates)
- An automation tool (n8n, Make.com, or Airtable) that reads new rows from the sheet
- The Upload-Post API that takes the content and publishes it to your social accounts
When you add a new row to the spreadsheet with status "ready", the automation picks it up, sends the video and caption to the API, publishes to all selected platforms, and updates the row with "published" and the post URLs. The whole thing runs in the background.
Step 1: Set up your spreadsheet
Create a Google Sheet with these columns:
| A: Title | B: Caption | C: Video URL | D: Platforms | E: Publish Date | F: Status | G: Post URLs |
|---|---|---|---|---|---|---|
| Summer sale promo | 50% off everything this week! | https://drive.google.com/... | tiktok, instagram, youtube | 2025-09-22 10:00 | ready | |
| Behind the scenes | How we make our products | https://drive.google.com/... | tiktok, instagram, linkedin | 2025-09-23 12:00 | pending |
The "Video URL" column should contain either a public Google Drive link, a Dropbox link, or any publicly accessible URL to the video file. The automation tool will download it and pass it to the API.
The "Status" column is what triggers the automation. Set it to "ready" when a piece of content is approved and should be published. The workflow will change it to "published" after a successful upload.
Step 2: Choose your automation tool
There are three good options, each with its own strengths:
Option A: n8n (recommended for full control)
n8n is an open source automation tool that gives you the most flexibility. We have a ready made template that does exactly what we've described:
- Schedule and auto-post videos from Google Sheets to Instagram, LinkedIn and TikTok
- Google Drive to social media with AI descriptions and Airtable tracking
Import either template into your n8n instance with one click, plug in your API key, and it works out of the box. The workflow:
- Triggers on a schedule (e.g. every hour) or manually
- Reads rows from Google Sheets where Status = "ready"
- Downloads the video from the URL in each row
- Sends it to the Upload-Post API with the title, caption and platforms from the sheet
- Updates the row status to "published" with post URLs
For more n8n automation ideas, browse the full n8n template library.
Option B: Make.com (good for teams already on Make)
Make.com connects Google Sheets to the Upload-Post API using its HTTP module. The flow is the same:
- Google Sheets module watches for rows where Status = "ready"
- HTTP module downloads the video file
- HTTP module posts to
https://api.upload-post.com/api/uploadwith multipart form data - Google Sheets module updates the row with results
The HTTP module needs these settings: Method = POST, Body Type = Multipart/form-data, and a custom header with your API key. Check our Make.com templates for prebuilt scenarios.
Option C: Airtable (for teams who prefer Airtable over Sheets)
If you're already using Airtable, you can skip Google Sheets entirely. Airtable has built in automation scripts that trigger when a record is created or updated. Our Airtable integration guide walks through setting up an automation that:
- Triggers when a record's status changes to "ready"
- Runs a script that sends the content to the Upload-Post API
- Updates the record with the result
Step 3: Configure the Upload-Post API call
Regardless of which tool you use, the API call is the same. Here's what each spreadsheet column maps to:
| Spreadsheet column | API parameter | Notes |
|---|---|---|
| Title | title | Main post caption for all platforms |
| Caption | description | Extended text (YouTube, LinkedIn, Facebook) |
| Video URL | video | Can be a URL or file binary |
| Platforms | platform[] | Split comma-separated string into array |
| Publish Date | scheduled_date | ISO-8601 format; leave empty for immediate |
Sample cURL for reference
curl -X POST https://api.upload-post.com/api/upload \
-H "Authorization: Apikey your-api-key-here" \
-F "video=https://drive.google.com/uc?id=FILE_ID" \
-F "user=mybrand" \
-F "title=Summer sale promo" \
-F "description=50% off everything this week!" \
-F "platform[]=tiktok" \
-F "platform[]=instagram" \
-F "platform[]=youtube" \
-F "scheduled_date=2025-09-22T10:00:00Z" \
-F "timezone=America/New_York" Notice how you can pass the video as a URL instead of a file upload. This works with any publicly accessible video link, including Google Drive shared links.
Advanced: AI generated captions from your spreadsheet
You can take this further by adding an AI step between reading the sheet and posting. Instead of writing captions manually, include just a topic or brief note in your spreadsheet and let an LLM generate platform optimized captions.
Our n8n template for Google Drive to social media with AI descriptions does exactly this. It uses Gemini to generate tailored captions for each platform based on a short description you provide.
There's also a template that lets you generate and schedule posts with GPT-4 and get Telegram approval before they go live. Perfect for teams that want AI assistance but still need a human in the loop.
Adding platform specific captions
If you want different captions per platform, add extra columns to your sheet like "TikTok Caption", "Instagram Caption", etc. Then map them to the API's platform specific parameters:
tiktok_titlefor TikTok specific captions with hashtagsinstagram_titlefor Instagram with call to actionsyoutube_titleandyoutube_descriptionfor YouTube with SEO keywordslinkedin_titlefor LinkedIn with a professional tone
Use our character counter to make sure your captions fit within each platform's limits before adding them to the sheet.
Handling photos and carousels from the spreadsheet
The same approach works for images. Instead of a single video URL column, use multiple image columns or a comma-separated list of image URLs. Then use the /api/upload_photos endpoint instead:
curl -X POST https://api.upload-post.com/api/upload_photos \
-H "Authorization: Apikey your-api-key-here" \
-F "photos[][email protected]" \
-F "photos[][email protected]" \
-F "photos[][email protected]" \
-F "user=mybrand" \
-F "title=Our new collection" \
-F "platform[]=instagram" \
-F "platform[]=tiktok" Tracking results back in the spreadsheet
After the API returns a response, your automation tool should update the spreadsheet row with:
- Status changed from "ready" to "published" (or "failed" if something went wrong)
- Post URLs for each platform, so you can click through and verify
- Timestamp of when the post went live
This gives you a complete audit trail of every piece of content published, all in one place. No need to check each platform's dashboard individually.
Frequently asked questions
Can I use this with Google Drive videos directly?
Yes. The Upload-Post API accepts video URLs, so you can link directly to files in Google Drive (make sure the sharing is set to "Anyone with the link"). The n8n templates handle Google Drive authentication automatically.
What if a post fails for one platform but succeeds on others?
The API response includes individual results per platform. Your automation can update the spreadsheet with partial results, showing which platforms succeeded and which failed (with the error message).
Can multiple team members use the same spreadsheet?
Absolutely. That's one of the biggest benefits of this approach. Your content team fills in the rows, a manager changes the status to "ready" when approved, and the automation handles publishing. Everyone sees the status in real time.
How often does the automation check for new rows?
You configure this in n8n or Make.com. Common settings are every 15 minutes, every hour, or on a fixed daily schedule. In n8n, you can also trigger manually or use a webhook for instant processing.