GitHub 趋势数据至 Supabase(每日、每周、每月)
中级
这是一个Engineering, Multimodal AI领域的自动化工作流,包含 12 个节点。主要使用 Set, SupabaseTool, Agent, ScheduleTrigger, LmChatOpenAi 等节点。 使用FireCrawl、GPT和Supabase自动化GitHub趋势数据收集
前置要求
- •Supabase URL 和 API Key
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "4WG3MooFcMpSGdlq",
"meta": {
"instanceId": "4dc97d9369798c1d4aa77b1cd537e868761188a85f69db17f36f47212fb2a168",
"templateCredsSetupCompleted": true
},
"name": "GitHub 趋势数据至 Supabase(每日、每周、每月)",
"tags": [],
"nodes": [
{
"id": "b758abe6-6889-4723-91bb-3140b3b4c5fb",
"name": "AI 代理",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
96,
512
],
"parameters": {
"text": "=This is a Markdown text containing multiple projects:\n---\n{{ $json.data.markdown }}\nPlease extract all project information and insert it into Supabase.\nWhen storing the data, make sure to include the field \"type\" with the value from:\n{{ $('B_ALL').item.json.type }}\n,\nwhich will be one of: \"daily\", \"weekly\", or \"monthly\".\nnow, please extract all projects out and save to supabase.",
"options": {
"systemMessage": "You are a professional data extraction assistant.\nYour task is to extract all key information from the provided Markdown text, which contains multiple GitHub Trending projects.\n\nPlease follow these rules strictly:\n\t1.\tIdentify all projects:\nLocate each individual project in the text. Projects are typically separated by a horizontal divider ---.\n\t2.\tFor each project, extract the following fields:\n\t•\tname: The project name in the format \"username/repository\".\n\t•\turl: The GitHub URL of the project.\n\t•\tdescription: The project description.\n\t•\tlanguage: The main programming language of the project. If not provided, use an empty string \"\".\n\t•\tstars: The total number of stars. This must be a number, and all thousand separators (such as commas) must be removed. If not provided, set to 0.\n\t3.\tOutput format:\nYour output must be a JSON array only. Each element in the array must be a JSON object representing a single project.\n\t4.\tNo extra content:\nDo not include any extra text, explanations, or Markdown syntax (e.g., ```json) before or after the JSON array.\n\nExample output format:\n[\n{\n“name”: “user1/repo1”,\n“url”: “https://github.com/user1/repo1”,\n“description”: “This is the first project.”,\n“language”: “TypeScript”,\n“stars”: 12000\n},\n{\n“name”: “user2/repo2”,\n“url”: “https://github.com/user2/repo2”,\n“description”: “This is the second project.”,\n“language”: “Python”,\n“stars”: 5432\n}\n]\n"
},
"promptType": "define"
},
"executeOnce": false,
"notesInFlow": false,
"typeVersion": 2.2,
"alwaysOutputData": false
},
{
"id": "37cb081c-e9d4-43b9-930e-345652284f64",
"name": "在 Supabase 中创建行",
"type": "n8n-nodes-base.supabaseTool",
"position": [
232,
736
],
"parameters": {
"tableId": "githubtrending",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "url",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', `github project url`, 'string') }}"
},
{
"fieldId": "project_id",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues1_Field_Value', `github project id name like: ubicloud / ubicloud`, 'string') }}"
},
{
"fieldId": "project_desc",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues2_Field_Value', `github project description`, 'string') }}"
},
{
"fieldId": "code_language",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues3_Field_Value', `project main code language`, 'string') }}"
},
{
"fieldId": "stars",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues4_Field_Value', `github stars`, 'string') }}"
},
{
"fieldId": "type",
"fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues5_Field_Value', `it should be one of daily, weekly, monthly`, 'string') }}"
}
]
}
},
"credentials": {
"supabaseApi": {
"id": "z3RM2DPoUvufetDy",
"name": "Supabase account"
}
},
"typeVersion": 1
},
{
"id": "57f0b1a1-1939-4f2a-8261-68f56a918462",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
104,
736
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "cKHFKOqinjSe6CNy",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "0de487de-b268-43c3-83ef-96b5bb931988",
"name": "每日",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-800,
320
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "40691357-cc3a-4394-a7f7-532f40b351d9",
"name": "每周",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-800,
512
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "7e66eea9-6840-4620-8fd4-81cd34be19c4",
"name": "每月",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-800,
704
],
"parameters": {
"rule": {
"interval": [
{
"field": "months"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "0145707f-6da7-4771-bf26-9226ee11d668",
"name": "firecrawl",
"type": "@mendable/n8n-nodes-firecrawl.firecrawl",
"position": [
-128,
440
],
"parameters": {
"url": "=https://github.com/trending?since={{ $json.type }}",
"operation": "scrape",
"useCustomBody": true,
"requestOptions": {},
"additionalFields": {
"customProperties": "{\"onlyMainContent\":true,\"excludeTags\":[\".Box .Box-header\"],\"includeTags\":[\"div[data-hpc]\"]}"
}
},
"credentials": {
"firecrawlApi": {
"id": "2DUTgKK9MedK9fng",
"name": "Firecrawl-local"
}
},
"typeVersion": 1
},
{
"id": "b8c5d470-e2a4-41ca-be24-e42790c3b5f3",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
416
],
"parameters": {
"width": 672,
"height": 400,
"content": "# 在 Supabase 中运行以下 SQL 创建表:"
},
"typeVersion": 1
},
{
"id": "733f7a6a-c56e-46ed-96cf-cc368859c954",
"name": "B1",
"type": "n8n-nodes-base.set",
"position": [
-576,
320
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "64eaadea-d7f3-4702-859e-1ef5172272ae",
"name": "type",
"type": "string",
"value": "daily"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "69dc9a35-d23f-4858-ade6-625a15b4b189",
"name": "B2",
"type": "n8n-nodes-base.set",
"position": [
-576,
512
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d5d776f5-466b-4bca-a2d3-49eaa52322b1",
"name": "type",
"type": "string",
"value": "weekly"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "bca85759-c41d-43c7-9eb8-11e02ddba632",
"name": "B3",
"type": "n8n-nodes-base.set",
"position": [
-576,
704
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9f2e7822-ca0f-4fec-b68e-a803647ee115",
"name": "type",
"type": "string",
"value": "monthly"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ac379357-4ae9-4617-9fd5-9c5d36c1a4b5",
"name": "B_ALL",
"type": "n8n-nodes-base.set",
"position": [
-352,
512
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8fd79ceb-392b-4265-9b54-c2fef43be6fa",
"name": "type",
"type": "string",
"value": "={{ $json.type }}"
}
]
}
},
"typeVersion": 3.4
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "09ca306d-3fa0-46b2-804c-f02026ec2613",
"connections": {
"B1": {
"main": [
[
{
"node": "B_ALL",
"type": "main",
"index": 0
}
]
]
},
"B2": {
"main": [
[
{
"node": "B_ALL",
"type": "main",
"index": 0
}
]
]
},
"B3": {
"main": [
[
{
"node": "B_ALL",
"type": "main",
"index": 0
}
]
]
},
"B_ALL": {
"main": [
[
{
"node": "firecrawl",
"type": "main",
"index": 0
},
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"daily": {
"main": [
[
{
"node": "B1",
"type": "main",
"index": 0
}
]
]
},
"weekly": {
"main": [
[
{
"node": "B2",
"type": "main",
"index": 0
}
]
]
},
"monthly": {
"main": [
[
{
"node": "B3",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[]
]
},
"firecrawl": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create a row in Supabase": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 工程, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
解析POML
使用零依赖将POML转换为AI就绪提示和聊天消息
Set
Code
Manual Trigger
+3
10 节点RealSimple Solutions
工程
导出_dian-memo_03
AI语音与文本笔记 - 集成LINE消息、Supabase向量数据库和Gmail
If
Set
Code
+14
30 节点kote2
AI RAG 检索增强
内容生成器 v3
AI驱动博客自动化:使用GPT-4生成并发布SEO文章至WordPress和Twitter
If
Set
Code
+25
144 节点Jay Emp0
内容创作
## 适用对象
AI驱动的每日LinkedIn帖子创建器,集成OpenAI反馈循环和Notion
Set
Notion
Linked In
+12
28 节点Nabin Bhandari
社交媒体
面向财务与会计的 AI 驱动发票提醒与付款追踪器
基于AI的发票提醒与付款追踪器,专为财务与会计设计
If
Set
Code
+8
35 节点Oneclick AI Squad
发票处理
基于AI的WhatsApp客户服务(GPT-4、智能路由与知识库)
基于AI的WhatsApp客户服务(GPT-4、智能路由与知识库)
Set
Gmail
Merge
+19
45 节点Paul
AI 聊天机器人
工作流信息
难度等级
中级
节点数量12
分类2
节点类型7
作者
Cai Yongji
@caiyongjiAI startup/ indie developer/ solo founder/ super individual/ one-person business/ Google TFUG Organizer
外部链接
在 n8n.io 查看 →
分享此工作流