๋ฌด๋ฃŒ๋‹ˆ ์–ด์„œ ๋ฐ›์•„๋ณด์„ธ์—ฌ AI ํ† ํฐ ๊ด€๋ฆฌ์‚ฌ ์–ด์„œ ์ฑ„์šฉํ•˜์„ธ์—ฌ

์ด๋ฏธ์ง€
  AI ํ† ํฐ ๊ณ„์‚ฐ ํ”„๋กœ๊ทธ๋žจ ๋ฆฌํฌํŠธ 1. ํ”„๋กœ๊ทธ๋žจ ๋ชฉ์  ์‚ฌ์šฉ์ž๊ฐ€ AI์— ์ž…๋ ฅํ•˜๋Š” ๊ธ€๊ณผ AI๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๋‹ต๋ณ€์˜ ํ† ํฐ ์ˆ˜์™€ ์˜ˆ์ƒ ๋น„์šฉ์„ ์ž๋™ ๊ณ„์‚ฐ ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ๋‹จ์ˆœํžˆ ๊ธ€์ž ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ: ์ž…๋ ฅ → ์‚ฌ์šฉ ๋ชจ๋ธ ์„ ํƒ → ์ž…๋ ฅ ํ† ํฐ ๊ณ„์‚ฐ → ์ถœ๋ ฅ ํ† ํฐ ์˜ˆ์ƒ/์‹ค์ธก → 1ํšŒ ๋น„์šฉ ๊ณ„์‚ฐ → 1์ผ·1๊ฐœ์›” ๋น„์šฉ ๊ณ„์‚ฐ → ์—ฌ๋Ÿฌ AI ๋ชจ๋ธ ๋น„๊ต ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. 2. ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ธฐ๋Šฅ ๋‚ด์šฉ ์ž…๋ ฅ ํ† ํฐ ๊ณ„์‚ฐ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ช‡ ํ† ํฐ์ธ์ง€ ๊ณ„์‚ฐ ์ถœ๋ ฅ ํ† ํฐ ๊ณ„์‚ฐ AI ๋‹ต๋ณ€ ํ† ํฐ ๊ณ„์‚ฐ ์ด ํ† ํฐ Input + Output API ๋น„์šฉ ๋ชจ๋ธ๋ณ„ ์‹ค์ œ ๊ฐ€๊ฒฉ ์ ์šฉ 1ํšŒ ๋น„์šฉ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ๋น„์šฉ ์ผ์ผ ๋น„์šฉ ํ•˜๋ฃจ ์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ์ค€ ์›”๊ฐ„ ๋น„์šฉ 30์ผ ๊ธฐ์ค€ ๋ชจ๋ธ ๋น„๊ต ์—ฌ๋Ÿฌ AI ๋ชจ๋ธ ๋น„์šฉ ๋น„๊ต ํ•œ๊ตญ์–ด ๊ณ„์‚ฐ ํ•œ๊ตญ์–ด ํŠน์„ฑ ๊ณ ๋ ค ์˜์–ด ๊ณ„์‚ฐ ์˜์–ด ํ† ํฐ ๊ณ„์‚ฐ ๊ธด ๋ฌธ์„œ ๊ณ„์‚ฐ PDF/ํ…์ŠคํŠธ ๋“ฑ API ์‚ฌ์šฉ๋Ÿ‰ ๋ถ„์„ ์‹ค์ œ API ๋กœ๊ทธ ๋ถ„์„ ์˜ˆ์‚ฐ ๊ฒฝ๊ณ  ์›” ์˜ˆ์‚ฐ ์ดˆ๊ณผ ์˜ˆ์ƒ ์‹œ ๊ฒฝ๊ณ  3. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ “๊ธ€์ž ์ˆ˜ × ์–ผ๋งˆ” ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ค๋ฉด ์•ˆ ๋œ๋‹ค. AI ํ† ํฐ์€ ๋ชจ๋ธ๋งˆ๋‹ค ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ™์€ ๋ฌธ์žฅ์ด๋ผ๋„ OpenAI Anthropic Google Meta Mistral Cohere ๋“ฑ์—์„œ ํ† ํฐํ™” ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์—๋Š” ๋ชจ๋ธ๋ณ„ Tokenizer / ๊ณต์‹ ๊ฐ€๊ฒฉํ‘œ ๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. 4. ๊ณ„์‚ฐ ๊ตฌ์กฐ ๊ธฐ๋ณธ ๊ณ„์‚ฐ์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋‹ค. ์ž…๋ ฅ Input Tokens = ํ”„๋กฌํ”„ํŠธ ํ† ํฐ ์ˆ˜ ์ถœ๋ ฅ Output Tokens = AI ๋‹ต๋ณ€ ํ† ํฐ ์ˆ˜ ์ด ํ† ํฐ Total Tokens = Input Tokens + Output Tokens ๋น„์šฉ ๋ชจ๋ธ์˜ ๊ฐ€๊ฒฉ์ด Input $X / 1M tokens Output $Y / 1M tokens ์ด๋ผ๋ฉด, Input Cost = Input Tokens ÷ 1,000,000 × X Output Cost = Output Tokens ÷ 1,000,000 × Y ๊ทธ๋ฆฌ๊ณ  Total Cost = Input Co...

