Gemini + Reddit: turn any URL into ready posts
You find a great link, you mean to share it, and then you don’t. Because turning one URL into four good posts is oddly exhausting.
Content marketers feel it when the backlog of “to-share” articles keeps growing. Social media managers feel it when every platform needs a different tone. And founders trying to build a personal brand run into the same wall. This URL post automation turns a single link into platform-ready posts plus a clean screenshot.
Below you’ll see exactly what the workflow automates, what you get back (time, consistency, fewer mistakes), and the pieces you’ll need to run it reliably.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Gemini + Reddit: turn any URL into ready posts
flowchart LR
subgraph sg0["Manual Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Input Data", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Social Media Agent", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n4@{ icon: "mdi:web", form: "rounded", label: "HTTP Request1", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Upload Post X", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Upload Post Threads", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Upload Post Linkedin", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/reddit.svg' width='40' height='40' /></div><br/>Upload Post Reddit"]
n10@{ icon: "mdi:cog", form: "rounded", label: "Wait to approve by user", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If approved publish", pos: "b", h: 48 }
n4 -.-> n2
n0 --> n1
n1 --> n2
n2 --> n10
n11 --> n6
n11 --> n7
n11 --> n8
n11 --> n9
n10 --> n11
n3 -.-> n2
n5 -.-> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2,n5 ai
class n3 aiModel
class n11 decision
class n4 api
classDef customIcon fill:none,stroke:none
class n9 customIcon
The Problem: One Link Turns Into Four Separate Jobs
Sharing across X, LinkedIn, Threads, and Reddit looks simple until you actually do it. You’re rewriting the same idea four ways, checking character limits, hunting for a usable image, and then re-uploading that image over and over. Half the time you’re also second-guessing tone: too promotional for Reddit, too casual for LinkedIn, too long for X. And if you’re doing this a few times a week, it quietly steals hours that should go toward strategy, creative, or client work.
It adds up fast. Here’s where it usually breaks down.
- You write one “generic” caption, then spend another 20 minutes rewriting it for each platform anyway.
- Finding or creating a decent visual becomes its own mini-project, especially when the source site has no share image.
- Manual posting invites little errors, like wrong links, missing hashtags, or accidentally duplicating a post.
- Consistency suffers because the process is annoying, so you post less often than you intended.
The Solution: One URL In, Four Posts Out (With a Screenshot)
This n8n workflow takes a single URL and turns it into platform-specific social posts using Google Gemini. You start it manually (or on a schedule, if you prefer), paste in the link, and the AI agent reads the page and drafts separate copy for X, LinkedIn, Threads, and Reddit. In parallel, the workflow generates a clean webpage screenshot via ScreenshotOne, which becomes the post image for the platforms that support it. Then it pauses for approval so you can sanity-check the text and the link before anything goes public. Once approved, it publishes to X, LinkedIn, and Threads via upload-post.com, and sends the text-only version to Reddit through the Reddit node.
The flow starts with your URL and a few fields you set. Gemini produces structured drafts (so they don’t come back as a messy paragraph), a screenshot is captured, and the workflow waits. After approval, the same set of drafts get posted to each platform with the right formatting and tone.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you share 5 links per week across four platforms. Manually, you might spend about 10 minutes writing per platform (40 minutes), plus another 10 minutes grabbing an image and re-uploading it, so call it about 50 minutes per link. That’s roughly 4 hours a week. With this workflow, you paste the URL (2 minutes), skim the drafts during the approval step (5 minutes), and let publishing run. You’re closer to 30–40 minutes total for the week, not an afternoon.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Gemini for AI-generated platform-ready drafts
- ScreenshotOne to generate a clean webpage screenshot
- upload-post.com to publish to X, LinkedIn, and Threads
- Reddit to publish your community-focused post
- Google Gemini API key (get it from Google AI Studio)
- ScreenshotOne API key (get it from screenshotone.com)
- upload-post.com API token + user ID (get it from your upload-post dashboard)
Skill level: Intermediate. You’ll be connecting APIs, adding credentials, and testing the approval step end-to-end.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You launch it with a URL. The workflow starts from a manual trigger (or a schedule trigger if you enable it), then an “Assign Input Fields” step stores the URL and any other fields you want to carry through.
Gemini drafts the posts in a structured format. The Social Content Orchestrator uses the Gemini chat model plus an external fetch request to read the page and generate distinct copy for X, LinkedIn, Threads, and Reddit. A structured output parser keeps the results predictable, so each platform node receives the right text.
A screenshot is captured for the image-based platforms. The workflow calls ScreenshotOne to generate a clean image of the URL, which is then used by the upload-post publishing nodes (X, LinkedIn, and Threads).
You approve once, then it posts everywhere. The Wait node pauses the run, and an If node checks your approval decision. If you approve, the workflow publishes to X, Threads, and LinkedIn through upload-post.com, and sends the text version to Reddit via OAuth.
You can easily modify the approval logic to require a Slack or Sheets sign-off based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts on demand so you can generate and review posts before publishing.
- Add the Manual Launch Start node as the trigger.
- Click Execute Workflow later during testing to run the flow manually.
Step 2: Connect Input Data for Publishing
Define the workflow URL, account user ID, and ScreenshotOne key used across the publishing nodes.
- Open Assign Input Fields and set workflow_url to
https://flowpast.com(replace with your workflow page). - Set upload-post_user to
[YOUR_ID]to target your Upload-Post user ID. - Set ScreenshotOne_API_KEY to
[CONFIGURE_YOUR_API_KEY].
Step 3: Set Up the AI Content Generator
The AI agent builds platform-specific posts and uses a tool and parser connected under the hood.
- Open Social Content Orchestrator and keep the text prompt as-is if you want the multi-platform generation behavior.
- Confirm Gemini Chat Engine is connected as the language model and set modelName to
models/gemini-2.5-pro-preview-06-05. - Credential Required: Connect your
googlePalmApicredentials in Gemini Chat Engine. - Verify Structured Output Decoder is attached to Social Content Orchestrator with the JSON schema example shown in the node.
- Confirm External Fetch Request is connected as the tool for URL scraping and uses the URL expression
={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}.
Step 4: Configure Approval and Parallel Publishing
Posts are paused for review, then published to multiple platforms in parallel after approval.
- In Approval Hold Step, keep resume set to
formand formTitle set toReview the posts. - Keep the formDescription expression to display generated content:
={{ $('Social Content Orchestrator').item.json.output[0].content }}and related fields. - In Approval Branch Check, ensure the condition checks
={{ $('Approval Hold Step').item.json.decision }}equalsapprove. - Approval Branch Check outputs to both Publish to X, Publish to Threads, Publish to LinkedIn, and Publish to Reddit in parallel.
Step 5: Configure Output Destinations
Connect Upload-Post and Reddit credentials, and verify content and image mappings.
- Open Publish to X and set user to
={{ $('Assign Input Fields').item.json['upload-post_user'] }}, title to={{ $('Social Content Orchestrator').item.json.output[1].content }}, and photos to the ScreenshotOne URL expression. - Credential Required: Connect your
uploadPostApicredentials in Publish to X. - Open Publish to Threads and set title to
={{ $('Social Content Orchestrator').item.json.output[2].content }}with the same user and photos mappings. - Credential Required: Connect your
uploadPostApicredentials in Publish to Threads. - Open Publish to LinkedIn and set title to
={{ $('Social Content Orchestrator').item.json.output[0].content }}with the same user and photos mappings. - Credential Required: Connect your
uploadPostApicredentials in Publish to LinkedIn. - Open Publish to Reddit and set title to
={{ $('Social Content Orchestrator').item.json.output[3].title }}and text to={{ $('Social Content Orchestrator').item.json.output[3].content }}. Set subreddit ton8n. - Credential Required: Connect your
redditOAuth2Apicredentials in Publish to Reddit.
Step 6: Test and Activate Your Workflow
Run a full test to validate AI output, approval flow, and parallel publishing.
- Click Execute Workflow on Manual Launch Start to generate new content.
- Review the content in Approval Hold Step, choose approve, and submit the form.
- Confirm that posts are published in parallel by checking each platform’s account.
- When satisfied, toggle the workflow to Active for production use.
Common Gotchas
- Google Gemini credentials can expire or be tied to the wrong Google project. If things break, check the Gemini API key and billing status in Google AI Studio 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.
- upload-post.com tokens and user IDs are easy to mix up between environments. If X/LinkedIn/Threads fail while Reddit works, re-check the upload-post credentials in the three “Publish to …” nodes.
Frequently Asked Questions
About an hour if you already have the API keys ready.
No. You’ll mostly connect accounts and paste API keys into the right credential fields.
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 Gemini API usage, ScreenshotOne (free plan includes 100 screenshots/month), and your upload-post.com plan if you exceed their free tier.
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.
Yes, but you’ll do it by swapping the approval step. Log drafts to Google Sheets after the structured output parser, then replace (or extend) the Wait + If approval with a “status” field like Approved/Not approved. Common tweaks include adding a “brand voice” column, storing the final caption you actually posted, and saving the original URL as a searchable archive.
Usually it’s OAuth permissions or an expired token. Reconnect the Reddit OAuth2 credential in n8n, then confirm the account is allowed to post in the target subreddit (some require karma or manual approval). Also check that your subreddit name and post type are valid for that community. If it fails only during high volume, you may be hitting rate limits, so slow down runs or spread them out with the schedule trigger.
On self-hosted n8n, it’s mainly limited by your server and the API limits of Gemini, ScreenshotOne, and the platforms you publish to.
Often, yes, especially if you want a real approval hold, structured AI output, and the option to self-host community nodes (this template uses them). n8n is also nicer when you need branching logic without paying extra for every path. Zapier or Make can be quicker for very simple two-step posting, but they get awkward once you add “generate drafts, store them, wait for approval, then publish to four places.” If you’re unsure, run your real use case by someone who’s built these before. Talk to an automation expert and you’ll get a straight answer.
Set this up once, and sharing good links stops being a chore. The workflow handles the repetitive parts so you can focus on what you actually want to say.
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.