🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets to GitHub, Jekyll posts published clean

Lisa Granqvist Partner Workflow Automation Expert

Content production breaks in boring places. A topic list lives in a spreadsheet, research is scattered across tabs, and publishing turns into a careful copy-paste routine you have to get “just right” every time.

This Jekyll post automation hits busy marketers hardest, but founders shipping thought leadership and agency teams managing client blogs feel it too. You end up spending an hour on process instead of writing, editing, or promotion.

This workflow turns a Google Sheets topic row into a clean Jekyll-ready Markdown file committed to GitHub, then marks the topic as done. You’ll see how it works, what you need, and where teams usually trip up.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets to GitHub, Jekyll posts published clean

The Problem: Jekyll publishing turns into spreadsheet chaos

It sounds simple: pick a topic, research it, write the post, and publish. In practice, the “simple” part dies the moment you need consistent front matter, correct filenames, the right _posts/ path, and a reliable way to track what’s done. One person updates the sheet, another person publishes late, and suddenly you have duplicates, missing dates, or posts that build locally but break on GitHub Pages. Worst part, honestly: you can’t tell if the bottleneck is writing or the process around it.

The friction compounds.

  • You lose about 30 minutes per post just doing research “setup” across tabs and sources.
  • Front matter drifts over time, which means inconsistent categories, tags, and excerpts.
  • GitHub commits become a manual ceremony, so posts sit in draft purgatory for days.
  • Spreadsheet status tracking is easy to forget, so your “pipeline” is never accurate.

The Solution: Google Sheets → researched draft → GitHub commit

This n8n workflow takes your topic backlog in Google Sheets and turns it into publishable Jekyll posts, without you stitching the pieces together by hand. It starts on a schedule, grabs the next row where status is blank, then pulls the title out as the “source of truth.” From there it collects context using Tavily search and (optionally) Wikipedia, condenses that research into something the AI can actually use, and asks Gemini to generate a Markdown post with YAML front matter. Finally, it builds a filename and commit message, commits the .md file into your GitHub repo’s _posts/ directory, and marks the Google Sheet row as done when the commit succeeds.

It begins with a scheduled trigger and a single “next topic” lookup in Google Sheets. Research and summarization happen in the middle, so the AI isn’t guessing. The output is a Jekyll-ready Markdown file in GitHub, ready for GitHub Pages to build.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you publish 3 technical posts a week from a Google Sheets backlog. Manually, you might spend about 30 minutes gathering sources, another 20 minutes formatting Markdown and YAML front matter, then 10 minutes to commit, place the file correctly, and update the sheet. Call it about 1 hour per post. With this workflow, you spend maybe 5 minutes maintaining the topic row, then wait for the run to finish and do a quick editorial pass. That’s roughly 2 to 3 hours back every week, and your GitHub history stays clean.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your topic list and status tracking
  • GitHub to store posts in your Jekyll repo
  • Tavily API key (get it from your Tavily dashboard)
  • Gemini API key (get it from Google AI Studio / Google Cloud)

Skill level: Intermediate. You’ll connect credentials, confirm repo paths, and tweak a prompt, but you won’t be writing code unless you want deeper customization.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A schedule kicks things off. The workflow runs daily (or on whatever cadence you set) so your content engine keeps moving even when your calendar doesn’t.

A single topic row becomes the input. n8n reads Google Sheets, finds the next row where status is blank, and isolates the title so every downstream step stays aligned.

Research is gathered, then condensed. Tavily pulls relevant sources for the topic, Wikipedia can add background context, and a summarization step turns that pile of text into a tight brief Gemini can use.

Gemini writes, GitHub publishes. The AI generates Markdown with YAML front matter, n8n sets the filename and commit details, then commits the file to your repo’s _posts/ directory. After a successful commit, the Google Sheet row is marked done.

You can easily modify the prompt and filename pattern to match your site and editorial rules. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Trigger

Set the schedule that starts the automation so it can pull the next blog topic every day.

  1. Add and open Scheduled Automation Trigger.
  2. Set the schedule rule so it runs daily at Trigger At Hour 9.
  3. Confirm the workflow timezone matches your desired schedule (this workflow uses Asia/Kolkata).

If you want multiple posts per day, add more schedule entries in Scheduled Automation Trigger.

Step 2: Connect Google Sheets

Pull an unpublished topic from a spreadsheet and later update its status to “done.”

  1. Open Retrieve Topic from Sheet and select your spreadsheet.
  2. Set Document to YOUR_GOOGLE_SHEETS_DOCUMENT_ID and Sheet to gid=0.
  3. Keep the filter so status equals = to target rows awaiting processing.
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials.
  5. Open Update Sheet Status Done, set Operation to update, and map status to done and row_number to {{$json.row_number}}.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheet Status Done.

⚠️ Common Pitfall: The update node relies on row_number; make sure your sheet includes this column and that it is returned by Retrieve Topic from Sheet.

Step 3: Prepare the Topic and Research Context