n8n๊ณผ ์›น ํฌ๋กค๋Ÿฌ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ 24์‹œ๊ฐ„ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ ๋งŒ๋“ค๊ธฐ

 n8n + ์›น ํฌ๋กค๋Ÿฌ๋กœ 24์‹œ๊ฐ„ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ ๋งŒ๋“œ๋Š” ๊ฑด ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ทธ๋ƒฅ “๋Œ๋ฆฐ๋‹ค” ์ˆ˜์ค€์œผ๋กœ ํ•˜๋ฉด ๊ธˆ๋ฐฉ ๋ง‰ํžˆ๊ฑฐ๋‚˜(์ฐจ๋‹จ, 403, IP๋ธ”๋ฝ), ๋ฐ์ดํ„ฐ๊ฐ€ ๊นจ์ง‘๋‹ˆ๋‹ค. ๊ตฌ์กฐ๋ฅผ ์ œ๋Œ€๋กœ ์žก์•„์•ผ ๋ˆ ๋˜๋Š” ์‹œ์Šคํ…œ์ด ๋ฉ๋‹ˆ๋‹ค.


์•„๋ž˜๋Š” ์ดˆ๋ณด → ์‹ค์ „ ์ˆ˜์ตํ™”๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค.


1️⃣ ์ „์ฒด ๊ตฌ์กฐ (ํ•ต์‹ฌ ์ดํ•ด)

6


๐Ÿ‘‰ ๊ธฐ๋ณธ ํ๋ฆ„์€ ์ด๊ฑฐ ํ•˜๋‚˜๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค:


[ํฌ๋ก  ์‹คํ–‰] → [์›น ํฌ๋กค๋ง] → [๋ฐ์ดํ„ฐ ๊ฐ€๊ณต] → [์ €์žฅ] → [์•Œ๋ฆผ/๋ฐฐํฌ]


✔ ๊ตฌ์„ฑ ์š”์†Œ


n8n → ์ž๋™ํ™” ์—”์ง„ (๋‘๋‡Œ)

ํฌ๋กค๋Ÿฌ → ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (์†)

DB → ์ €์žฅ (๊ธฐ์–ต)

ํ”„๋ก์‹œ/ํ—ค๋“œ๋ฆฌ์Šค → ์ฐจ๋‹จ ํšŒํ”ผ (๋ฐฉํŒจ)

2️⃣ n8n ์›Œํฌํ”Œ๋กœ์šฐ ๊ธฐ๋ณธ ๊ตฌ์„ฑ

① Cron (์ž๋™ ์‹คํ–‰)

5๋ถ„ / 10๋ถ„ / 1์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ์„ค์ •

② HTTP Request (ํฌ๋กค๋ง)

GET ์š”์ฒญ์œผ๋กœ ํŽ˜์ด์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ

User-Agent ํ•„์ˆ˜ ์„ค์ •

③ HTML Extract (๋ฐ์ดํ„ฐ ์ถ”์ถœ)

CSS Selector ์‚ฌ์šฉ

์˜ˆ: .title, .price

④ Function Node (๋ฐ์ดํ„ฐ ๊ฐ€๊ณต)

return items.map(item => {

  return {

    json: {

      title: item.json.title.trim(),

      price: parseInt(item.json.price.replace(/,/g, ''))

    }

  }

});

⑤ DB ์ €์žฅ

MySQL / PostgreSQL ์ถ”์ฒœ

⑥ IF ์กฐ๊ฑด

๊ฐ€๊ฒฉ ๋ณ€๋™ / ์‹ ๊ทœ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง

⑦ ์•Œ๋ฆผ

ํ…”๋ ˆ๊ทธ๋žจ / ๋””์Šค์ฝ”๋“œ / ์ด๋ฉ”์ผ

3️⃣ ํฌ๋กค๋ง ๋ฐฉ์‹ ์„ ํƒ (์ค‘์š”)

✔ 1. ๋‹จ์ˆœ ์‚ฌ์ดํŠธ (์ •์ )

n8n HTTP๋กœ ์ถฉ๋ถ„

์†๋„ ๋น ๋ฆ„

✔ 2. ๋™์  ์‚ฌ์ดํŠธ (JS ๋ Œ๋”๋ง)

4


๐Ÿ‘‰ ์ด๊ฑด ๋ฌด์กฐ๊ฑด ํ•„์š”:


Puppeteer

Playwright


๐Ÿ‘‰ n8n์—์„œ ์‹คํ–‰ ๋ฐฉ๋ฒ•


Execute Command node

๋˜๋Š” Webhook์œผ๋กœ ์™ธ๋ถ€ ์„œ๋ฒ„ ํ˜ธ์ถœ

4️⃣ 24์‹œ๊ฐ„ ์•ˆ์ • ์šด์˜ ํ•ต์‹ฌ (์—ฌ๊ธฐ์„œ 90% ๊ฐˆ๋ฆผ)

