Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
An n8n workflow that searches YouTube for a topic you type in n8n’s chat and keeps the videos from the past year that perform well. Each one that OpenAI finds on topic, with an English title, becomes a Google Sheets row with its views, likes and ratios.
Best-performing YouTube videos on a topic in Google Sheets 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.
Topic | Title | View Count | Like Count | Commet Count | Like Ratio | Comment Ratio | Views per day | Engagement Score | Days ago | Youtube URL
Chat message
It starts when you type a topic in n8n’s chat:
A sheet of the past year’s strongest videos on your topic, with their counts, ratios and links
What you need before you start.
Video search
Finds videos published in the last year and returns each one’s views, likes and comment count.
NeedsYouTube OAuth2 credential, and an optional YouTube Data API key
Title check
Runs gpt-4o-mini to answer Yes or No: is the title in English, and is it about your topic.
NeedsOpenAI API key
Results sheet
Appends a row per video with its title, counts, ratios, age and address.
NeedsGoogle Sheets OAuth2 credential, and your sheet’s ID
Checked by Mindket on 13 Nov 2026
This n8n workflow finds the YouTube videos on a topic that did well over the past year and logs them in a Google Sheet. You type the topic in n8n’s chat. The YouTube node searches for it, an HTTP request fetches each result’s statistics, and a Code node works out its age, views per day and engagement ratios. Videos that clear four thresholds go to OpenAI’s gpt-4o-mini, which keeps the ones with an English title on your topic. Each of those becomes a row with eleven columns. Nothing changes on YouTube.
YouTubers and strategists who choose topics by what already performs, and agencies that research niches for clients. It gives you a list of proven videos to study. It writes no titles or ideas of its own. Skip it for research in another language, since the AI check drops every title that is not in English.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Creators | YouTubers planning their next video | Type a topic before scripting and study what the top rows share | A cooking channel types air fryer recipes and sorts the sheet by views per day. |
| Agencies | Strategists who research niches | Run several topics for a client and compare the rows | An agency runs five topics for a new client and copies each set to its own tab. |
| Brand marketing | Teams that plan video campaigns | Check that a subject draws steady views before paying for videos on it | A software brand checks how videos on spreadsheet tips perform before it commits. |
| Education | Course makers | Find the lessons on a subject that viewers keep watching | A tutor runs a topic and reads the titles of the fastest-growing videos. |
| Sponsorships | Teams that pick creators to work with | Open the strongest videos from the Youtube URL column | A sponsor team lists the best videos on a topic and contacts the channels behind them. |
Any n8n that can reach Google and OpenAI will run it, on n8n Cloud or your own server. The results live in a spreadsheet, so sorting, filters, charts and sharing all happen in Google Sheets.
Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Its author puts setup at about 13 minutes. Make the sheet first: a tab named YT Topic Ideas with the eleven headers below in its first row.
Topic | Title | View Count | Like Count | Commet Count | Like Ratio | Comment Ratio | Views per day | Engagement Score | Days ago | Youtube URL
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Google Cloud | A project with the YouTube Data API v3 turned on, and an OAuth client for n8n’s YouTube credential |
| OpenAI | An API key, for the title check |
| Google Sheets | The sheet above, and a Google Sheets OAuth2 credential |
workflow.json.Get Videos and in Get Video Data.Get Video Data, replace YOUR_YOUTUBE_API_KEY in the query with a YouTube Data API key, or delete that row. The OAuth credential signs the call on its own.ChatGPT.Update Data to Sheet, then replace YOUR_SHEET_ID with the ID in your sheet’s address, between /d/ and the next slash.Commet Count is spelled that way in the node. Keep that spelling in the sheet, or fix it in both places.
Type a topic of a few words, as you would in YouTube’s search box. The search covers videos published in the last 12 months, ordered by relevance with moderate safe search. Every video that passes lands as a new row. A second run on the same topic adds its rows again, because the sheet node appends and never looks for a match.
| To change | Where |
|---|---|
| Thresholds | The four conditions in Filter Bad Videos |
| Time span | publishedAfter in Get Videos, which looks back one year |
| Order and safe search | The options of Get Videos |
| Language and relevance check | The prompt in Filter Title & Language |
| Columns | The mapping in Update Data to Sheet |
You type home espresso. Say one result has 250,000 views, 9,000 likes and 600 comments, and went up 100 days ago. The Code node gives it a like ratio of 3.60, an engagement score of 0.0384 and 2,500 views per day. All four thresholds pass. OpenAI answers Yes for its English title, and this row lands, trimmed here:
{ "Topic": "home espresso", "View Count": 250000, "Like Ratio": "3.60", "Comment Ratio": "0.24", "Engagement Score": "0.0384", "Views per day": 2500, "Days ago": 100 }If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one has 11 nodes and no sticky notes. A ratio here is a share, such as likes per hundred views. A credential is a key n8n keeps for you and hands to the node you pick it in. Try a narrow topic first, so the first run stays small.
For experts. Performance Ratio Calculation scores one item at a time, and two of its fields come out as strings with fixed decimals. Filter Bad Videos compares them with loose type validation. All four must hold.
| Field | Formula | Kept when |
|---|---|---|
viewCount | views | over 10,000 |
likeRatio | likes ÷ views × 100, two decimals | over 1.5 |
engagementScore | (likes + comments) ÷ views, four decimals | over 0.03 |
viewsPerDay | views ÷ days since publishing, rounded | over 1,000 |
Remove Duplicates compares whole items, so it only drops a video that came back twice with the same numbers. Filter Title & Language holds the model to {"Answer": "Yes or No"} through a structured parser, and the IF after it keeps an exact Yes. The Code node also counts likes per day, which no column takes.
The search can use up YouTube quota quickly, and repeat runs add duplicate rows.
Get Videos has Return All on, so it pages through every result YouTube offers, and a search costs far more quota than a lookup of one videoAn n8n workflow. Type a topic in n8n's chat, and it searches YouTube for videos on it from the past year. It keeps the
ones that perform well and have an English title on topic, and appends each to a Google Sheet.
workflow.json: the workflow as n8n exports it, 11 nodes. It holds no credential.YOUR_SHEET_ID, its tab is picked by the nameYT Topic Ideas, and the key placeholder in Get Video Data reads YOUR_YOUTUBE_API_KEY.README.md: these notes.YT Topic Ideas and these eleven headers in its first row: Topic, Title,View Count, Like Count, Commet Count, Like Ratio, Comment Ratio, Views per day, Engagement Score,Days ago, Youtube URL. The node spells Commet Count that way, so keep it, or fix it in both places.workflow.json.Get Videos and Get Video Data.Get Video Data, replace YOUR_YOUTUBE_API_KEY under Query Parameters with a YouTube Data API key from theChatGPT.Update Data to Sheet. Replace YOUR_SHEET_ID with the ID/d/ and the next slash.Performance Ratio Calculation works out these fields for each video, and Filter Bad Videos keeps a video only when
all four are over their limits:
| Field | How it is worked out | Kept when |
|---|---|---|
| viewCount | views | over 10,000 |
| likeRatio | likes ÷ views × 100 | over 1.5 |
| engagementScore | (likes + comments) ÷ views | over 0.03 |
| viewsPerDay | views ÷ days since it went up | over 1,000 |
The videos left go to Filter Title & Language, where gpt-4o-mini answers Yes only for an English title about your
topic.
Filter Bad Videos.publishedAfter in Get Videos looks back one year.Get Videos (relevance and moderate in the file).Filter Title & Language.Update Data to Sheet.Get Videos has Return All on, so it reads every page of results. Searches cost far more YouTube quota thanREADME.md 3 KB workflow.json 15 KB
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
nerijs · Kit
A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…
LiconStudio · Kit
Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…
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…