독일 아파트 찾기 및 자동 신청 (메모 기능 포함)
이것은Personal Productivity, Multimodal AI분야의자동화 워크플로우로, 22개의 노드를 포함합니다.주로 Set, Cron, Function, EmailSend, GoogleDrive 등의 노드를 사용하며. Immobilienscout24 및 Google 서비스 통합을 사용한 독일 아파트 자동 검색 및 신청
- •Google Drive API 인증 정보
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
{
"name": "Germany Apartment Finder & Auto-Apply (with Sticky Notes)",
"tags": [
"apartments",
"automation",
"germany",
"immobilienscout24"
],
"nodes": [
{
"id": "1",
"name": "Cron 트리거",
"type": "n8n-nodes-base.cron",
"position": [
250,
300
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2",
"name": "설정 구성",
"type": "n8n-nodes-base.set",
"position": [
450,
300
],
"parameters": {
"values": {
"string": [
{
"name": "CITY",
"value": "Berlin"
},
{
"name": "MAX_RENT",
"value": "1200"
},
{
"name": "ROOMS",
"value": "2"
},
{
"name": "MY_EMAIL",
"value": "your.email@example.com"
},
{
"name": "MY_NAME",
"value": "Max Mustermann"
},
{
"name": "GDRIVE_SCHUFA_FILE_ID",
"value": "your-schufa-file-id"
},
{
"name": "GDRIVE_SALARY_FILE_ID",
"value": "your-salary-file-id"
},
{
"name": "GOOGLE_SHEET_ID",
"value": "your-google-sheet-id"
}
]
}
},
"typeVersion": 1
},
{
"id": "3",
"name": "GeoID 조회",
"type": "n8n-nodes-base.function",
"position": [
650,
300
],
"parameters": {
"functionCode": "const geoidMap = { Berlin: 12770000 };\nconst city = $json[\"CITY\"] || \"Berlin\";\nreturn [{ json: { city, geoid: geoidMap[city] || geoidMap[\"Berlin\"] } }];"
},
"typeVersion": 1
},
{
"id": "4",
"name": "Immobilienscout24에서 목록 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
850,
300
],
"parameters": {
"url": "=https://www.immobilienscout24.de/Suche/S-T/Wohnung-Miete/Berlin/umkreis- {{$json[\"geoid\"]}} ?numberofroomsfrom={{$json[\"ROOMS\"]}}&price=-{{ $json[\"MAX_RENT\"] }}&sorting=2",
"options": {
"headers": {
"Accept": "application/json"
}
},
"responseFormat": "json"
},
"typeVersion": 1
},
{
"id": "5",
"name": "결과 필터링",
"type": "n8n-nodes-base.function",
"position": [
1050,
300
],
"parameters": {
"functionCode": "return items.filter(item => item.json.type === 'apartment' &&\n parseFloat(item.json.price) <= parseFloat($json[\"MAX_RENT\"]) &&\n parseInt(item.json.rooms) >= parseInt($json[\"ROOMS\"]));"
},
"typeVersion": 1
},
{
"id": "6",
"name": "아파트 하나씩 처리",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1250,
300
],
"parameters": {
"batchSize": 1
},
"typeVersion": 1
},
{
"id": "7",
"name": "Schufa 가져오기 (Google Drive)",
"type": "n8n-nodes-base.googleDrive",
"position": [
1450,
100
],
"parameters": {
"fileId": "={{$json[\"GDRIVE_SCHUFA_FILE_ID\"]}}",
"authentication": "oAuth2"
},
"typeVersion": 1
},
{
"id": "8",
"name": "급여 명세서 가져오기 (Google Drive)",
"type": "n8n-nodes-base.googleDrive",
"position": [
1450,
500
],
"parameters": {
"fileId": "={{$json[\"GDRIVE_SALARY_FILE_ID\"]}}",
"authentication": "oAuth2"
},
"typeVersion": 1
},
{
"id": "9",
"name": "커버 레터 생성",
"type": "n8n-nodes-base.function",
"position": [
1650,
300
],
"parameters": {
"functionCode": "return [{ json: { coverLetter: `Sehr geehrte Damen und Herren,\\n\\n Ich interessiere mich sehr für die Wohnung mit Exposé-ID ${$json[\"exposeId\"]} (${ $json[\"price\"] } EUR, ${ $json[\"rooms\"] } Zimmer).\\n\\n Im Anhang finden Sie meine Schufa-Auskunft und aktuelle Gehaltsabrechnungen.\\n\\n Vielen Dank für Ihre Zeit und ich freue mich auf Ihre Rückmeldung.\\n\\n Mit freundlichen Grüßen,\\n${$json[\"MY_NAME\"]}` } }];"
},
"typeVersion": 1
},
{
"id": "10",
"name": "신청 이메일 전송",
"type": "n8n-nodes-base.emailSend",
"position": [
1850,
300
],
"parameters": {
"content": "={{$json[\"coverLetter\"]}}",
"subject": "Wohnungsbewerbung – Interesse an Exposé-ID {{$json[\"exposeId\"]}}",
"toEmail": "={{$json[\"contactEmail\"]}}",
"fromEmail": "={{$json[\"MY_EMAIL\"]}}",
"attachments": [
{
"binaryPropertyName": "schufa"
},
{
"binaryPropertyName": "salary"
}
]
},
"typeVersion": 1
},
{
"id": "11",
"name": "Google 시트에 기록",
"type": "n8n-nodes-base.googleSheets",
"position": [
2050,
300
],
"parameters": {
"range": "A:E",
"values": [
[
"={{$json[\"title\"]}}",
"={{$json[\"address\"]}}",
"={{$json[\"price\"]}}",
"={{new Date().toISOString()}}",
"={{$json[\"exposeId\"]}}"
]
],
"sheetId": "={{$json[\"GOOGLE_SHEET_ID\"]}}",
"authentication": "oAuth2",
"valueInputMode": "USER_ENTERED"
},
"typeVersion": 1
},
{
"id": "sticky1",
"name": "Sticky: Cron 트리거",
"type": "n8n-nodes-base.stickyNote",
"position": [
250,
230
],
"parameters": {
"content": "Triggers the workflow every day at 8 AM Berlin time."
},
"typeVersion": 1
},
{
"id": "sticky2",
"name": "Sticky: 설정 구성",
"type": "n8n-nodes-base.stickyNote",
"position": [
450,
230
],
"parameters": {
"content": "Set your configuration: city, max rent, rooms, email, file IDs etc."
},
"typeVersion": 1
},
{
"id": "sticky3",
"name": "Sticky: GeoID 조회",
"type": "n8n-nodes-base.stickyNote",
"position": [
650,
230
],
"parameters": {
"content": "Convert city name to GeoID needed by ImmobilienScout24 API."
},
"typeVersion": 1
},
{
"id": "sticky4",
"name": "Sticky: Immobilienscout24에서 목록 가져오기",
"type": "n8n-nodes-base.stickyNote",
"position": [
850,
230
],
"parameters": {
"content": "Fetch apartment listings from ImmobilienScout24 with filters applied."
},
"typeVersion": 1
},
{
"id": "sticky5",
"name": "Sticky: 결과 필터링",
"type": "n8n-nodes-base.stickyNote",
"position": [
1050,
230
],
"parameters": {
"content": "Filter listings to only include apartments matching rent and rooms criteria."
},
"typeVersion": 1
},
{
"id": "sticky6",
"name": "Sticky: 아파트 하나씩 처리",
"type": "n8n-nodes-base.stickyNote",
"position": [
1250,
230
],
"parameters": {
"content": "Process apartments one by one to send applications."
},
"typeVersion": 1
},
{
"id": "sticky7",
"name": "Sticky: Schufa 가져오기",
"type": "n8n-nodes-base.stickyNote",
"position": [
1450,
30
],
"parameters": {
"content": "Fetch Schufa report from Google Drive to attach in application."
},
"typeVersion": 1
},
{
"id": "sticky8",
"name": "Sticky: 급여 명세서 가져오기",
"type": "n8n-nodes-base.stickyNote",
"position": [
1450,
430
],
"parameters": {
"content": "Fetch latest salary slips from Google Drive for application."
},
"typeVersion": 1
},
{
"id": "sticky9",
"name": "Sticky: 커버 레터 생성",
"type": "n8n-nodes-base.stickyNote",
"position": [
1650,
230
],
"parameters": {
"content": "Generate a personalized cover letter with expose ID and applicant name."
},
"typeVersion": 1
},
{
"id": "sticky10",
"name": "Sticky: 신청 이메일 전송",
"type": "n8n-nodes-base.stickyNote",
"position": [
1850,
230
],
"parameters": {
"content": "Send the apartment application email with attachments."
},
"typeVersion": 1
},
{
"id": "sticky11",
"name": "Sticky: Google 시트에 기록",
"type": "n8n-nodes-base.stickyNote",
"position": [
2050,
230
],
"parameters": {
"content": "Log applied apartments in Google Sheets for tracking."
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"timezone": "Europe/Berlin",
"executionOrder": "regular",
"saveDataOnSuccess": "allExecutions"
},
"connections": {
"1": {
"main": [
[
{
"node": "2",
"type": "main",
"index": 0
}
]
]
},
"2": {
"main": [
[
{
"node": "3",
"type": "main",
"index": 0
}
]
]
},
"3": {
"main": [
[
{
"node": "Fetch Listings",
"type": "main",
"index": 0
}
]
]
},
"5": {
"main": [
[
{
"node": "6",
"type": "main",
"index": 0
}
]
]
},
"6": {
"main": [
[
{
"node": "7",
"type": "main",
"index": 0
},
{
"node": "8",
"type": "main",
"index": 0
}
]
]
},
"7": {
"main": [
[
{
"node": "9",
"type": "main",
"index": 0
}
]
]
},
"8": {
"main": [
[
{
"node": "9",
"type": "main",
"index": 0
}
]
]
},
"9": {
"main": [
[
{
"node": "10",
"type": "main",
"index": 0
}
]
]
},
"10": {
"main": [
[
{
"node": "11",
"type": "main",
"index": 0
}
]
]
},
"Fetch Listings": {
"main": [
[
{
"node": "5",
"type": "main",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 개인 생산성, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Abbas Ali
@abbas12142Automation Engineer passionate about building smart, scalable workflows with n8n. I specialize in API integrations, webhook handling, and streamlining business tasks using low-code tools. From AI-powered bots to real-time data pipelines, I love solving problems with automation. Let’s turn manual processes into efficient systems!
이 워크플로우 공유