TheOddsAPI와 Airtable을 사용한 베팅 데이터 수집 자동화
중급
이것은Other분야의자동화 워크플로우로, 10개의 노드를 포함합니다.주로 Merge, Airtable, HttpRequest, ScheduleTrigger 등의 노드를 사용하며. Odds API를 사용한 스포츠 베팅 데이터 자동화
사전 요구사항
- •Airtable API Key
- •대상 API의 인증 정보가 필요할 수 있음
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "6sBxOuYYcJjIBmVJ",
"meta": {
"instanceId": "73d9d5380db181d01f4e26492c771d4cb5c4d6d109f18e2621cf49cac4c50763",
"templateCredsSetupCompleted": true
},
"name": "Automating Betting Data Retrieval with TheOddsAPI and Airtable",
"tags": [],
"nodes": [
{
"id": "3f7d9313-2a46-4869-a1f5-33976352961c",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-520,
-300
],
"parameters": {
"width": 300,
"height": 440,
"content": "The following triggers start the workflow at the Start of the day and the End of the day. Times can be adjusted to user's preference. "
},
"typeVersion": 1
},
{
"id": "a535c540-c186-466f-97e2-4d96d02c1f1d",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-100,
-660
],
"parameters": {
"color": 4,
"width": 460,
"height": 660,
"content": "Once activated, HTTP Requests pulls the upcoming data for the sport of the user's choosing. The following is set for Ice Hockey. More documentation can be found within the link below: \n\nhttps://the-odds-api.com/liveapi/guides/v4/#get-events\n\nIf you would like to add more data such as the sport books or odds, you can find documentation within the documentation below: \n\nhttps://the-odds-api.com/liveapi/guides/v4/#get-odds\n\nOnce the data is pulled, the records are created within the Airtable.\n"
},
"typeVersion": 1
},
{
"id": "29335df8-6aab-475c-8d8b-38b27eb66bb9",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
440,
-280
],
"parameters": {
"color": 3,
"width": 800,
"height": 540,
"content": "At the end of the day, the Schedule Trigger will activate a HTTP request for the scores of the events. This is set for Ice Hockey but can be adjusted for the user's preference. \n\nAfter the data is pulled, it will merge the data with upcoming events to combine the results matching the id. \n\nThe Airtable is then updated with the result records. This can be adjusted to pull in sports odds or the different sports book data. "
},
"typeVersion": 1
},
{
"id": "01134aa4-cc3c-42ed-bc96-f737f1434ed6",
"name": "아침 7시 데이터 가져오기 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-420,
-200
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c0b4c27f-bb17-4d85-a042-aa2db5060a6f",
"name": "저녁 11시 데이터 가져오기 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-420,
-20
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 23
}
]
}
},
"typeVersion": 1.2
},
{
"id": "0a38de6c-4f2e-46ba-8c10-8f12b0a4abe2",
"name": "당일 예정된 스포츠 이벤트 데이터 검색",
"type": "n8n-nodes-base.httpRequest",
"position": [
20,
-200
],
"parameters": {
"url": "=https://api.the-odds-api.com/v4/sports/icehockey_nhl/events?apiKey=60019f5ac82b8d5d508b2dc8393384c1",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "qbYtAoCFY2cLFvOU",
"name": "Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "28393bd9-17ed-48b1-ba6f-f62b51ce137c",
"name": "당일 예정된 이벤트 레코드 생성",
"type": "n8n-nodes-base.airtable",
"position": [
180,
-380
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appIXd8a8JeB9bPaL",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL",
"cachedResultName": "Untitled Base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbldpnP52opBEtKEy",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL/tbldpnP52opBEtKEy",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"id": "={{ $json.id }}",
"away_team": "={{ $json.away_team }}",
"home_team": "={{ $json.home_team }}",
"sports_key": "={{ $json.sport_key }}",
"sport_title": "={{ $json.sport_title }}",
"commence_time": "={{ $json.commence_time }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sports_key",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sports_key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sport_title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sport_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "commence_time",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "commence_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "home_team",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "home_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "away_team",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "away_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "completed",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "completed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "scores",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "scores",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_update",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "last_update",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "0ApVmNsLu7aFzQD6",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "086e599b-fc74-4ed5-a36f-fb80e385e625",
"name": "일일 종료 시 스포츠 결과 데이터 검색",
"type": "n8n-nodes-base.httpRequest",
"position": [
500,
20
],
"parameters": {
"url": "https://api.the-odds-api.com/v4/sports/icehockey_nhl/scores?daysFrom=1&apiKey=60019f5ac82b8d5d508b2dc8393384c1",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "qbYtAoCFY2cLFvOU",
"name": "Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "1b5ec6f2-d913-4005-89f0-d566e896c344",
"name": "ID 매칭으로 스포츠 결과와 예정 이벤트 레코드 결합",
"type": "n8n-nodes-base.merge",
"position": [
740,
-120
],
"parameters": {
"mode": "combine",
"options": {},
"fieldsToMatchString": "id"
},
"typeVersion": 3
},
{
"id": "f1765871-6f9e-416b-8ee8-696bc4dbf6bb",
"name": "스포츠 이벤트 점수 및 결과로 테이블 레코드 업데이트",
"type": "n8n-nodes-base.airtable",
"position": [
1020,
-60
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appIXd8a8JeB9bPaL",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL",
"cachedResultName": "Untitled Base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbldpnP52opBEtKEy",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL/tbldpnP52opBEtKEy",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"id": "={{ $json.id }}",
"scores": "={{ $json.scores }}",
"completed": "={{ $json.completed }}",
"last_update": "={{ $json.last_update }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sports_key",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sports_key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sport_title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sport_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "commence_time",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "commence_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "home_team",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "home_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "away_team",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "away_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "completed",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "completed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "scores",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "scores",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_update",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "last_update",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"id": "0ApVmNsLu7aFzQD6",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "bf20603b-eb12-4156-94fe-fb18ecf6a454",
"connections": {
"01134aa4-cc3c-42ed-bc96-f737f1434ed6": {
"main": [
[
{
"node": "0a38de6c-4f2e-46ba-8c10-8f12b0a4abe2",
"type": "main",
"index": 0
}
]
]
},
"c0b4c27f-bb17-4d85-a042-aa2db5060a6f": {
"main": [
[
{
"node": "086e599b-fc74-4ed5-a36f-fb80e385e625",
"type": "main",
"index": 0
}
]
]
},
"086e599b-fc74-4ed5-a36f-fb80e385e625": {
"main": [
[
{
"node": "1b5ec6f2-d913-4005-89f0-d566e896c344",
"type": "main",
"index": 1
}
]
]
},
"0a38de6c-4f2e-46ba-8c10-8f12b0a4abe2": {
"main": [
[
{
"node": "1b5ec6f2-d913-4005-89f0-d566e896c344",
"type": "main",
"index": 0
},
{
"node": "28393bd9-17ed-48b1-ba6f-f62b51ce137c",
"type": "main",
"index": 0
}
]
]
},
"1b5ec6f2-d913-4005-89f0-d566e896c344": {
"main": [
[
{
"node": "f1765871-6f9e-416b-8ee8-696bc4dbf6bb",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 기타
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Google 연락처와 Notion 양방향 동기화
双向동기화 Google 通讯录与 Notion
If
Set
Merge
+
If
Set
Merge
82 노드Solomon
기타
Upwork 구인 자동 알림
사용MongoDB및Slack자동보내기Upwork职位提醒
If
Set
Merge
+
If
Set
Merge
9 노드Artur
기타
GitHub(서브 폴더)에 작업 흐름을 백업
Github에 작업 흐름 백업(서브 폴더)
If
N8n
Set
+
If
N8n
Set
25 노드Nazmy
기타
GitHub에 작업 흐름을 백업
Github에 작업 흐름 백업
If
N8n
Set
+
If
N8n
Set
23 노드Solomon
기타
생일과 별자리 알림
生日및星历알림 (Google联系人、Telegram및Home Assistant)
If
Set
Code
+
If
Set
Code
26 노드Thibaud
기타
GPT-4와 Telegram을 통해 매일 AI 뉴스 번역 및 요약
GPT-4와 Telegram을 통해 발송된 일일 AI 뉴스 번역 및 요약
Set
Merge
Telegram
+
Set
Merge
Telegram
12 노드SamirLiu
기타
워크플로우 정보
난이도
중급
노드 수10
카테고리1
노드 유형5
저자
Marketing Canopy
@johnmarketingcanopyA results-driven Six Sigma Green Belt with 5 years of experience specializing in marketing process optimization, AI-powered data automation, and performance analytics. Adept at leveraging machine learning models, predictive analytics, and automation tools to enhance marketing efficiency, streamline workflows, and maximize ROI.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유