AI를 통해 LinkedIn 회사 데이터를 사용하여 CRM 잠재 고객을 풍부화
중급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 14개의 노드를 포함합니다.주로 Code, Airtable, HttpRequest, OpenAi 등의 노드를 사용하며. GPT-4와 Airtable를 통해 LinkedIn 회사 데이터를 활용하여 CRM 잠재 고객을 풍부화
사전 요구사항
- •Airtable API Key
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
사용된 노드 (14)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"templateCredsSetupCompleted": false
},
"name": "Enrich CRM leads with LinkedIn company data using AI",
"tags": [],
"nodes": [
{
"id": "workflow-description-note",
"name": "워크플로우 설명",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1020,
-300
],
"parameters": {
"color": 4,
"width": 520,
"height": 680,
"content": "## 🚀 Enrich CRM Leads with LinkedIn Company Data Using AI\n\n### **Who's it for**\nSales teams, marketers, and business development professionals who need to automatically enrich their CRM records with detailed company information from LinkedIn profiles.\n\n### **What it does**\nThis workflow automatically:\n1. Pulls lead records from your Airtable CRM\n2. Scrapes the company's LinkedIn profile page\n3. Uses AI (GPT-4) to extract and structure key company data\n4. Generates email-ready variables for personalized outreach\n5. Updates your CRM with enriched company information\n\n### **How to set up**\n1. **Airtable Configuration**: Replace the Airtable base ID and table ID with your own CRM database\n2. **OpenAI API**: Add your OpenAI API credentials for AI analysis\n3. **Trigger**: Set up your preferred trigger (webhook, schedule, or manual)\n4. **LinkedIn URL**: Ensure your CRM has a field with LinkedIn company URLs\n\n### **Requirements**\n- Airtable account (free tier works)\n- OpenAI API key (GPT-4 recommended for best results)\n- LinkedIn company URLs in your CRM\n- Basic understanding of CRM field mapping\n\n### **Customization tips**\n- Modify the AI prompts to extract different company attributes\n- Adjust the output variables to match your email templates\n- Add additional enrichment sources (company websites, Crunchbase, etc.)\n- Connect to different CRMs (HubSpot, Salesforce, etc.)\n\n💡 **Pro tip**: Run this workflow on new leads automatically to always have enriched data ready for outreach!"
},
"typeVersion": 1
},
{
"id": "step-1-note",
"name": "1단계 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-160
],
"parameters": {
"color": 7,
"width": 300,
"height": 180,
"content": "## 📋 Step 1: Retrieve Lead Data\n\nFetches the lead record from Airtable CRM containing the LinkedIn company URL and other lead information."
},
"typeVersion": 1
},
{
"id": "step-2-note",
"name": "2단계 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
-160
],
"parameters": {
"color": 7,
"width": 300,
"height": 180,
"content": "## 🌐 Step 2: Scrape LinkedIn Profile\n\nRetrieves the raw HTML content from the company's LinkedIn profile page."
},
"typeVersion": 1
},
{
"id": "step-3-note",
"name": "3단계 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-160
],
"parameters": {
"color": 7,
"width": 300,
"height": 180,
"content": "## 🧹 Step 3: Clean HTML Content\n\nRemoves HTML tags and formats the scraped content into clean, readable text for AI processing."
},
"typeVersion": 1
},
{
"id": "step-4-note",
"name": "4단계 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
-160
],
"parameters": {
"color": 7,
"width": 300,
"height": 180,
"content": "## 🤖 Step 4: AI Company Analysis\n\nUses GPT-4 to analyze the LinkedIn profile and extract structured company information including overview, products, market presence, and recent posts."
},
"typeVersion": 1
},
{
"id": "step-5-note",
"name": "5단계 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
540,
-160
],
"parameters": {
"color": 7,
"width": 300,
"height": 180,
"content": "## 📊 Step 5: Extract Email Variables\n\nConverts the company analysis into personalized, email-ready variables formatted for seamless insertion into outreach templates."
},
"typeVersion": 1
},
{
"id": "step-6-note",
"name": "6단계 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-160
],
"parameters": {
"color": 7,
"width": 300,
"height": 180,
"content": "## 💾 Step 6: Update CRM Record\n\nWrites the enriched company data back to your Airtable CRM, marking the lead as enriched and ready for outreach."
},
"typeVersion": 1
},
{
"id": "fetch-lead-from-crm",
"name": "CRM에서 리드 가져오기",
"type": "n8n-nodes-base.airtable",
"position": [
-500,
40
],
"parameters": {
"id": "={{ $json.recordId }}",
"base": {
"__rl": true,
"mode": "list",
"value": "YOUR_AIRTABLE_BASE_ID",
"cachedResultName": "Your CRM Base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "YOUR_TABLE_ID",
"cachedResultName": "Leads"
},
"options": {}
},
"typeVersion": 2.1
},
{
"id": "scrape-linkedin-profile",
"name": "LinkedIn 회사 프로필 스크래핑",
"type": "n8n-nodes-base.httpRequest",
"position": [
-260,
40
],
"parameters": {
"url": "={{ $json['LinkedIn Organization URL'] }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "clean-html-content",
"name": "HTML 콘텐츠 정제",
"type": "n8n-nodes-base.code",
"position": [
-20,
40
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const htmlContent = $node[\"Scrape LinkedIn Company Profile\"].json[\"data\"];\n\nconst extractPlainText = (html) => {\n if (!html) return \"\";\n\n const withoutScriptsAndStyles = html.replace(/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/gi, \"\")\n .replace(/<style[\\s\\S]*?>[\\s\\S]*?<\\/style>/gi, \"\");\n\n const strippedText = withoutScriptsAndStyles.replace(/<\\/?[^>]+(>|$)/g, \"\");\n\n const decodedText = strippedText.replace(/ /gi, \" \")\n .replace(/&/gi, \"&\")\n .replace(/</gi, \"<\")\n .replace(/>/gi, \">\")\n .replace(/"/gi, \"\\\"\")\n .replace(/'/gi, \"'\");\n\n const cleanedText = decodedText.replace(/\\s+/g, \" \").trim();\n\n return cleanedText;\n};\n\nconst plainText = extractPlainText(htmlContent);\n\nreturn {\n plainText: plainText,\n};"
},
"typeVersion": 2
},
{
"id": "analyze-company-profile",
"name": "AI로 회사 프로필 분석",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
220,
40
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "**Role:** \nYou are an expert in professional business analysis and LinkedIn data extraction. \n\n**Task:** \nAnalyze the scraped LinkedIn profile data of a company and produce a **high-quality, detailed company report** for CRM upload. Your analysis must be **precise, fact-based, structured, and derived entirely from the provided data** while also including **recent company posts with timestamps**. Ensure that the **exact employee count is extracted instead of a company size range.** \n\n### **Output Structure:** \nYour response must be a **single string titled \"Company LinkedIn\"** and divided into exactly **five** clearly labeled sections: \n\n#### **1. Company Overview:** \n- Provide a **concise yet comprehensive summary** of the company. \n- Include the **official name, industry, headquarters location, and founding year** if available. \n- Extract the **exact employee count** from the profile (e.g., \"20 employees\" instead of \"11-50 employees\"). Look for \"Follow View all X employees.\"\n- Summarize the company's **mission statement** and its **core value proposition**. \n- Highlight its **business type (Privately Held, Public, Nonprofit, etc.)**. \n\n#### **2. Products, Services, and Technology:** \n- Summarize the **company's key offerings**, including **products, services, and technology**. \n- List **notable software platforms, SaaS solutions, or proprietary technologies** the company uses or sells. \n- If available, include any **strategic advantages or differentiators** (e.g., AI-powered, automation-focused, integration-ready). \n\n#### **3. Business Operations and Market Presence:** \n- List the company's **primary office locations**, including headquarters and any additional branches. \n- Summarize any **recent funding rounds, major investments, or key investors** if applicable. \n- Mention any **notable partnerships, affiliations, or alliances** that contribute to their market position. \n- If applicable, highlight **major clients, certifications, awards, or industry recognitions**. \n\n#### **4. Recent Announcements and Market Activity:** \n- Summarize **recent press releases, product launches, partnerships, or growth milestones**. \n- If hiring data is available, note whether the company is **actively recruiting**. \n- Capture any **noteworthy social engagement** (e.g., G2 rankings, LinkedIn hiring growth, conference participation). \n\n#### **5. Company Posts (Including Timestamps):** \n- Extract all **company posts**, including **the date they were published**. \n- Summarize the **core message** of each post. \n- Include links if available. \n\n**Format for Posts Section:** \n📅 **[Date]** - **Post Title or Summary** \nPost ALL content. \n\n### **Additional Guidelines:** \n- **Extract and use the exact employee count** instead of a company size range. \n- **The analysis must be concise, fact-based, and structured** without assumptions or filler content. \n- **Use exact data where available** (e.g., \"Founded in 2020\" instead of \"several years ago\"). \n- **Maintain a professional tone and structured formatting** for easy CRM readability. \n- **Ensure all extracted variables are seamlessly integrated** into the summary."
},
{
"content": "=Input: {{ $json.plainText }}"
}
]
},
"jsonOutput": true
},
"typeVersion": 1.8
},
{
"id": "extract-email-variables",
"name": "이메일 작성용 변수 추출",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
600,
40
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "### **Extract Usable Company Data for Email Templates** \n\n> **Extract structured company variables from the LinkedIn profile text. Ensure all variables are formatted properly, using natural phrasing as if they were placed in the middle of a sentence. Capitalization must be correct for seamless insertion into an email template. If a field is not explicitly stated, return `\"not listed\"` instead of `null`.** \n\n### **Company Profile Extraction Rules:** \n\n#### **1. General Company Information** \n- **{CompanyName}** → Extract the full company name, properly capitalized. \n- **{Industry}** → Extract a **concise and specific industry descriptor** (e.g., `\"AI-driven cybersecurity\"` instead of `\"Technology\"`). \n- **{Headquarters}** → Extract the **city and state/country** in a natural format (e.g., `\"based in San Francisco, California\"`). \n- **{YearFounded}** → Extract as `\"founded in [YEAR]\"` (e.g., `\"founded in 2019\"`). If not listed, return `\"not listed\"`. \n- **{EmployeeCount}** → Extract as `\"a team of [NUMBER] employees\"` (e.g., `\"a team of 20 employees\"`). \n- **{CompanyType}** → Extract as `\"a [company type]\"` (e.g., `\"a privately held company\"`). \n\n#### **2. Mission & Business Summary** \n- **{MissionStatement}** → Extract as `\"on a mission to [mission]\"` (e.g., `\"on a mission to eliminate infrastructure concerns and accelerate software deployment\"`). If not available, return `\"not listed\"`. \n- **{CompanyOverview}** → Extract as `\"specializes in [core service]\"` (e.g., `\"specializes in cloud-native full-stack environments for DevOps teams\"`). \n\n#### **3. Products, Services, and Technology** \n- **{PrimaryServices}** → Extract as `\"offers [services]\"` (e.g., `\"offers environments as a service, preview environments, and DevOps solutions\"`). \n- **{TechnologyOrProducts}** → Extract as `\"its technology includes [products]\"` (e.g., `\"its technology includes an internal developer platform and on-demand environments\"`). If no products are mentioned, return `\"not listed\"`. \n\n#### **4. Business Operations & Market Presence** \n- **{OfficeLocations}** → Extract as `\"with offices at [address]\"` (e.g., `\"with offices at 530 Divisadero St, San Francisco, California\"`). If not listed, return `\"not listed\"`. \n- **{FundingRounds}** → Extract as `\"has raised funding in [#] rounds\"` (e.g., `\"has raised funding in 3 rounds\"`). If not listed, return `\"not listed\"`. \n- **{RecentFundingRound}** → Extract as `\"most recently raised [amount] in a [funding round] round in [date]\"` (e.g., `\"most recently raised $13.2M in a Series A round in March 2022\"`). If no funding is listed, return `\"not listed\"`. \n- **{Investors}** → Extract as `\"backed by [investors]\"` (e.g., `\"backed by 8VC and 14 other investors\"`). If not listed, return `\"not listed\"`. \n- **{NotablePartnershipsOrClients}** → Extract as `\"works with [partners]\"` (e.g., `\"works with Docker and NVIDIA\"`). If not listed, return `\"not listed\"`. \n- **{AwardsOrCertifications}** → Extract as `\"recognized for [awards]\"` (e.g., `\"recognized for its G2 Momentum Leader award in CPQ\"`). If not listed, return `\"not listed\"`. \n- **{HiringStatus}** → Extract as `\"currently hiring\"` if the company is hiring, or `\"not currently hiring\"` if there is no mention. \n\n### **Return Output as JSON (Email-Friendly Formatting)** \nReturn all variables in a JSON object with proper sentence-case formatting ready for email insertion."
},
{
"content": "=Input: {{ $json.message.content }}\nToday's date: {{ $now }}"
}
]
},
"jsonOutput": true
},
"typeVersion": 1.8
},
{
"id": "update-crm-with-enriched-data",
"name": "강화된 데이터로 CRM 업데이트",
"type": "n8n-nodes-base.airtable",
"position": [
1020,
40
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "YOUR_AIRTABLE_BASE_ID",
"cachedResultName": "Your CRM Base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "YOUR_TABLE_ID",
"cachedResultName": "Leads"
},
"columns": {
"value": {
"id": "={{ $('Fetch Lead from CRM').first().json.id }}",
"Lead Status": "Cold",
"LinkedIn Company": "=",
"Date Lead Enriched": "={{ new Date().toISOString().split('T')[0] }}",
"Start Lead Enrichment": false
},
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
]
},
"options": {},
"operation": "update"
},
"typeVersion": 2.1
},
{
"id": "email-variables-reference",
"name": "이메일 변수 참조",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1020,
440
],
"parameters": {
"color": 6,
"width": 460,
"height": 680,
"content": "## 📧 Email Template Variables Reference\n\n### Example Usage in Outreach Emails:\n\n**Opening Lines:**\n- \"Hi {FirstName}, I came across {CompanyName} and was impressed by how you're leading innovation in {Industry}.\"\n- \"Running {CompanyName} since {YearFounded} with {EmployeeCount} must have been an incredible journey.\"\n\n**Value Propositions:**\n- \"Given {CompanyName}'s expertise in {PrimaryServices}, I wanted to connect and share something that might align with your work.\"\n- \"Since {CompanyName} is already working with {NotablePartnershipsOrClients}, I wanted to explore collaboration opportunities.\"\n\n**Congratulatory Messages:**\n- \"Congrats on {CompanyName}'s continued success in {Industry}! Scaling to {EmployeeCount} employees while offering {PrimaryServices} is no small feat.\"\n- \"Expanding to {OfficeLocations} shows how fast {CompanyName} is growing!\"\n\n**Call-to-Action:**\n- \"Would love to schedule a quick chat to discuss how {PrimaryServices} trends are evolving.\"\n- \"Let's connect—I believe my work aligns closely with {CompanyName}'s expertise in {Industry}.\"\n\n### Available Variables:\n- CompanyName\n- Industry\n- Headquarters\n- YearFounded\n- EmployeeCount\n- CompanyType\n- MissionStatement\n- CompanyOverview\n- PrimaryServices\n- TechnologyOrProducts\n- OfficeLocations\n- FundingRounds\n- RecentFundingRound\n- Investors\n- NotablePartnershipsOrClients\n- AwardsOrCertifications\n- HiringStatus"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"connections": {
"clean-html-content": {
"main": [
[
{
"node": "analyze-company-profile",
"type": "main",
"index": 0
}
]
]
},
"fetch-lead-from-crm": {
"main": [
[
{
"node": "scrape-linkedin-profile",
"type": "main",
"index": 0
}
]
]
},
"extract-email-variables": {
"main": [
[
{
"node": "update-crm-with-enriched-data",
"type": "main",
"index": 0
}
]
]
},
"analyze-company-profile": {
"main": [
[
{
"node": "extract-email-variables",
"type": "main",
"index": 0
}
]
]
},
"scrape-linkedin-profile": {
"main": [
[
{
"node": "clean-html-content",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
LinkedIn 잠재 고객 정보 풍부화 및 AI 개인화 추격
LinkedIn 잠재 고객 정보 풍부화 및 개인화된 콜드 콜, Hunter.io, GPT-4 및 Sheets 통합
If
Set
Code
+
If
Set
Code
18 노드Amirul Hakimi
콘텐츠 제작
Gemini AI와 Airtable을 사용하여 이미지에서 Shopify 제품 목록 생성
사용Gemini AI와Airtable로 이미지에서 Shopify 제품 목록 생성
If
Set
Code
+
If
Set
Code
33 노드MANISH KUMAR
콘텐츠 제작
WordPress와 ChatGPT를 활용한 블로그 글 자동 생성
예약 또는 트리거 방식으로 WordPress 콘텐츠를 생성하는 AI 블로그 글 생성기
Xml
Code
Wordpress
+
Xml
Code
Wordpress
19 노드Cadu | Ei, Doc!
콘텐츠 제작
홈 데코 AI (Google Nano Banana) - Santhej Kallada
Google Gemini 기반 AI 이미지 생성 및 편집과 Telegram 봇
If
Set
Code
+
If
Set
Code
28 노드Santhej Kallada
콘텐츠 제작
AI 기반 동영상 제작 및 Instagram, TikTok, YouTube 업로드
클라우드 드라이브 기반 AI 기반 비디오 제작 및 Instagram, TikTok, YouTube 업로드
If
Set
Code
+
If
Set
Code
53 노드DevCode Journey
콘텐츠 제작
웹 데이터 기반 AI 차트 생성 및 WordPress 업로드
웹 데이터 기반 AI 기반 차트 생성, GPT-4o 사용 및 WordPress에 업로드
Code
Http Request
Manual Trigger
+
Code
Http Request
Manual Trigger
15 노드Jay Emp0
콘텐츠 제작
워크플로우 정보
난이도
중급
노드 수14
카테고리2
노드 유형5
저자
Amirul Hakimi
@amirulhaaakimiCS Student Specializing in Artificial Intelligence @UNITEN | Certified in CRO & Copywriting for High-Impact Digital Growth
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유