Données tendance GitHub vers Supabase (quotidien, hebdomadaire, mensuel)
Ceci est unEngineering, Multimodal AIworkflow d'automatisation du domainecontenant 12 nœuds.Utilise principalement des nœuds comme Set, SupabaseTool, Agent, ScheduleTrigger, LmChatOpenAi. Automatisation de la collecte des données tendance GitHub avec FireCrawl, GPT et Supabase
- •URL et Clé API Supabase
- •Clé API OpenAI
Nœuds utilisés (12)
Catégorie
{
"id": "4WG3MooFcMpSGdlq",
"meta": {
"instanceId": "4dc97d9369798c1d4aa77b1cd537e868761188a85f69db17f36f47212fb2a168",
"templateCredsSetupCompleted": true
},
"name": "GitHub Trending to Supabase (Daily, Weekly, Monthly)",
"tags": [],
"nodes": [
{
"id": "b758abe6-6889-4723-91bb-3140b3b4c5fb",
"name": "Agent IA",
"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": "Créer une ligne dans 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": "quotidien",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-800,
320
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "40691357-cc3a-4394-a7f7-532f40b351d9",
"name": "hebdomadaire",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-800,
512
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "7e66eea9-6840-4620-8fd4-81cd34be19c4",
"name": "mensuel",
"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": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
416
],
"parameters": {
"width": 672,
"height": 400,
"content": "# Run below sql to create table in supabase: \n```sql\nCREATE TABLE public.githubtrending (\n id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,\n created_at timestamp with time zone NOT NULL DEFAULT now(),\n data_date date DEFAULT now(),\n url text,\n project_id text,\n project_desc text,\n code_language text,\n stars bigint DEFAULT '0'::bigint,\n type text,\n CONSTRAINT githubtrending_pkey PRIMARY KEY (id)\n);\n```"
},
"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": {
"733f7a6a-c56e-46ed-96cf-cc368859c954": {
"main": [
[
{
"node": "ac379357-4ae9-4617-9fd5-9c5d36c1a4b5",
"type": "main",
"index": 0
}
]
]
},
"69dc9a35-d23f-4858-ade6-625a15b4b189": {
"main": [
[
{
"node": "ac379357-4ae9-4617-9fd5-9c5d36c1a4b5",
"type": "main",
"index": 0
}
]
]
},
"bca85759-c41d-43c7-9eb8-11e02ddba632": {
"main": [
[
{
"node": "ac379357-4ae9-4617-9fd5-9c5d36c1a4b5",
"type": "main",
"index": 0
}
]
]
},
"ac379357-4ae9-4617-9fd5-9c5d36c1a4b5": {
"main": [
[
{
"node": "0145707f-6da7-4771-bf26-9226ee11d668",
"type": "main",
"index": 0
},
{
"node": "b758abe6-6889-4723-91bb-3140b3b4c5fb",
"type": "main",
"index": 0
}
]
]
},
"0de487de-b268-43c3-83ef-96b5bb931988": {
"main": [
[
{
"node": "733f7a6a-c56e-46ed-96cf-cc368859c954",
"type": "main",
"index": 0
}
]
]
},
"40691357-cc3a-4394-a7f7-532f40b351d9": {
"main": [
[
{
"node": "69dc9a35-d23f-4858-ade6-625a15b4b189",
"type": "main",
"index": 0
}
]
]
},
"7e66eea9-6840-4620-8fd4-81cd34be19c4": {
"main": [
[
{
"node": "bca85759-c41d-43c7-9eb8-11e02ddba632",
"type": "main",
"index": 0
}
]
]
},
"b758abe6-6889-4723-91bb-3140b3b4c5fb": {
"main": [
[]
]
},
"0145707f-6da7-4771-bf26-9226ee11d668": {
"main": [
[
{
"node": "b758abe6-6889-4723-91bb-3140b3b4c5fb",
"type": "main",
"index": 0
}
]
]
},
"57f0b1a1-1939-4f2a-8261-68f56a918462": {
"ai_languageModel": [
[
{
"node": "b758abe6-6889-4723-91bb-3140b3b4c5fb",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"37cb081c-e9d4-43b9-930e-345652284f64": {
"ai_tool": [
[
{
"node": "b758abe6-6889-4723-91bb-3140b3b4c5fb",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Ingénierie, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Cai Yongji
@caiyongjiAI startup/ indie developer/ solo founder/ super individual/ one-person business/ Google TFUG Organizer
Partager ce workflow