Nanosaur2-670M
well9472 · Kit
Makes illustrations from text prompts with a small 670M-parameter diffusion model, run through ComfyUI. Built as a low-budget research model for people who wan…
An n8n workflow that writes a social post or a blog draft from a request sent to a webhook. It searches the web with Tavily, reads recent Instagram posts through Apify, writes with OpenAI, and logs each piece with an image link in Google Sheets.
Social post and blog writer with web research is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Webhook request
It starts when something sends a POST request to the webhook with:
A written post or blog draft with an image link, logged in your sheet and returned to the caller
What you need before you start.
Writing and decisions
Writes the search query, the summaries, the plan and the finished post, and decides which kind of piece you asked for.
NeedsOpenAI API key
Web search
Finds an article on your topic for the workflow to read.
NeedsTavily API key
Instagram scraping
Runs its Instagram post scraper for the accounts you list and returns their recent posts.
NeedsApify API token
Content log
Receives one row for each finished piece, with its platform, title, caption, image link and date.
NeedsGoogle account connected with OAuth, and a sheet with five column headings
Checked by Mindket on 13 Nov 2026
This n8n workflow writes a social post or a blog draft after doing some research. You send a request to a webhook. OpenAI turns it into a search query, Tavily finds an article, and the workflow reads that article and summarizes it. Apify’s Instagram scraper then reads recent posts from accounts you choose, and a second summary covers what they talk about. A third step merges both summaries and decides whether you asked for a blog post. A blog request goes through a planner and a writer. Anything else goes to an agent that writes a post for the platform you name. Either way an image comes from a sub-workflow of your own, and a row lands in Google Sheets.
Social media managers, small marketing teams and solo creators who need regular posts, plus the odd blog draft, shaped by what is being said in their niche this week. Nothing is published for you. The result is a row to review.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Marketing agencies | Social media managers | Point the Instagram list at the accounts of a client’s niche and send one request per platform | A manager asks for an Instagram post about composting at home and gets a caption, an image link and a sheet row. |
| Publishers and newsletters | Editors | Ask for a blog draft built on a current article and on what a niche’s audience reacts to | An editor asks for a blog post on a trending topic and finds a written draft with a title in the sheet. |
| Small businesses | Owners who post themselves | Keep a sheet of ready posts, one row each, and copy the ones they like | An owner builds up a week of posts and picks from the sheet. |
| Creators | Solo creators | Aim the research at the accounts they compete with and ask for a post that answers them | A creator learns which topics drew comments and asks for a post on one of them. |
Skip it if you do not want to build the image sub-workflow, because the file leaves that out. It also never posts anything.
Any n8n that can reach Tavily, Apify, OpenAI and Google, and that the caller can reach back.
Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Have these ready before you import it.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key |
| Tavily | An API key |
| Apify | An account and an API token |
| Google Sheets | A sheet whose first row holds Platform, Title, Caption, Image and Date |
| An image workflow | A sub-workflow of your own that takes a description and returns an image link |
workflow.json.HTTP Request, replace <YOUR_TAVILY_API_KEY> after Bearer with your Tavily key.HTTP Request1, put your Apify token where the address says <YOUR_APIFY_TOKEN>, and the Instagram accounts you want to learn from in place of the four YOUR_INSTAGRAM_ACCOUNT names.Google Sheets and Google Sheets1, put your spreadsheet ID where it says YOUR_SHEET_ID and pick the sheet.Image gen and Image gen1.Webhook a first request.The sub-workflow is not in the file. Its two tool nodes pointed at a workflow in its author’s own n8n, so they arrive empty and marked red. Yours receives one field and returns the image’s address:
{
"description": "<what the picture should show>"
}Send a POST request with a JSON body that holds a message. The caller waits for the whole run, which includes a synchronous Apify run, so give it a generous timeout.
| Your message | What runs | What lands in the sheet |
|---|---|---|
| Asks for a blog post | Planner, writer, then a step that picks a title and makes an image | Platform Blog, the title, the image link, and the whole post in Caption |
| Anything else | An agent makes the image first, then writes a caption with hashtags and a title | The platform you named, the title, the caption, the image link and the date |
A request, sent from a terminal:
curl -X POST https://YOUR-N8N-ADDRESS/webhook/a31cdf97-0036-4129-8921-3e9a971f2d13 \
-H "Content-Type: application/json" \
-d '{"message": "I want an Instagram post about composting at home"}'The request has no blog wording, so the agent path runs. It writes a caption with hashtags and a title, gets an image link from your sub-workflow, and adds a row whose Platform says Instagram. The same address answers with the agent’s result.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Notes on the canvas name the parts, such as Scraping google, Scraping Instagram, manipulating data, Generating blog post and Generating posts. Run it once from the webhook’s test address and read each node’s output in turn.
For experts. Most steps are OpenAI GPT-4.1 mini nodes with a short system message of their own, so each one can be tuned alone.
| Step | Part | What to know |
|---|---|---|
| Search query | gpt-4.1-mini | It is given the current date and told to output only the query |
| Research | Tavily, then an HTTP fetch and a Markdown node | Tavily is asked for one result, and the workflow fetches that page without a key |
| Apify instagram-post-scraper, run synchronously | Four accounts and a results limit of 20. Captions, comment counts and first comments are kept | |
| Blog check | gpt-4.1-mini | It must answer blog or not, and an If node tests for the exact word blog |
| Social post | An agent with the image tool and the Sheets tool | It makes the image, then writes, then logs |
Each request spends credit on several services, and its caller has to wait.
Is a blog post?, Planning agent and AI Agent read $json.body.message, yet each runs right after an OpenAI node, whose output has no body. If a first run shows your request missing there, point them at $('Webhook').item.json.body.messageAn n8n workflow. Send a request to its webhook and it researches the topic, then writes either a social post or a blog draft
and logs it in a Google Sheet with an image link.
workflow.json: the workflow as n8n exports it, 28 nodes, five of them sticky notes that label the sections. It holds no credential.README.md: these notes.workflow.json.HTTP Request. In its Authorization header, replace <YOUR_TAVILY_API_KEY> after Bearer with your Tavily key.HTTP Request1. In its address, put your Apify token where it says <YOUR_APIFY_TOKEN>. In its body, swap the fourYOUR_INSTAGRAM_ACCOUNT names for the accounts you want to learn from.Google Sheets and Google Sheets1, put your spreadsheet ID where it saysYOUR_SHEET_ID and pick the sheet.Image gen and Image gen1.Image gen and Image gen1 are tool nodes that call a sub-workflow. The original pointed at one in its author's own n8n, so
here they arrive empty. Your sub-workflow receives one field and returns the address of the picture it made:
{
"description": "<what the picture should show>"
}
Any image service works. Make the sub-workflow end with a node that outputs the link, so the agent can write it into the sheet.
Send a POST request to the webhook with a JSON body that holds a message:
{
"message": "I want an Instagram post about composting at home"
}
The caller waits for the whole run, which includes a synchronous Apify run, so give it a generous timeout.
query gen asks gpt-4.1-mini for one search query, given your message and the current date.HTTP Request sends that query to Tavily and asks for one result. HTTP Request3 fetches that page, Markdown turns itOpenAI summarizes it.HTTP Request1 runs Apify's Instagram post scraper for your accounts, with a limit of 20 results. Aggregate keeps eachOpenAI1 summarizes them.Summarise merges the two summaries into one brief.Is a blog post? answers blog or not, and If tests for the word blog.Planning agent, then Writing agent, then OpenAI4, which picks a title and an image prompt and can callAI Agent, which makes the image first, writes a caption with hashtagsRespond to Webhook or Respond to Webhook1 returns the result to the caller.Each run appends one row. For a social post, Platform is the platform you named. For a blog, Platform is Blog and Caption
holds the whole post.
| Column | Holds |
|---|---|
| Platform | The platform you named, or Blog |
| Title | The title the agent wrote |
| Caption | The caption with hashtags, or the whole blog post |
| Image | The link your image workflow returned |
| Date | The time of the run |
AI Agent, Planning agent and Writing agent.HTTP Request1, or ask Tavily for more results in HTTP Request.Respond to Webhook node to send the piece to a scheduler or a draft folder.Is a blog post?, Planning agent and AI Agent read $json.body.message, yet each runs right after an OpenAI node, whose output has no body. If a$('Webhook').item.json.body.message.If tests for the exact word blog in lowercase, so any other answer from the check sends the request down the social path.README.md 5 KB workflow.json 28 KB
well9472 · Kit
Makes illustrations from text prompts with a small 670M-parameter diffusion model, run through ComfyUI. Built as a low-budget research model for people who wan…
Waqf-AI · Kit
Reads handwritten Arabic text from images and returns it as text. A fine-tuned PaddleOCR-VL model for people digitizing Arabic handwriting.
Wan-AI · Kit
Makes video clips from a text prompt or an image plus text, at up to 720P and 24 frames per second, in the Diffusers format for a single consumer GPU.
nhathoangfoto · Kit
A LoRA for FLUX.2 Klein 9B that puts a character into the pose shown by a mannequin reference while keeping the character's face and style. For artists and des…
leejet · Kit
Generates images from text on modest GPUs, using quantized Z-Image-Turbo files made for stable-diffusion.cpp. For people who run image models on their own comp…
HiDream-ai · Kit
Generates images from text prompts with a 17B-parameter open model that scores at the top of the card's prompt-following tables. For designers, marketers and d…