Skip to content
FlowHubFluxonLab
A
AI Automationfree

Publish science newsletter posts from YouTube using Ghost and Google Sheets

by Hesham Mashhouradapted from n8n official workflow galleryUpdated Aug 2026
RequiresAAI AgentAnthropic Chat ModelCCodeEmbeddings CohereEmbeddings CohereGoogle SheetsGoogle SheetsHTTP RequestHTTP RequestJina AIJina AIMistral Cloud Chat ModelMistral Cloud Chat ModelMoonshot Kimi Chat ModelMoonshot Kimi Chat ModelOpenAI Chat ModelOpenAI Chat ModelQdrant Vector StoreQdrant Vector StoreRedis Chat MemoryRedis Chat MemoryStructured Output ParserStructured Output Parser
Share Post Share
MaWhen clicking ‘Execute workflow’When clicking ‘…GCGlobal ConstantsGet KeywordsCoCode in JavaScriptCode in JavaScr…AgAI Agent2SILoop Over ItemsOPStructured Output Parser2Structured Outp…OpenAI Chat Model2OpenAI Chat Mod…Anthropic Chat Model1Anthropic Chat …MRRedis Chat Memory2Redis Chat Memo…Mistral Cloud Chat ModelMistral Cloud C…BSBrave Search2Update row in sheet1Update row in s…GCGlobal Constants5Global Constant…Get YouTube Videos2Get YouTube Vid…CoCode in JavaScript4Code in JavaScr…Update Keywords1Get YouTube Videos3Get YouTube Vid…CoBuild Search BriefBuild Search Br…AgSource Discovery AgentSource Discover…Mistral (Source Discovery)Mistral (Source…Claude (Source Discovery Fallback)Claude (Source …OPSource List Schema ParserSource List Sch…Mistral (Source Schema Fixer)Mistral (Source…CoDedup & Sort SourcesDedup & Sort So…SIFetch LoopJAJina ReaderBSBrave Search3GCGlobal Constants7Global Constant…Google Sheets - Get SELECTED VideoGoogle Sheets -…Google Sheets - Get KW RowGoogle Sheets -…QdDelete Old Qdrant CollectionDelete Old Qdra…WaWait for DeletionWait for Deleti…HRCreate Qdrant CollectionCreate Qdrant C…HRCohere EmbedQdQdrant UpsertMistral (Source Discovery)1Mistral (Source…Claude (Source Discovery Fallback)1Claude (Source …OPSource List Schema Parser1Source List Sch…Mistral (Source Schema Fixer)1Mistral (Source…CoCompile Blog BriefCompile Blog Br…VSQdrant Vector StoreQdrant Vector S…ECEmbeddings CohereEmbeddings Cohe…CoClean & Chunk Jina OutputClean & Chunk J…AgBlog Writer AgentBlog Writer Age…CoCode in JavaScript7Code in JavaScr…Append row in sheet5Append row in s…HRCall Webhook 4GCGlobal Constants8Global Constant…CoParse Blocks & Extract ImagesParse Blocks & …CoFan Out Image PlaceholdersFan Out Image P…BSBrave SearchCoTransform to Ghost BlocksTransform to Gh…CoPackage Image CandidatesPackage Image C…AgAI AgentOPStructured Output ParserStructured Outp…Mistral Cloud Chat Model3Mistral Cloud C…CoResolve Final ImageResolve Final I…MeMergeCoAggregate Resolved ImagesAggregate Resol…MeMerge1Google Sheets Read PENDING RowGoogle Sheets R…CoPatch Blocks & Prepare UpdatePatch Blocks & …Google Sheets UpdateGoogle Sheets U…HRHTTP RequestGoogle Sheets Update1Google Sheets U…Google Sheets Update2Google Sheets U…Mistral Cloud Chat Model4Mistral Cloud C…SoSortDelete rows or columns from sheetDelete rows or …Append row in sheetAppend row in s…HRCall WebhookScSchedule Trigger1Schedule Trigge…GCGlobal Constants4Global Constant…Get Keywords2CoRandom KW Selector1Random KW Selec…SILoop Over Items3Append row in sheet6Append row in s…CoCode in JavaScript9Code in JavaScr…HRCall Webhook 6Update Keywords4ApRun an Actor and get datasetRun an Actor an…CoCode in JavaScript8Code in JavaScr…WeWebhook6IfIf1WeWebhook8GCGlobal Constants9Global Constant…Get YouTube VideosGet YouTube Vid…CoCode in JavaScript10Code in JavaScr…AgAI Agent4OPStructured Output Parser4Structured Outp…Mistral Cloud Chat Model5Mistral Cloud C…Mistral Cloud Chat Model6Mistral Cloud C…CoCode in JavaScript11Code in JavaScr…Update Keywords5HRCall Webhook 7LCMoonshot Kimi Chat ModelMoonshot Kimi C…Get YouTube Videos5Get YouTube Vid…SoSort2Delete rows or columns from sheet2Delete rows or …Append row in sheet2Append row in s…WeWebhookWeWebhook112345678910111213
1/5
FLOWS
STEPS · 13
Run manually by an operator

Quick overview This workflow turns science keywords from Google Sheets into researched Ghost newsletter posts by discovering and screening YouTube videos with Apify, validating claims using Brave Search, storing sources in Qdrant with Cohere embeddings, drafting content with LLMs, and publishing via a custom Ghost HTTP endpoint. How it works Runs either manually to qualify “FAIR GAME” keywords from Google Sheets or on a schedule to start the automated publishing pipeline. Uses Brave Search with an LLM agent to research each keyword’s current context and writes a structured relevance, domain, and angle assessment back to the Keywords sheet. On schedule, randomly selects an eligible keyword, uses Apify’s YouTube Scraper to fetch recent videos with English transcripts, and appends normalized candidates to the Candidate Videos sheet. Scores each candidate’s virality from views, engagement, channel size, and publish age, marks rows as VIRAL or NOT VIRAL, and archives NOT VIRAL items to an Archive sheet.

Tags

n8nreference-onlyagentembeddings-coheregoogle-sheetsjina-ailm-chat-anthropiclm-chat-mistral-cloudlm-chat-moonshotlm-chat-open-aimemory-redis-chatoutput-parser-structuredvector-store-qdrant
Connects
AAI AgentAnthropic Chat ModelCCodeembeddingscohereEmbeddings CoheresheetsGoogle SheetsWHTTP Request
CategoryAI Automation
Triggermanual
Complexityadvanced
Nodes103
AddedJun 24, 2026

Related workflows

See all AI Automation
ACgmailsheets
free

Screen LinkedIn jobs and send tailored applications with Apify and OpenAI

Quick overview This workflow collects your job preferences via an n8n form, uses Apify to scrape LinkedIn job listings, and has OpenAI screen and rank them. After you approve a shortlist by Gmail, it generates tailored resume and cover-letter PDFs with DocRaptor, emails them to you, and logs matches to Sheets How it works Receives your job preferences and resume text through an n8n form submission. Sends the preferences to Apify to scrape recent LinkedIn jobs, then removes duplicates and obvious mismatches (seniority, years of experience, and location). Uses OpenAI to score each job’s relevance and eligibility and returns a JSON verdict with a fit score and short reason. Keeps the top matches above the configured threshold and emails you a shortlist in Gmail with approve/decline buttons. If you approve, uses OpenAI to draft a job-specific resume and cover letter from only the provided profile text and generates HTML interview prep questions. Converts the resume and cover letter HTML into PDFs via DocRaptor, emails the tailored application package to you in Gmail, and appends the match details to a Google Sheets tracker. Setup Add credentials for OpenAI, Gmail OAuth2, Google Sheets

by Dr. Firas
Agmailsheetsopenaichatmodel
free

Answer customer questions on WhatsApp with OpenAI, Gmail, and Google Sheets

Quick overview This workflow answers incoming WhatsApp customer questions using an OpenAI-powered agent that reads your live website via HTTP requests, escalates unclear or sensitive cases to your support team via Gmail, and logs each conversation to Google Sheets. How it works Triggers when a new WhatsApp message is received. Loads configuration values (company name, website root URL, AI model, language rules, escalation email, and WhatsApp phone number ID) and extracts the customer phone number and message text. Ignores non-text WhatsApp updates (such as images, audio, and status messages). Uses OpenAI with conversation memory to navigate your website by listing links and fetching relevant pages, then generates a structured result containing an answer, escalation flag, sentiment, topic, and source URLs. If the agent marks the request as needing a human, sends an escalation email via Gmail to your support address with the customer details and the drafted reply. Sends the final plain-text reply back to the customer on WhatsApp. Appends the conversation details to a Google Sheets log. Setup Connect credentials for WhatsApp Trigger/WhatsApp Cloud API, OpenAI, Gmail, and Google Sheets

by Dr. Firas
Agmailsheetsopenaichatmodel
free

Triage Gmail and draft replies with GPT-5 Mini and Google Sheets

Quick overview This workflow watches your Gmail inbox for new unread emails, uses OpenAI (GPT-5 Mini) to classify each message by priority and category, logs the triage results to Google Sheets, and creates a Gmail draft reply only when the email needs a personal response. How it works Triggers every minute when a new unread email arrives in Gmail. Applies your configured preferences (name, role, categories, and drafting style) to guide the triage. Sends the email content to OpenAI (GPT-5 Mini) to return a structured priority, category, one-line summary, whether a reply is needed, and an optional draft reply. Appends or updates a row in Google Sheets with the email details and triage results. If the email needs a reply, creates a draft reply in Gmail in the same thread addressed to the original sender. Setup Connect your Gmail account (Gmail Trigger and Gmail Draft) and ensure the trigger is set to monitor unread mail as desired. Add an OpenAI credential and select the GPT-5 Mini chat model in the OpenAI node. Connect Google Sheets OAuth credentials, then set the target spreadsheet document ID and sheet name for the triage dashboard. Create a Google Sheet with columns for Date, Fro

by Manik Chandra Dhor