A Shopify blog post generator from products in n8n turns your live catalog into a ready to review buying guide on a schedule, with no manual copy paste. Once a week the workflow pulls a collection, hands the product data to Google Gemini, and writes a clean HTML article straight into your Shopify blog as an unpublished draft. You skim it, tweak a line, and hit publish. This guide builds the whole thing, node by node, and explains where it beats the default of writing every post by hand.
What it does
The workflow runs on a weekly schedule and does five things in order. It reads the products in one Shopify collection through the Admin API, condenses them into a short product list, sends that list to Gemini with a copywriting prompt, saves the returned HTML as a draft article on your Shopify blog, and pings you on Telegram that a draft is waiting. Nothing goes live automatically. The article is created with published: false, so a human always approves the final wording before customers see it.
The output is a real blog post: a short intro, grouped product blurbs pulled from your actual titles, prices, and descriptions, and a closing line. It is the kind of “best of this collection” or seasonal gift guide that ranks for long tail queries and gives your email and social posts something to link to.
Why it beats the default
The default is a blank editor and a store owner who never quite finds an hour to fill it. Most Shopify blogs sit empty for months because writing product roundups by hand is slow and repetitive. This workflow removes the blank page. Gemini starts from your own catalog data, so the draft is specific to what you actually sell this week, not generic filler.
It also stays safe. Because every article lands as a draft, you keep full editorial control. The AI does the first 80 percent, you do the last 20 percent that matters: fact checks, brand voice, and the call to action. Compared with a paid content app, the running cost is close to zero on Gemini’s free tier, and you own the workflow instead of renting a black box.
What you need
- A running n8n instance, either n8n cloud or self hosted.
- A Shopify custom app access token with
read_productsandwrite_contentscopes. Set this up once using the 2026 Shopify Dev Dashboard method, which replaced the old admin custom app screen. - A Google Gemini API key. The free tier of
gemini-2.5-flashis enough for one post a week with room to spare. - A Telegram bot token and your chat ID for the review ping. You can swap this for Gmail or Slack if you prefer.
- The numeric ID of the Shopify collection you want to feature and the ID of your blog. Both are visible in the Admin API or the store admin URL.
This pattern is part of the wider set of Shopify automations you can run in n8n. If you have connected Shopify to n8n before, you already have most of the prerequisites.
Node-by-node list
- Weekly Schedule (Schedule Trigger): fires every Monday at 06:00.
- Get Collection Products (HTTP Request): GET to
/admin/api/2026-04/products.json?collection_id=...&limit=12with the Shopify access token credential. - Build Product List (Edit Fields): maps the products array into a single readable string of title, price, and a trimmed description for each item.
- Write Article with Gemini (HTTP Request): POST to the Gemini
generateContentendpoint with a prompt that asks for clean HTML using only h2, p, ul, and li tags. - Extract Article (Edit Fields): pulls the generated text out of the Gemini response, strips any stray code fences, and sets a dated title.
- Create Draft Article (HTTP Request): POST to
/admin/api/2026-04/blogs/BLOG_ID/articles.jsonwithpublished: false. - Notify on Telegram: sends a short message that a draft is ready to review.
Step-by-step build
- Add a Schedule Trigger node. Set the interval to weeks, trigger day Monday, hour 06. This is your publishing cadence, so adjust it to how often you want new drafts.
- Add an HTTP Request node named Get Collection Products. Method GET. URL
https://YOUR_STORE.myshopify.com/admin/api/2026-04/products.json?collection_id=YOUR_COLLECTION_ID&limit=12. Under Authentication choose Predefined Credential Type, then Shopify Access Token API, and select your credential. - Add an Edit Fields node named Build Product List. Add one string field called
product_listand paste this expression:{{ $json.products.map(p => p.title + ' (' + p.variants[0].price + ' USD): ' + (p.body_html ? p.body_html.replace(/<[^>]+>/g, '').trim().slice(0, 140) : 'no description')).join('n') }}. This flattens the catalog into one clean block of text for the prompt. - Add an HTTP Request node named Write Article with Gemini. Method POST. URL
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent. Authentication Predefined Credential Type, then Google Gemini (PaLM) API. Turn on Send Body, set Body Content Type to JSON, and in JSON put an expression that wraps your prompt: ask for a friendly buying guide in clean HTML with only h2, p, ul, and li tags, then append+ $json.product_list. - Add an Edit Fields node named Extract Article. Add a string field
article_htmlset to{{ $json.candidates[0].content.parts[0].text.replace(/```html/g, '').replace(/```/g, '').trim() }}, and a second fieldarticle_titleset to{{ 'Buying Guide — ' + $now.format('LLLL yyyy') }}. - Add an HTTP Request node named Create Draft Article. Method POST. URL
https://YOUR_STORE.myshopify.com/admin/api/2026-04/blogs/YOUR_BLOG_ID/articles.json, same Shopify credential. Send Body on, JSON, with an expression that builds{ "article": { "title": ..., "body_html": ..., "published": false } }from the two fields above. - Add a Telegram node named Notify on Telegram. Operation Send Message, set your chat ID, and write a short text that includes
{{ $json.article.title }}so you know which draft landed. - Wire the nodes in a single line from the trigger to Telegram, then run once manually to confirm a draft appears under Online Store, Blog posts in Shopify. When it looks right, activate the workflow.
Common mistakes
Setting published to true. Keep it false so nothing goes live without a human read. AI copy needs a quick fact check on prices and claims before it faces customers.
Using the wrong access scopes. Reading products needs read_products, and creating an article needs write_content. A token missing either scope returns a 403 and the run fails at the offending node.
Forgetting the collection ID or blog ID. The URLs use numeric IDs, not handles. Pull them from the Admin API or from the store admin URL, and paste the exact number.
Letting Gemini return markdown. Some responses wrap the HTML in a fenced code block. The Extract Article node strips ```html and ``` for that reason. Keep those replacements in place.
Cost at realistic volume
At one post a week the workflow is effectively free. A weekly run makes one Gemini call of a few thousand tokens, which sits comfortably inside the free tier of gemini-2.5-flash. The two Shopify Admin API calls and the Telegram message cost nothing. Even at a daily cadence, roughly 30 short generations a month, you stay within free limits for most stores. Your only real cost is the minute you spend approving each draft, and that is the point: you trade an hour of writing for a minute of editing.
Ready-to-import template
The guide above is free to follow end to end. If you would rather skip the build, the ready to import template is the same workflow, validated and wired, with placeholder credentials you swap for your own.
Want it installed and tuned to your store, collections, and brand voice? Our done-for-you setup service builds and hands it over running.
FAQ
Does this publish blog posts automatically?
No. Every article is created as a draft with published: false. The workflow writes the copy and files it in your Shopify blog, but a human opens it, checks the prices and claims, edits the voice if needed, and clicks publish. That keeps AI copy from reaching customers unreviewed.
Which AI model does it use?
Google Gemini, specifically gemini-2.5-flash on the free tier. One post a week is a single small call, well inside free limits. You can point the HTTP Request node at another model, but Gemini flash keeps the cost at zero for typical volumes without sacrificing quality.
Can I feature a specific collection each week?
Yes. The Get Collection Products node filters by a numeric collection_id, so it only pulls the products in that collection. Change the ID to feature a seasonal collection, new arrivals, or a clearance group. You can also duplicate the branch to cover several collections.
Do I need to connect Shopify to n8n first?
Yes. You need a Shopify access token with read_products and write_content scopes, created through the 2026 Dev Dashboard method. Follow the connect Shopify to n8n guide once, then reuse the same credential in both HTTP Request nodes here and in any other Shopify workflow.
What if I do not use Telegram?
Swap the final node for a Gmail or Slack node. The review ping just tells you a draft is ready, so any channel works. Point it at whichever inbox you actually watch, and include the article title so you know which draft to open in Shopify admin.
Related guides
- Connect Shopify to n8n in 2026
- Shopify AI product description generator
- More Shopify automation guides
- All ready-to-import n8n templates