This workflow corresponds to n8n.io template #7417 — we link there as the canonical source.
This workflow follows the Agent → Emailsend recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"id": "a821ae55-bb91-4a7b-9962-2cbe3c83ead9",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-208
],
"parameters": {
"width": 380,
"height": 440,
"content": "## Weekly Tutorial Generator\n\n**What it does:**\n\n**Author: David Olusola**\n- Scans GitHub for trending repos every Monday\n- Creates comprehensive tutorials based on hot projects\n- Generates step-by-step guides with code examples\n- Saves as drafts + emails you notifications\n\n**Setup Required:**\n1. Configure WordPress credentials\n2. Set up email credentials for notifications\n3. Optionally add GitHub token for higher API limits\n\n**Perfect for:**\n- Developer blogs\n- Programming education sites\n- Staying current with trending technologies\n- Building tutorial content library"
},
"typeVersion": 1,
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Tutorial Generator",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
{
"id": "8c8478b1-b8dd-486e-890b-06fc4653832b",
"name": "Weekly Monday 10AM",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
16,
80
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 10 * * 1"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "0fa5dbc6-78a8-4bf7-858a-b1789f2933ff",
"name": "Get Trending Repos",
"type": "n8n-nodes-base.httpRequest",
"position": [
240,
80
],
"parameters": {
"url": "https://api.github.com/search/repositories",
"options": {}
},
"typeVersion": 4.1
},
{
"id": "24c45e82-449d-42c7-a9b3-23a3771890ca",
"name": "AI Tutorial Generator",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
688,
80
],
"parameters": {
"options": {
"systemMessage": "You are a technical tutorial writer. Based on the provided GitHub repository information, create a comprehensive tutorial that teaches developers how to build something similar or use this technology. Include: 1) Introduction and overview, 2) Prerequisites, 3) Step-by-step implementation guide with code examples, 4) Best practices, 5) Common pitfalls to avoid, 6) Next steps and resources. Make it beginner-friendly but technically accurate. Format with proper markdown including code blocks."
}
},
"typeVersion": 2.2
},
{
"id": "428f39bc-ee5a-4a98-b15d-cb432eb67261",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
768,
304
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f7e650f7-ec34-4aa3-b534-8232dff02270",
"name": "Create Tutorial Post",
"type": "n8n-nodes-base.wordpress",
"position": [
1264,
80
],
"parameters": {
"title": "=Tutorial: Building with {{$json.name}} - {{$json.language}} Guide",
"additionalFields": {
"tags": [
"tutorial",
"{{$json.language}}",
"development",
"guide",
"{{$json.name}}"
],
"status": "draft",
"content": "",
"categories": [
"Tutorials",
"Programming",
"{{$json.language}}"
]
}
},
"typeVersion": 1
},
{
"id": "3b9f51a2-c4c0-49f5-b12c-161ec09754f7",
"name": "Notify Admin",
"type": "n8n-nodes-base.emailSend",
"position": [
1488,
80
],
"parameters": {
"options": {},
"subject": "=New Tutorial Draft Created: {{$json.name}}"
},
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "b7eb9512-221d-4347-83cb-ed37e9342672",
"name": "Split Repository Items",
"type": "n8n-nodes-base.splitOut",
"position": [
464,
80
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "5c38943d-e55a-490e-90e5-be4154243db3",
"name": "Parse the AI tutorial output",
"type": "n8n-nodes-base.code",
"position": [
1040,
80
],
"parameters": {
"jsCode": "const items = $input.all();\n\nreturn items.map(item => {\n // Parse the AI tutorial output\n let aiOutput = item.json.output;\n \n // Remove markdown code blocks if present\n aiOutput = aiOutput.replace(/```json\\s*/, '').replace(/```\\s*$/, '');\n \n // Try to parse as JSON, fallback to using the content directly\n let parsedOutput;\n try {\n parsedOutput = JSON.parse(aiOutput.trim());\n } catch (e) {\n // If not JSON, treat as plain markdown content\n parsedOutput = {\n title: `Tutorial: Building with ${item.json.name} - ${item.json.language} Guide`,\n content: aiOutput\n };\n }\n \n return {\n json: {\n title: parsedOutput.title || `Tutorial: Building with ${item.json.name} - ${item.json.language} Guide`,\n content: parsedOutput.content || aiOutput,\n repoName: item.json.name,\n language: item.json.language,\n description: item.json.description,\n url: item.json.html_url,\n stars: item.json.stargazers_count\n }\n };\n});"
},
"typeVersion": 2
}
],
"connections": {
"Get Trending Repos": {
"main": [
[
{
"node": "Split Repository Items",
"type": "main",
"index": 0
}
]
]
},
"Weekly Monday 10AM": {
"main": [
[
{
"node": "Get Trending Repos",
"type": "main",
"index": 0
}
]
]
},
"Create Tutorial Post": {
"main": [
[
{
"node": "Notify Admin",
"type": "main",
"index": 0
}
]
]
},
"AI Tutorial Generator": {
"main": [
[
{
"node": "Parse the AI tutorial output",
"type": "main",
"index": 0
}
]
]
},
"Split Repository Items": {
"main": [
[
{
"node": "AI Tutorial Generator",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Tutorial Generator",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Parse the AI tutorial output": {
"main": [
[
{
"node": "Create Tutorial Post",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApismtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the process of creating technical tutorials for your blog. It runs on a weekly schedule, automatically identifies trending GitHub repositories, uses an AI to generate a detailed tutorial for each one, and then saves the content as a draft post on your…
Source: https://n8n.io/workflows/7417/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow is for beauty salons who want consistent, high‑quality social media content without writing every post manually. It also suits agencies and automation builders who manage multiple beauty
An end-to-end Cyber Threat Intelligence pipeline that turns raw DNS traffic into actionable security verdicts — without manual triage, without leaking credentials, and without alert fatigue.
N8N. Uses lmChatGoogleGemini, toolCode, httpRequest, emailSend. Scheduled trigger; 27 nodes.
The system uses a three-stage pipeline architecture: automated paper retrieval from ArXiv's API AI-powered relevance filtering and analysis via Google Gemini Intelligent summarization with HTML format
ERM Financiero Consolidado. Uses postgres, lmChatGoogleGemini, agent, outputParserStructured. Scheduled trigger; 20 nodes.