Google SheetsとGPTを使ってWebサイトデータからAI駆動のパーソナライズされたアプローチ文を作成する
中級
これはLead Generation, Multimodal AI分野の自動化ワークフローで、15個のノードを含みます。主にWait, Limit, Markdown, HttpRequest, GoogleSheetsなどのノードを使用。 Google Sheets そして GPT を使ってウェブサイトデータから AI 駆動のパーソナライズされたアイスブレイクトピックを作成
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
- •OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "a88d54d0dc140647df8f628579b3d5aae0dedb13c983a1f5c11ee14f54f18774",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "31d817cd-d810-4fa1-9b27-b893b482462d",
"name": "Google スプレッドシート",
"type": "n8n-nodes-base.googleSheets",
"position": [
180,
0
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupColumn": "personalization"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1248286451,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ozF4HA8LpZVKY62B8MoxVshKKnLvUKachs8XARaLbDk/edit#gid=1248286451",
"cachedResultName": "Data"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ozF4HA8LpZVKY62B8MoxVshKKnLvUKachs8XARaLbDk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ozF4HA8LpZVKY62B8MoxVshKKnLvUKachs8XARaLbDk/edit?usp=drivesdk",
"cachedResultName": "High ticket coaching FINAL"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "G2spLXJSxhwVIeSU",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "3047835b-39f6-4124-b511-9e5d26335a56",
"name": "Google スプレッドシート1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1700,
60
],
"parameters": {
"columns": {
"value": {
"email": "={{ $('Google Sheets').item.json.email }}",
"newCompanyName": "={{ $json.message.content.companyName }}",
"personalization": "={{ $json.message.content.icebreaker }}"
},
"schema": [
{
"id": "profileUrl",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "profileUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "firstName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "firstName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "lastName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "lastName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "headline",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "headline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "about",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "about",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "oldCompanyName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "oldCompanyName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "newCompanyName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "newCompanyName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "personalization",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "personalization",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "location",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organization_website_url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "organization_website_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "company_industry",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "company_industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "fullName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "fullName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "country",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "city",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "city",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1248286451,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ozF4HA8LpZVKY62B8MoxVshKKnLvUKachs8XARaLbDk/edit#gid=1248286451",
"cachedResultName": "Data"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ozF4HA8LpZVKY62B8MoxVshKKnLvUKachs8XARaLbDk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ozF4HA8LpZVKY62B8MoxVshKKnLvUKachs8XARaLbDk/edit?usp=drivesdk",
"cachedResultName": "High ticket coaching FINAL"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "G2spLXJSxhwVIeSU",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "6b46b00a-2a90-4079-9777-e07e8590ea4d",
"name": "HTTP リクエスト",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
780,
60
],
"parameters": {
"url": "={{ $('Google Sheets').item.json.organization_website_url }}",
"options": {}
},
"notesInFlow": true,
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "429c9859-f108-4f9c-901d-bc27e54e9cda",
"name": "Markdown",
"type": "n8n-nodes-base.markdown",
"notes": " ",
"onError": "continueRegularOutput",
"position": [
940,
60
],
"parameters": {
"html": "={{ $json.data }}",
"options": {}
},
"notesInFlow": true,
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "b515488f-aa5d-4bfa-9b74-a0ea0ab50cce",
"name": "ループ処理",
"type": "n8n-nodes-base.splitInBatches",
"position": [
580,
0
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "b9205910-0456-46f3-9636-470affa10571",
"name": "待機",
"type": "n8n-nodes-base.wait",
"position": [
1900,
60
],
"webhookId": "fc3b53fe-fcc7-4098-99ce-2a39d7c0df77",
"parameters": {
"amount": 2
},
"typeVersion": 1.1
},
{
"id": "598378f7-1c34-4d12-9cf2-c963ae247d71",
"name": "Website Copy",
"type": "@n8n/n8n-nodes-langchain.openAi",
"onError": "continueRegularOutput",
"position": [
1080,
60
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "You're a helpful, intelligent web scraping assistant."
},
{
"content": "Your task is to take the raw markdown of a website and convert it into structured plain text copy. Remove any links or urls.\n\nIf you can't access the website or there is a problem, just output nothing.\n\nReturn your response in JSON using this format:\n\n{\"websiteCopy\":\"a long string containing just the text of the site, no formatting\"}"
},
{
"content": "=Markdown: {{ $json.data }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "E9waf1c33TsN4RCh",
"name": "OpenAi account"
}
},
"notesInFlow": true,
"typeVersion": 1.8,
"alwaysOutputData": true
},
{
"id": "cfa2bff4-4e4e-4c4a-8711-a9838cfc547a",
"name": "制限",
"type": "n8n-nodes-base.limit",
"position": [
380,
0
],
"parameters": {
"maxItems": 500
},
"typeVersion": 1
},
{
"id": "a8820e58-898e-4e9c-a71c-1783b3022938",
"name": "クリック時 ‘Execute workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-20,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "873ea6f7-6d5b-4fb0-bc30-28ce3aad5a64",
"name": "Personalization",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1400,
60
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {
"temperature": 0.5
},
"messages": {
"values": [
{
"role": "system",
"content": "You're a helpful, intelligent copywriting assistant. You will be given a bunch of info about a lead and their company. You task is to generate 2 fields:\nicebreaker: a personalized icebreaker we will send to them in an email sequence\ncompanyName: An abbreviated shortened name of their company"
},
{
"content": "=Your task is to take the info I provide about a prospect and turn them into catchy, personalized openers for a cold email campaign to imply that the rest of the email is personalized.\n\nYou'll return your response in the following JSON format:\n\n{\"icebreaker\":\"Hey {name}, love {interestingThingAboutThem}. {ComplimentAccomplishmentorExperience}. Found you on LinkedIn and figured I'd reach out.\\n\\nForgive me for digging into your site, but given your {addressPainPointSubtly} or {thingAboutCompany}, how easy are you finding it to scale and acquire new clients?\",\n\"companyName\":\"(shortenedCompanyName)\"}\n\n\nRules:\n- Write in a spartan/laconic tone of voice.\n- Keep the compliment short.\n- Make sure to stick to the above formats\n-Try to make the pain point related to client acquisition but subtle and natural. The goal is to be conversational, not hard sell my offer(AI Personalized Cold Outreach)\n- Shorten all corporate/company/program names and use abbreviation wherever possible (say, \"XYZ\" instead of \"XYZ Agency\"). More examples: \"AMS\" instead of \"AMS Professional Services\", \"WSJ\" instead of \"Wall Street Journal\", etc. This is done to make it seem more human and natural. \n-Remove all legal symbols like \"TM\"\n- Do the same with locations. \"San Fran\" instead of \"San Francisco\", \"BC\" instead of \"British Columbia\", etc.\n- For your variables, focus on small, non-obvious and interesting things to paraphrase. The idea is to make people think we *really* dove deep into them, so don't use something obvious. Do not say cookie-cutter stuff like \"Love your website!\" or \"Love your take on marketing!\". Again, keep it short."
},
{
"content": "=Profile: Radhika Sethi, CMO at Beyond The Panorama - A creative & content marketing agency, Beyond The Panorama, San Francisco Bay Area\n\nLinkedIn About: I work with founders & marketers of small brands to create a meaningful story for their brands, that resonate with the right audiences. In 8 eventful years of consulting with brands, I have developed robust content ecosystems to build memorable brands in the direct-to-consumer space.\n\nAt the core, I am a storyteller and that’s what I translate into brand content strategies.\n\nConsulting with brands across industries, especially D2C - nutrition, F&B, fashion, skincare, fem-tech.\n\nWebsite Scrape: \"Home\\nThe Content Marketing Blog\\nThe Magazine\\n Short Stories\\n Romance Short Stories\\n Relationships Short Stories\\n Interesting Short Stories\\n Thriller and Horror Short Stories\\n Mystery Short Stories\\n Poetry\\n Thoughts & Opinions\\nContact\\nAbout\\nSubscribe\\n\\nContent Marketing & Social Media Company\\nAND A STORYTELLING PLATFORM\\n\\nCONTENT STRATEGY\\nCONTENT WRITING\\nSOCIAL MEDIA\\nBRAND LITERATURE\\nMICRO CONTENT CREATION\\n\\nHello.\\n\\nWriting content that customers actually want to read\\nHelping brands create a content ecosystem.\\n\\nContent Strategy\\nBuilding an integrated communication strategy for brands. This involves building a personality for the brand and creating the brand literature. A strategic, yet realistic and executable, content strategy that will help your brand grow across channels.\\n\\nContent Writing\\nBrand story, website content, blogs, stories, product descriptions, newsletters, social media captions, white papers, e-books, social media campaigns, and more. Did we miss what you were looking for? Just reach out and let’s have a chat about your writing requirement.\\n\\nSocial Media\\nBuilding a channel-wise digital marketing strategy for brands, monthly content calendars and analytical reporting. BTP’s social media plans are a successful mix of content that is educative, engaging, and share-worthy.\\n\\nContent Creation\\nCreating social media graphics, GIFs and a whole lot of engaging content. We also create a lot of original content in-house in terms of photos, videos, reels, because we know – a photoshoot is time-consuming and expensive and cannot be done very often. But fresh content needs to keep coming and BTP is here for it!\\n\\nghost writing\\nIf you are a thought leader or a brand that needs lots and lots of content published under your name, we are your friends! This writing solution includes our team of writers creating content for your company’s assets. Yes, we do also ghost-write books.\\n\\ntechnical writing\\nWith over 30 years in business strategy, our small team is brimming with the knowledge they love to share. If you need well-researched technical articles, white papers, or e-books – we would love to have a conversation with you.\\n\\nAmazon Content\\nJust as important as your website is your marketplace content. The main objective on marketplaces like Amazon is to stand out amidst the very many brands. Not just that, once someone has become interested in your brand or product, the story must be compelling enough to sell. That’s what we help do! Create great content and creatives for Amazon.\\n\\nAt the core, we are storytellers that create brand stories website content blogs social media content newsletters e-books\\nWhen the passion for storytelling is coupled with strong business acumen and 3 decades of experience, it can create magical things.\\nThe lifeblood of digital-marketing anatomy is content, and Team BTP’s expertise lies in building a Content Ecosystem that integrates and synergises every content touchpoint for your business.\\nBTP is NOT an end to end or a full-service marketing agency. It is a specialised content marketing agency to help your business create compelling, creative, and engaging content.\\n\\nIn addition to being a content marketing agency, Beyond The Panorama is a publishing platform for authors, poets, and marketers. An exclusive curation of short stories and poetry with an Indian context. This is your daily dose of non-news reading. Written by carefully selected writers and poets, the BTP Magazine is a work of passion and love for the art of storytelling.\\n\\nWho We Are\\nGet in touch\\nLangford Gardens, Bangalore – 560025, India\\n\\nhello@beyondthepanorama.com\\n\\n© 2022 A Unit of Vineet Sethi\""
},
{
"role": "assistant",
"content": "={\"icebreaker\":\"Hey Radhika,\\n\\nlove your storytelling approach to brand strategy. 8 years of consulting is impressive. Found you on LinkedIn and figured I'd reach out.\\n\\nForgive me for digging into your site, but given your specialized focus in content marketing(read the part about not being a 360-degree marketing agency), how easy are you finding it to scale and acquire new clients?\",\n\"companyName\":\"BTP\"}\n\n\n\n"
},
{
"content": "=Profile: {{ $('Google Sheets').item.json.firstName }} {{ $('Google Sheets').item.json.lastName }}, {{ $('Google Sheets').item.json.headline }}, {{ $('Google Sheets').item.json.oldCompanyName }}, {{ $('Google Sheets').item.json.organization_city }}\n\nLinkedIn About: {{ $('Google Sheets').item.json.about }}\n\nWebsite Scrape: {{ $('Website Copy').item.json.message.content.websiteCopy }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "E9waf1c33TsN4RCh",
"name": "OpenAi account"
}
},
"typeVersion": 1.6
},
{
"id": "cb4d1d53-cfb8-4edf-8d55-bad99a61034f",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-60
],
"parameters": {
"color": 4,
"width": 600,
"height": 260,
"content": "## Search Lead Database\n"
},
"typeVersion": 1
},
{
"id": "6befc404-f2d2-47f9-8a61-315bd551242d",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
740,
-20
],
"parameters": {
"color": 5,
"width": 620,
"height": 240,
"content": "## Scrape website\n"
},
"typeVersion": 1
},
{
"id": "82f71075-9904-49b5-94bb-900d1d5b5326",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1380,
-20
],
"parameters": {
"color": 4,
"width": 640,
"height": 240,
"content": "## Create Personalized Icebreaker & add to row\n"
},
"typeVersion": 1
},
{
"id": "3a7e20c1-35c2-460e-a294-29fba5181050",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-780,
-420
],
"parameters": {
"width": 660,
"height": 1080,
"content": "# Generate personalized icebreakers from website data in Google Sheets\n## Overview\n\nCreate hyper-personalized cold outreach messages at scale by combining Google Sheets, web scraping, and AI.\nThis workflow is perfect for sales teams, SDRs, and agency owners looking to boost reply rates with icebreakers that *actually feel personal*. It takes lead info from a Google Sheet—including name, email, company, and website—then visits each site, pulls meaningful text, and crafts a tailored message using AI. The personalized message is then written back into your lead sheet, ready for use in cold email, LinkedIn DMs, or CRM enrichment.\n\n### Who’s it for\n- Cold email outreach specialists \n- B2B sales and SDR teams \n- Lead generation agencies \n- Founders doing outbound manually \n\n### How it works\n- Pull lead data from Google Sheets \n- Loop through each lead and scrape their website using an HTTP node \n- Clean and format the website content \n- Use OpenAI to generate a custom-written icebreaker for each lead \n- Write the final icebreaker back into the spreadsheet\n\n### How to set up\n1. Connect your Google Sheets account \n2. Replace the spreadsheet ID and column names with your own \n3. Set up your OpenAI credentials (or whichever LLM you prefer) \n4. Tweak the prompt for tone or style \n5. Hit \"Execute Workflow\" and watch the sheet populate\n\n### Requirements\n- Google Sheets credentials \n- OpenAI (or any compatible LLM node) \n- The websites listed must be publicly accessible and static\n\n### How to customize\n- Modify the scraping logic to focus on specific sections (e.g. About page, Case Studies) \n- Adjust the AI prompt to match your brand’s tone \n- Add filtering logic to skip low-value leads \n- Integrate with your CRM to send the data downstream\n"
},
"typeVersion": 1
},
{
"id": "437389e4-d043-461d-bf27-a0a60cfcaf46",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
280
],
"parameters": {
"color": 5,
"width": 540,
"height": 200,
"content": "## Hey, I'm Abdul 👋\n### I build growth-focused systems. If you want to work together or need help automating your business, check out my website: **https://www.builtbyabdul.com/**\n### Or email me at **builtbyabdul@gmail.com**\n### Have a lovely day ;)`"
},
"typeVersion": 1
}
],
"pinData": {
"When clicking ‘Execute workflow’": [
{}
]
},
"connections": {
"Wait": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Limit": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"429c9859-f108-4f9c-901d-bc27e54e9cda": {
"main": [
[
{
"node": "598378f7-1c34-4d12-9cf2-c963ae247d71",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "429c9859-f108-4f9c-901d-bc27e54e9cda",
"type": "main",
"index": 0
}
]
]
},
"598378f7-1c34-4d12-9cf2-c963ae247d71": {
"main": [
[
{
"node": "873ea6f7-6d5b-4fb0-bc30-28ce3aad5a64",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets": {
"main": [
[
{
"node": "Limit",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets1": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"873ea6f7-6d5b-4fb0-bc30-28ce3aad5a64": {
"main": [
[
{
"node": "Google Sheets1",
"type": "main",
"index": 0
}
]
]
},
"When clicking ‘Execute workflow’": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - リード獲得, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
AIを活用したリードジェネレーションシステム(メールパーソナライズとLinkedIn)
AIを活用したリードジェネレーションシステム:メールパーソナライズとLinkedIn機能を含む
If
Code
Limit
+
If
Code
Limit
51 ノードMatthieu
リード獲得
LinkedIn、OpenAI、Sales Navigatorを使用して有効なリードを作成し、コールドコールスクリプトを自動生成
LinkedIn、OpenAI、Sales Navigatorを使って、合格したリードとコールドケーススクリプトを作成
If
Code
Limit
+
If
Code
Limit
47 ノードMatthieu
リード獲得
潜在顧客開掘とメールワーキングフロー
Google Maps、SendGrid、AIを使用してB2Bリード獲得とメールマーケティングを自動化
If
Set
Code
+
If
Set
Code
141 ノードEzema Kingsley Chibuzo
リード獲得
私のワークフロー
Apify、GPT-4o、Facebook 広告ライブラリを使用して競合広告の研究と画像生成
Set
Wait
Limit
+
Set
Wait
Limit
32 ノードNick Saraev
コンテンツ作成
Apify、GPT-4、Google Driveを使用して、競合からAI Facebook広告のバリエーションを生成
Apify、GPT-4、Google Driveを使用して競合他社のAI Facebook広告バリエーションを生成
Set
Wait
Limit
+
Set
Wait
Limit
29 ノードElectrabot
コンテンツ作成
JotFormの送信をGoogleスheetsに自動化
JotFormの送信をGoogleスプレッドシートに自動化する
Code
Wait
Http Request
+
Code
Wait
Http Request
12 ノードmoosa
リード獲得
ワークフロー情報
難易度
中級
ノード数15
カテゴリー2
ノードタイプ9
作成者
Abdul Mir
@abdulmirHey 👋 I'm Abdul. I build AI-powered systems for marketing agencies and consultants who want to move fast and automate the boring stuff. Think lead gen agents, proposal generators, and content creation systems. I specialize in growth-focused automations and share workflows that save time and land clients.
外部リンク
n8n.ioで表示 →
このワークフローを共有