Normalize the topic, run a web search, and condense the top results into a compact context block.

  1. In Isolate Topic Title, keep the assignment topic set to {{ $json.Title }}.
  2. Open Tavily Web Lookup and set Query to {{ $json.topic }}.
  3. Ensure options.search_depth is set to advanced for deeper results.
  4. Credential Required: Connect your tavilyApi credentials.
  5. In Condense Search Findings, keep the JavaScript that builds Topic and Context from the top three results.

Step 4: Set Up AI Writing with Gemini

Generate a fully formatted Markdown blog post using the condensed context and Wikipedia tool support.

  1. Open Gemini Chat Language Model and set Model Name to models/gemini-2.5-pro.
  2. Credential Required: Connect your googlePalmApi credentials in Gemini Chat Language Model.
  3. Open Compose Article via Gemini and keep Prompt Type set to define.
  4. Set Text to the template that injects {{$json["Topic"]}} and {{$json["Context"]}}.
  5. Keep the detailed systemMessage that defines YAML front matter and Markdown formatting.
  6. Confirm Retrieve Wikipedia Details is connected as an AI tool to Compose Article via Gemini.

AI tool nodes like Retrieve Wikipedia Details inherit credentials from the parent language model—ensure credentials are added to Gemini Chat Language Model, not the tool node.

Step 5: Configure GitHub Publishing

Build the Markdown file name and content, then commit it to your GitHub repository.

  1. In Assemble Commit File, set filePath to {{ $now.format('yyyy-MM-dd') }}-{{ $('Isolate Topic Title').item.json.topic.toLowerCase().replace(/ /g, '-') }}.md.
  2. Set fileContent to {{$json["output"]}}.
  3. Set commitMessage to Add blog post: {{ $('Retrieve Topic from Sheet').item.json.Title }}.
  4. Open Publish Post to GitHub and set Owner to YOUR_GITHUB_USERNAME and Repository to YOUR_REPOSITORY_NAME.
  5. Set File Path to _posts/{{ $json.filePath }}, File Content to {{ $json.fileContent }}, and Commit Message to {{ $json.commitMessage }}.
  6. Credential Required: Connect your githubOAuth2Api credentials.

⚠️ Common Pitfall: Ensure the repository supports Jekyll-style posts in the _posts directory and that the filename format matches your site generator rules.

Step 6: Test and Activate Your Workflow

Run a manual test to validate data flow, then activate the schedule for production.

  1. Click Execute Workflow to run a manual test from Scheduled Automation Trigger.
  2. Verify Retrieve Topic from Sheet returns a row and Isolate Topic Title outputs a topic.
  3. Check that Compose Article via Gemini outputs a full Markdown article and Publish Post to GitHub creates a file in _posts.
  4. Confirm Update Sheet Status Done sets the sheet row status to done.
  5. Toggle the workflow Active to enable the scheduled publishing cycle.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets OAuth credentials can expire or lack spreadsheet access. If topics stop loading, check the credential in n8n and confirm the sheet is shared with the connected Google account.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
  • GitHub OAuth permissions are easy to under-scope. If commits fail, check the GitHub app/token scopes and confirm the workflow is targeting the correct repo and _posts/ path.

Frequently Asked Questions

How long does it take to set up this Jekyll post automation?

About 45 minutes if your credentials and repo are ready.

Do I need coding skills to automate Jekyll post publishing?

No. You’ll mostly connect accounts and edit a prompt. The only “technical” part is confirming your Jekyll repo path and filename format.

Is n8n free to use for this Jekyll post automation workflow?

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 Tavily and Gemini API usage costs.

Where can I host n8n to run this automation?

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.

Can I customize this Jekyll post automation workflow for a different front matter template?

Yes, and it’s one of the best tweaks you can make. Update the instructions in the “Compose Article via Gemini” agent so the YAML matches your site (categories, tags, author, excerpt, even a table of contents). If you also want a different filename scheme, change it in the “Assemble Commit File” step where the path and commit message are prepared. Teams commonly add a custom slug field from the Google Sheet, force category defaults, and standardize excerpt length.

Why is my GitHub connection failing in this workflow?

Usually it’s OAuth scope or repo access. Reconnect the GitHub OAuth2 credential in n8n, confirm it can write to the target repository, and double-check the _posts/ path you’re committing into. If it fails only sometimes, rate limiting or a temporary GitHub outage can be the culprit, so look at the execution logs for the exact response.

How many posts can this Jekyll post automation handle?

On self-hosted n8n, it’s basically limited by your server and API quotas.

Is this Jekyll post automation better than using Zapier or Make?

Often, yes, because this flow needs a bit more than simple “A to B.” You’re pulling multiple sources, condensing research, generating long-form Markdown, and committing files into a specific repo path, which is where n8n’s flexibility helps. It also supports self-hosting, so you’re not paying more just because you run it daily. Zapier or Make can still work if you keep it very simple, but you may hit limits when the logic gets branching-heavy. Talk to an automation expert if you want a quick recommendation for your stack.

Once this is running, your spreadsheet stops being a graveyard of “someday topics” and starts behaving like a real publishing pipeline. The workflow handles the repetitive stuff. You handle the ideas and the final edit.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Launch login modal Launch register modal