๐Ÿšซ ์‹คํŒจํ•˜๋Š” ๊ตฌ์กฐ

IP 1๊ฐœ๋กœ ๊ณ„์† ๊ธ์Œ

ํ—ค๋” ์—†์Œ

์†๋„ ๋น ๋ฆ„

→ ๋ฐ”๋กœ ์ฐจ๋‹จ๋จ

✔ ํ•„์ˆ˜ ์š”์†Œ

① ํ”„๋ก์‹œ (IP ๋ถ„์‚ฐ)

Rotating Proxy

์ตœ์†Œ 5~20๊ฐœ

② User-Agent ๋žœ๋ค

const agents = [

  "Mozilla/5.0 ... Chrome",

  "Mozilla/5.0 ... Safari"

];

③ ์š”์ฒญ ๊ฐ„ ๋”œ๋ ˆ์ด

2~10์ดˆ ๋žœ๋ค

④ ์—๋Ÿฌ ์žฌ์‹œ๋„

n8n Retry ๊ธฐ๋Šฅ ์‚ฌ์šฉ

5️⃣ ์‹ค์ œ ๋ˆ ๋˜๋Š” ์ž๋™ํ™” ์˜ˆ์‹œ

๐Ÿ’ฐ 1. ๊ฐ€๊ฒฉ ์ถ”์  (์ฟ ํŒก/๋„ค์ด๋ฒ„)

๊ฐ€๊ฒฉ ๋–จ์–ด์ง€๋ฉด ์•Œ๋ฆผ

์ œํœด๋งˆ์ผ€ํŒ… ์—ฐ๊ฒฐ

๐Ÿ’ฐ 2. ๋‰ด์Šค/์ด์Šˆ ์ž๋™ ์ˆ˜์ง‘

ํ‚ค์›Œ๋“œ ํฌ๋กค๋ง → ๋ธ”๋กœ๊ทธ ์ž๋™ ์ž‘์„ฑ

๐Ÿ’ฐ 3. ์ฑ„์šฉ/์ž…์ฐฐ ์ •๋ณด

์‹ ๊ทœ ๊ณต๊ณ  ๊ฐ์ง€ → ํ…”๋ ˆ๊ทธ๋žจ ์ „์†ก

๐Ÿ’ฐ 4. SNS ์ฝ˜ํ…์ธ  ์ž๋™ ์ƒ์„ฑ

ํŠธ๋ Œ๋“œ → GPT → ์ž๋™ ์—…๋กœ๋“œ

6️⃣ ์„œ๋ฒ„ ๊ตฌ์„ฑ (ํ˜„์‹ค์ ์ธ ์ถ”์ฒœ)

✔ ์ตœ์†Œ ๊ตฌ์„ฑ

Ubuntu ์„œ๋ฒ„

Docker

n8n ์ปจํ…Œ์ด๋„ˆ


๐Ÿ‘‰ ์ถ”์ฒœ ์กฐํ•ฉ:


n8n + PostgreSQL

Redis (ํ ์ฒ˜๋ฆฌ)

7️⃣ ์ถ”์ฒœ ์ „์ฒด ๊ตฌ์กฐ (์‹ค์ „ํ˜•)

[CRON]

  ↓

[n8n]

  ↓

[Queue (Redis)]

  ↓

[ํฌ๋กค๋Ÿฌ ์„œ๋ฒ„ (Puppeteer)]

  ↓

[DB ์ €์žฅ]

  ↓

[AI ๊ฐ€๊ณต]

  ↓

[๋ธ”๋กœ๊ทธ / SNS ์ž๋™ ์—…๋กœ๋“œ]

8️⃣ ํ”ํ•œ ๋ฌธ์ œ (๋ฏธ๋ฆฌ ๋ง‰์•„๋ผ)

403 Forbidden → ํ—ค๋” ๋ฌธ์ œ

CAPTCHA → ํ”„๋ก์‹œ + ์†๋„ ์กฐ์ ˆ

๋ฐ์ดํ„ฐ ๊นจ์ง → selector ์ž˜๋ชป

์„œ๋ฒ„ ๋‹ค์šด → Docker ์žฌ์‹œ์ž‘ ์„ค์ •

9️⃣ ํ•ต์‹ฌ ํ•œ์ค„ ์ •๋ฆฌ


๐Ÿ‘‰ “ํฌ๋กค๋ง”๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฑด

์•ˆ ๋ง‰ํžˆ๊ณ  24์‹œ๊ฐ„ ๋Œ์•„๊ฐ€๋Š” ๊ตฌ์กฐ ์„ค๊ณ„๋‹ค.

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

ํด๋กœ๋“œ ์ฝ”๋“œ React TypeScript ์Šคํƒ€์ผ ์ผ๊ด€์„ฑ ์œ ์ง€ ํŒ

๊ธฐํ˜ธ๋กœ ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ์‹ค์‹œ๊ฐ„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ•

ํด๋กœ๋“œ ์ฝ”๋“œ n8n ์›Œํฌํ”Œ๋กœ์šฐ ์ž๋™ํ™” ์—ฐ๋™ ๊ฐ€์ด๋“œ