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 Trending to Supabase (Daily, Weekly, Monthly)",
"tags": [],
"nodes": [
{
"id": "b758abe6-6889-4723-91bb-3140b3b4c5fb",
"name": "AI Agent",
"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 채팅 모델",
"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": "Sticky Note",
"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
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 엔지니어링, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
POML 해석
POML을 AI 준비된 튜링 및 채팅 메시지로 변환하는 데 필요한 의존성 없이
Set
Code
Manual Trigger
+
Set
Code
Manual Trigger
10 노드RealSimple Solutions
엔지니어링
dian-memo_03 내보내기
AI 음성 및 텍스트 메모 - LINE 메시지, Supabase 벡터 데이터베이스 및 Gmail 통합
If
Set
Code
+
If
Set
Code
30 노드kote2
AI RAG
콘텐츠생성기 v3
AI驱动블로그자동화:사용GPT-4생성并게시SEO기사至WordPress및Twitter
If
Set
Code
+
If
Set
Code
144 노드Jay Emp0
콘텐츠 제작
## 적용 대상
AI 기반의 매일 LinkedIn 게시물 생성기, OpenAI 피드백 루프 및 Notion 통합
Set
Notion
Linked In
+
Set
Notion
Linked In
28 노드Nabin Bhandari
소셜 미디어
재무 및 회계를 위한 AI 기반 송장 알림 및 결제 추적기
재무 및 회계를 위해 설계된 AI 기반 송장 알림 및 결제 추적기
If
Set
Code
+
If
Set
Code
35 노드Oneclick AI Squad
청구서 처리
AI 기반 WhatsApp 고객 서비스(GPT-4, 스마트 라우팅 및 지식 베이스)
AI 기반 WhatsApp 고객 서비스(GPT-4, 스마트 라우팅 및 지식 베이스)
Set
Gmail
Merge
+
Set
Gmail
Merge
45 노드Paul
AI 챗봇
워크플로우 정보
난이도
중급
노드 수12
카테고리2
노드 유형7
저자
Cai Yongji
@caiyongjiAI startup/ indie developer/ solo founder/ super individual/ one-person business/ Google TFUG Organizer
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유