Skip to content
JakeLim17Public

About

Local project dashboard for code visualization, Claude/Codex/Cursor usage, and GA4 & Search Console analytics.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Manage-A โ€” ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋Œ€์‹œ๋ณด๋“œ

ํ•œ๊ตญ์–ด ยท English

ํ”„๋กœ์ ํŠธ ์‹œ๊ฐํ™”ยทAI ์‚ฌ์šฉ๋Ÿ‰ยท๋ฐฉ๋ฌธ ํ†ต๊ณ„๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.

Manage-A๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ ๊ตฌ์กฐ์™€ ํ๋ฆ„๋„, ์šด์˜ ์ƒํƒœ, AI ๋„๊ตฌ ์‚ฌ์šฉ๋Ÿ‰, ๋ฐฉ๋ฌธยท๊ฒ€์ƒ‰ ํ†ต๊ณ„๋ฅผ ํ•œ๊ณณ์—์„œ ํ™•์ธํ•˜๋Š” ๋กœ์ปฌ ๋Œ€์‹œ๋ณด๋“œ์ž…๋‹ˆ๋‹ค. ClaudeยทCodexยทCursor ์‚ฌ์šฉ๋Ÿ‰๊ณผ Google Analytics 4(GA4)ยทSearch Console ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ๊ฐ์˜ ์ถœ์ฒ˜์™€ ์—ฐ๊ฒฐ ์ƒํƒœ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ 127.0.0.1์—์„œ๋งŒ ์‹คํ–‰๋˜๋ฉฐ, ํƒ์ƒ‰ํ•œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ์ž์˜ ํ”„๋กœ์ ํŠธ ํด๋”์™€ ๊ณ„์ •์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘

ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ์€ Node.js 24์ž…๋‹ˆ๋‹ค(์ตœ์†Œ 22.9). ๋ณ„๋„ ์˜์กด์„ฑ ์„ค์น˜์™€ ๋นŒ๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

1. ๋‹ค์šด๋กœ๋“œ

Git์ด ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”.

git clone https://github.com/JakeLim17/Manage-A.git
cd Manage-A

Git ์—†์ด ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์ €์žฅ์†Œ์˜ Code โ†’ Download ZIP์„ ์„ ํƒํ•˜๊ณ  ์••์ถ•์„ ํ‘ผ ํด๋”์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค.

2. ํ”„๋กœ์ ํŠธ ํด๋” ์ง€์ •

macOS / Linux:

cp .env.example .env

Windows PowerShell:

Copy-Item .env.example .env

๋ณต์‚ฌํ•œ .env ํŒŒ์ผ์— ๋ณธ์ธ์˜ ํ”„๋กœ์ ํŠธ๋“ค์ด ๋“ค์–ด ์žˆ๋Š” ํด๋”์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ ์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์„ธ์š”.

# macOS / Linux ์˜ˆ์‹œ
PROJECT_ROOT="/Users/your-name/Projects"

# Windows์—์„œ๋Š” ์œ„ ์ค„ ๋Œ€์‹  ๋ณธ์ธ์˜ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# PROJECT_ROOT="C:/Users/your-name/Projects"
HOST=127.0.0.1
PORT=4310

PROJECT_ROOT๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Manage-A ํด๋”์˜ ์ƒ์œ„ ํด๋”๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Projects/Manage-A, Projects/my-app, Projects/my-site ๊ตฌ์กฐ๋กœ ๋‘๋ฉด ๋‚˜๋ž€ํžˆ ๋†“์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ชฉ๋ก์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

3. ์‹คํ–‰

npm start

๋ธŒ๋ผ์šฐ์ €์—์„œ **http://127.0.0.1:4310**์„ ์—ฝ๋‹ˆ๋‹ค. macOS์—์„œ๋Š” Start Dashboard.command๋ฅผ ๋”๋ธ”ํด๋ฆญํ•ด ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹คํ–‰ ํŒŒ์ผ์ด ์ฐจ๋‹จ๋˜๋ฉด ํ„ฐ๋ฏธ๋„์˜ npm start๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํ„ฐ๋ฏธ๋„์„ ์ผœ ๋‘” ๋™์•ˆ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ข…๋ฃŒํ•˜๋ ค๋ฉด ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์—์„œ Ctrl+C๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์Œ์— ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ฐ™์€ ํด๋”์—์„œ npm start๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

4. ์ฒ˜์Œ ์„ค์ •ํ•˜๊ธฐ

  • ์„ค์ • โ†’ ์‚ฌ์šฉ์ž๋ช…: ์ฒซ ํ™”๋ฉด์˜ ์ธ์‚ฌ์™€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ: ํƒ์ƒ‰๋œ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ  ์„ค๋ช…ยท์šด์˜ ์ƒํƒœยท์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • AI ์‚ฌ์šฉ๋Ÿ‰: ๋ณธ์ธ์˜ CLI ๋กœ๊ทธ์ธ, CSV ๋˜๋Š” Admin API ํ‚ค๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋… ํ•œ๋„์™€ API ๋น„์šฉ์€ ๋ณ„๋„๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐฉ๋ฌธยท๊ฒ€์ƒ‰: ๋ณธ์ธ์˜ Google ์ธ์ฆ์„ ์—ฐ๊ฒฐํ•˜๊ณ  ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ GA4 ์†์„ฑ ๋˜๋Š” Search Console ์‚ฌ์ดํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. โ€˜ํ†ต๊ณ„ ๊ฐ€์ ธ์˜ค๊ธฐโ€™๋กœ ์‹ค์ œ ์ˆ˜์‹ ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์„ค๋ช…์„œ: ํ™”๋ฉด๋ณ„ ํ•ด์„๊ณผ ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ณ„์ • ์—ฐ๋™ ์—†์ด๋„ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐยทํ๋ฆ„ยท๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ์ด๋‚˜ ๊ฐœ์ธ ํ†ต๊ณ„๋Š” ์†Œ์Šค์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 127.0.0.1์€ ์ ‘์†ํ•˜๋Š” ์ปดํ“จํ„ฐ ์ž์‹ ์˜ ์ฃผ์†Œ์ด๋ฏ€๋กœ, ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

OS๋ณ„ ์ง€์› ๋ฒ”์œ„

๊ธฐ๋ณธ ๋Œ€์‹œ๋ณด๋“œ๋Š” Node.js๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. Windows / Linux ์‹คํ–‰ ์•ˆ๋‚ด๋Š” ์ œ๊ณตํ•˜์ง€๋งŒ, ํ˜„์žฌ ์‹คํ™˜๊ฒฝ ๊ฒ€์ฆ์€ macOS์—์„œ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Claude ๊ตฌ๋… ํ•œ๋„ ์ž๋™ ์กฐํšŒ๋Š” macOS์™€ Python 3๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Codex ์ž๋™ ์กฐํšŒ๋Š” ๋กœ๊ทธ์ธ๋œ Codex CLI๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, Cursor๋Š” CSV ๊ฐ€์ ธ์˜ค๊ธฐ์™€ ์ง์ ‘ ๊ธฐ๋ก์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. CLI๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋กœ๊ทธ์ธ๋˜์ง€ ์•Š์•„๋„ ๋Œ€์‹œ๋ณด๋“œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์—ฐ๋™์€ ๋ฏธ์—ฐ๊ฒฐ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๋ฌธ์ œ ํ•ด๊ฒฐ

  • node / npm ๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์–ด์š”: Node.js๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ„ฐ๋ฏธ๋„์„ ์ƒˆ๋กœ ์—ฐ ๋’ค node --version์„ ํ™•์ธํ•˜์„ธ์š”.
  • ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ณด์ด์ง€ ์•Š์•„์š”: .env์˜ PROJECT_ROOT๊ฐ€ ํ”„๋กœ์ ํŠธ ํด๋”๋“ค์„ ํฌํ•จํ•˜๋Š” ์‹ค์ œ ๊ฒฝ๋กœ์ธ์ง€ ํ™•์ธํ•œ ๋’ค ์„œ๋ฒ„๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜์„ธ์š”.
  • 4310 ํฌํŠธ๋ฅผ ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ด์—์š”: ๊ธฐ์กด Manage-A ํ„ฐ๋ฏธ๋„์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ .env์˜ PORT๋ฅผ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พธ๊ณ  ๊ทธ ๋ฒˆํ˜ธ์˜ ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜์„ธ์š”. macOS ๋”๋ธ”ํด๋ฆญ ์‹คํ–‰ ํŒŒ์ผ์€ ๊ธฐ๋ณธ ํฌํŠธ 4310์šฉ์ด๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ํฌํŠธ์—์„œ๋Š” npm start๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Google ์—ฐ๊ฒฐ์€ ๋๋Š”๋ฐ ํ†ต๊ณ„๊ฐ€ ์•ˆ ์™€์š”: OAuth ํ”„๋กœ์ ํŠธ์˜ ์„ธ API ํ™œ์„ฑํ™”, ๊ณ„์ •์˜ ์†์„ฑ ์ฝ๊ธฐ ๊ถŒํ•œ, ํ”„๋กœ์ ํŠธ๋ณ„ ์†์„ฑ ์„ ํƒ์„ ํ™•์ธํ•˜์„ธ์š”. ๋กœ๊ทธ์ธ ์™„๋ฃŒ์™€ ์‹ค์ œ ์ˆ˜์‹ ์€ ๋ณ„๋„๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ํด๋” ์ด๋ฆ„์ด๋‚˜ ์„œ๋ฒ„ ์„ค์ •์„ ๋ฐ”๊ฟจ์–ด์š”: .env ๋ณ€๊ฒฝ ํ›„์—๋Š” ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์„ธ์š”. .local/์„ ๋ณด๊ด€ํ•˜๋ฉด ๊ธฐ์กด ๊ด€๋ฆฌ ์„ค์ •๊ณผ ๋งˆ์ง€๋ง‰ ์กฐํšŒ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ณด๊ด€๊ณผ ๊ณต์œ 

์›น ํ™”๋ฉด๊ณผ ๋กœ์ปฌ ์„œ๋ฒ„๊ฐ€ ํ•จ๊ป˜ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ ํƒ์ƒ‰๊ณผ ๊ณ„์ • ์กฐํšŒ๋Š” ์‹คํ–‰ํ•˜๋Š” ์ปดํ“จํ„ฐ์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ ‘์† ๋ฒ”์œ„๋Š” 127.0.0.1์ž…๋‹ˆ๋‹ค. ์›๊ฒฉ ์ ‘๊ทผ์€ ์•„๋ž˜์˜ ๋ณ„๋„ ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

.env, .local/, output/, .output/๋Š” Git์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ์„ค์ •, ์ธ์ฆ ์ •๋ณด, ์‹ค์ œ ํ†ต๊ณ„์™€ ํ”„๋กœ์ ํŠธ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ํ™”๋ฉด ์บก์ฒ˜๋ฅผ ๊ณต๊ฐœ ์ €์žฅ์†Œ์— ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”. OAuth ํด๋ผ์ด์–ธํŠธ JSON๊ณผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋Š” ์ €์žฅ์†Œ ๋ฐ–์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์„œ๋ฒ„๋ฅผ ๋จผ์ € ์ข…๋ฃŒํ•˜๊ณ  ๋ณธ์ธ์˜ .local/์„ ๋ณ„๋„ ๋ฐฑ์—…ํ•œ ๋’ค ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์†Œ์Šค์—๋Š” LICENSE๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉยท์ˆ˜์ •ยท์žฌ๋ฐฐํฌ ํ—ˆ์šฉ ๋ฒ”์œ„๋Š” ๋ผ์ด์„ ์Šค๋ฅผ ๊ฒฐ์ •ํ•œ ๋’ค ๋ช…์‹œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ œ๊ณต ๊ธฐ๋Šฅ

  • ์ง€์ •ํ•œ ํ”„๋กœ์ ํŠธ ํด๋”์˜ ํ”„๋กœ์ ํŠธ ์ž๋™ ๋ฐœ๊ฒฌ: package.json ๊ธฐ์ˆ  ์Šคํƒ, README ์„ค๋ช…, Git ๋ธŒ๋žœ์น˜ยท์ตœ๊ทผ ์ปค๋ฐ‹ยท๋ณ€๊ฒฝ ํŒŒ์ผ ์ˆ˜, ๋กœ์ปฌ ์ฃผ์†Œ์˜ TCP ํฌํŠธ ์‘๋‹ต ์—ฌ๋ถ€. macOS์—์„œ๋Š” ์ˆ˜์‹  ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—… ํด๋”๋„ ํ™•์ธํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ํฌํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ ์‘๋‹ต์€ ํ•ด๋‹น ์•ฑ์˜ ์ •์ƒ ๋™์ž‘์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ œํ•œ๋œ ์†Œ์Šค ํŒŒ์ผ ํƒ์ƒ‰์œผ๋กœ API ๊ฒฝ๋กœ, ํŽ˜์ด์ง€, DB/AI ํŒจํ‚ค์ง€, ์‚ฌ์ดํŠธ๋งตยทrobotsยท๋ฉ”ํƒ€ ํŒŒ์ผ ๋ฐœ๊ฒฌ. ๋น„๋ฐ€ ํŒŒ์ผ๊ณผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋Š” ํƒ์ƒ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊นŠ์ด 8๋‹จ๊ณ„ยท3,000๊ฐœ ํ•ญ๋ชฉ๊นŒ์ง€ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ํฐ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฐ๊ณผ๋Š” ์ผ๋ถ€์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ยท์„ค๋ช…ยท์šด์˜ ์ƒํƒœยท์ฃผ์š” ๊ธฐ๋Šฅยทํ†ต๊ณ„ ์†์„ฑ ํŽธ์ง‘๊ณผ ๋กœ์ปฌ ์ €์žฅ.
  • ์›€์ง์ด๋Š” ํ๋ฆ„๋„, ๋‹จ๊ณ„ ์„ ํƒ, ์ผ์‹œ์ •์ง€, ์†๋„ ์กฐ์ ˆ, ๋‹จ๊ณ„ยท์—ฐ๊ฒฐ์„ ์ž…๋ ฅํ•˜๋Š” ์‹œ๊ฐ ํŽธ์ง‘. ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ํŒŒ์ผยท์˜์กด์„ฑ์„ ์ฐธ๊ณ ํ•œ ์„ค๋ช…์šฉ ๊ตฌ์กฐ์ด๋ฉฐ ์‹ค์ œ ์š”์ฒญ์ด๋‚˜ ์ •ํ™•ํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ž๋™ ์ถ”์ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ClaudeยทCodexยทCursor ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•ด ๊ธฐ๋ก: ์ถœ์ฒ˜, ์ž…๋ ฅ ์‹œ๊ฐ, ํ•œ๋„ ๊ตฌ๊ฐ„, ์ดˆ๊ธฐํ™” ์˜ˆ์ •. Codex๋Š” ๋กœ๊ทธ์ธ๋œ CLI์˜ ๊ณต์‹ account/rateLimits/read๋ฅผ 5๋ถ„๋งˆ๋‹ค ์กฐํšŒํ•˜๊ณ , ์—ฌ๋Ÿฌ ํ•œ๋„๊ฐ€ ์žˆ์œผ๋ฉด ๊ฐ๊ฐ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. CLI ์ดˆ๊ธฐํ™”์™€ ๊ณ„์ • ์ฝ๊ธฐ๋งŒ ์‹คํ–‰ํ•˜๋ฉฐ ๋ชจ๋ธ ๋Œ€ํ™”๋Š” ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Claude๋Š” macOS์—์„œ ๋กœ๊ทธ์ธ๋œ Claude Code์˜ /usage๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. Cursor๋Š” CSV ๊ฐ€์ ธ์˜ค๊ธฐ์™€ ์ง์ ‘ ๊ธฐ๋ก์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • GA4 ๋ฐฉ๋ฌธ์žยท์กฐํšŒยท์„ธ์…˜ยท์œ ์ž… ๊ฒฝ๋กœยท์ธ๊ธฐ ํŽ˜์ด์ง€ ๋ฐ Search Console ๊ฒ€์ƒ‰์–ดยทํด๋ฆญยท๋…ธ์ถœยทCTRยทํ‰๊ท  ์ˆœ์œ„ ์‹ค๋ฐ์ดํ„ฐ ์กฐํšŒ.
  • ํ†ต๊ณ„ ๋ฏธ์—ฐ๊ฒฐ ์ƒํƒœ ๋ฐ ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒํ•˜๋Š” ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ ๋ชจ๋“œ.
  • ๋กœ์ปฌ SEO ํŒŒ์ผ ์ ๊ฒ€: ์‚ฌ์ดํŠธ๋งต๊ณผ robots ํŒŒ์ผ ์กด์žฌ, ์ •์  index.html ์ œ๋ชฉยท์„ค๋ช… ํƒœ๊ทธ, ๋™์  ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ. ์‹ค์ œ ๋ฐฐํฌยท์ƒ‰์ธยท์„ฑ๋Šฅ ์ •์ƒ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Git ํ™œ๋™๊ณผ ๊ด€๋ฆฌ ๊ธฐ๋ก, ๊ด€๋ฆฌ ์ •๋ณด JSON ๋‚ด๋ณด๋‚ด๊ธฐ, 60์ดˆ๋งˆ๋‹ค ํ”„๋กœ์ ํŠธ ํ˜„ํ™ฉ ๊ฐฑ์‹ , ๋ชจ๋ฐ”์ผ ๋Œ€์‘, ํ‚ค๋ณด๋“œ ์กฐ์ž‘, ์›€์ง์ž„ ์ค„์ด๊ธฐ ์„ค์ • ๋ฐ˜์˜.

์šด์˜ ์ƒํƒœ๋Š” ์ง์ ‘ ์ง€์ •ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ํด๋”๊ฐ€ ์กด์žฌํ•˜๊ฑฐ๋‚˜ Git์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋Š” ์ด์œ ๋กœ ์šด์˜ ์ค‘ยท์ •์ƒ์ด๋ผ๊ณ  ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚ค์™€ .env๋Š” ํ”„๋กœ์ ํŠธ ์ˆ˜์ง‘ ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์„ค์ •

.env.example์„ .env๋กœ ๋ณต์‚ฌํ•˜์—ฌ ํ•„์š”ํ•œ ๊ฐ’๋งŒ ์„ค์ •ํ•˜์„ธ์š”. .env์™€ .local/์€ Git์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ธฐ๋ณธ๊ฐ’ / ์˜๋ฏธ
PORT 4310
HOST 127.0.0.1
PROJECT_ROOT Manage-A์˜ ์ƒ์œ„ ํด๋”
GOOGLE_APPLICATION_CREDENTIALS ์™ธ๋ถ€์— ๋ณด๊ด€ํ•œ ์„œ๋น„์Šค ๊ณ„์ • JSON ํŒŒ์ผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ
DASHBOARD_PASSWORD ์›๊ฒฉ ๋ชจ๋“œ์—์„œ 16์ž ์ด์ƒ ํ•„์ˆ˜
PUBLIC_ORIGIN ์›๊ฒฉ ๋ชจ๋“œ์˜ ์ •ํ™•ํ•œ ์ ‘์† origin (์˜ˆ: https://control.example.com)
COOKIE_SECURE HTTPS ํ”„๋ก์‹œ ์‚ฌ์šฉ ์‹œ true ํ•„์ˆ˜

.local/settings.json์— ์‚ฌ์šฉ์ž๋ช…ยท์ง์ ‘ ์ž…๋ ฅํ•œ ์ •๋ณดยท๋งˆ์ง€๋ง‰ ํ†ต๊ณ„ ์กฐํšŒ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. .local/deployments.json์€ ๋ฐฐํฌ ์Šค๋ƒ…์ƒท์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—… ์‹œ ์ด ํŒŒ์ผ์„ ๊ฐœ์ธ ๋ณด๊ด€์†Œ์— ๋ณต์‚ฌํ•˜์„ธ์š”. JSON ๋‚ด๋ณด๋‚ด๊ธฐ์—๋Š” ๋น„๋ฐ€ ํ‚ค๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์ง€๋งŒ ํ”„๋กœ์ ํŠธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜๋ฏ€๋กœ ๊ณต์œ ํ•˜์ง€ ๋งˆ์„ธ์š”.

ํ”„๋กœ์ ํŠธ๋ณ„ ์„œ๋น„์Šค ๊ณ„์ •

๊ฐœ์š”์˜ ํ”„๋กœ์ ํŠธ๋ณ„ ์—ฐ๊ฒฐ ๊ณ„์ •์—์„œ๋Š” GitHubยทVercelยทDB ๊ณ„์ •์„ ํ•จ๊ป˜ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์ •๋ณ„๋กœ ๋ณด๊ธฐ๋กœ ๊ฐ™์€ ๊ณ„์ •์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ์•„ ๋ด…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก๊ณผ ํ๋ฆ„๋„์˜ ํ”„๋กœ์ ํŠธ ์นด๋“œ์—๋„ ๊ณ„์ • ์ด๋ฆ„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฌด๋ฃŒ ๊ณ„์ •์„ ๋‚˜๋ˆ„์–ด ์“ฐ๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ • โ†’ ๊ณ„์ • ์ถ”๊ฐ€์—์„œ ๊ฐœ์ธโ‘ , ๊ฐœ์ธโ‘ก, ํšŒ์‚ฌ์ฒ˜๋Ÿผ ๋ณ„์นญ์„ ๋ถ™์—ฌ ๊ฐ๊ฐ ๋“ฑ๋กํ•˜์„ธ์š”. ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ ๋ฅธ ๋’ค ์‚ฌ์šฉ ๊ณ„์ • ์„ ํƒ์—์„œ ์„œ๋น„์Šค๋ณ„๋กœ ๊ณ ๋ฅด๊ณ  ์ด ํ”„๋กœ์ ํŠธ ๊ณ„์ • ํ™•์ธ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ์ž๋™ ์ฐพ๊ธฐ๋Š” ๋“ฑ๋ก๋œ ์—ฐ๊ฒฐ๋“ค์„ ์กฐํšŒํ•ด ์ •ํ™•ํ•œ ํ”„๋กœ์ ํŠธ ID๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ณ„์ •์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ๊ณ„์ •์„ ์ง€์ •ํ•˜๋ฉด ๋‹ค๋ฅธ ๋กœ๊ทธ์ธ์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋“ฑ๋ก ๊ณ„์ • ๊ด€๋ฆฌ์—์„œ ๋ณ„์นญ๊ณผ ํ† ํฐ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„์นญ์€ ์‹ค์ œ ์†Œ์œ  ์กฐ์ง๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ž์„ธํ•œ ์†Œ์†ยท์กฐํšŒ ๊ณ„์ •์€ ํ™•์ธ ๋‚ด์—ญ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์„œ๋น„์Šค ๊ณ„์ • ํ™”๋ฉด์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  ์—ฐ๊ฒฐ ID๋ฅผ ๊ฒ€ํ† ํ•œ ๋’ค ๊ณ„์ • ํ™•์ธ์„ ๋ˆ„๋ฅด์„ธ์š”. Git origin, Vercel ํ”„๋กœ์ ํŠธ ์„ค์ •, Supabase ์—ฐ๊ฒฐ ํŒŒ์ผ, Wrangler ๊ณ„์ • ID์—์„œ ๋Œ€์ƒ์„ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ID ํŽธ์ง‘์œผ๋กœ ์ง์ ‘ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ž๋™ ๋ฐœ๊ฒฌ์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub์™€ Supabase๋Š” ๋กœ๊ทธ์ธ๋œ ๊ณต์‹ CLI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vercel์€ macOS์˜ ๊ณต์‹ CLI ๋กœ๊ทธ์ธ ํŒŒ์ผ์„ ์ž๋™ ๊ฐ์ง€ํ•ด ํ† ํฐ์„ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ๊ณต์‹ ์ฝ๊ธฐ API๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. CLI ๋กœ๊ทธ์ธ์ด ์—†๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ณ„์ •์ด๋ผ๋ฉด ํ† ํฐ ์—ฐ๊ฒฐ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ , Cloudflare๋„ ์ฝ๊ธฐ ํ† ํฐ์„ ๋“ฑ๋กํ•˜์„ธ์š”. Supabase์˜ ํ”„๋กœ์ ํŠธ ์ฐพ๊ธฐ๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์‹ค์ œ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋ฉฐ ์ง์ ‘ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์œผ๋กœ ์ž๋™ ๋งค์นญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์†Œ์œ  ๊ณ„์ •ยท์กฐ์ง๊ณผ ์กฐํšŒ์— ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ ๊ณ„์ •์€ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. Supabase๋Š” ์†Œ์† ์กฐ์ง์„ ํ‘œ์‹œํ•˜๋ฉฐ ๊ฐœ์ธ ์ด๋ฉ”์ผ์„ ์ถ”์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Cloudflare๋Š” ๊ณ„์ • ์ ‘๊ทผ๋งŒ ํ™•์ธํ•˜๋ฉฐ ํŠน์ • WorkerยทPages ๋ฐฐํฌ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹คํŒจยทID ๋ถˆ์ผ์น˜๋Š” ์—ฐ๊ฒฐ ์™„๋ฃŒ๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ , ์„ฑ๊ณต ๊ฒฐ๊ณผ๋„ 15๋ถ„ ๋’ค์—๋Š” ์žฌํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

AI ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์„œ๋น„์Šค ๊ณ„์ • ํ™”๋ฉด์˜ AI์—๊ฒŒ ์—ฐ๋™ ์š”์ฒญ์€ ์ž‘์—…์— ๋งž๋Š” ์š”์ฒญ๋ฌธ์„ ๋งŒ๋“ค์–ด ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” AI ๋„๊ตฌ์— ๋ถ™์—ฌ๋„ฃ์–ด ์—ฐ๊ฒฐ ์ž‘์—…์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์‚ฌ๋งŒ์œผ๋กœ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ† ํฐ์„ ์ฑ„ํŒ…์ด๋‚˜ Git์— ๋ถ™์—ฌ๋„ฃ์ง€ ๋งˆ์„ธ์š”.

ํ† ํฐ ์ž…๋ ฅ์€ ๋กœ์ปฌ ๋ชจ๋“œ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ .local/service-credentials.json์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ Git์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. .env.example์˜ ์„œ๋น„์Šค ํ† ํฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋‹จ์ผ ํ† ํฐ๊ณผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋„ ๋ณ„๋„ ์—ฐ๊ฒฐ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž๋™ ์ฐพ๊ธฐ๋Š” ๋“ฑ๋ก๋œ ์—ฐ๊ฒฐ๋“ค์„ ์ฐจ๋ก€๋กœ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ID์™€ ๊ณ„์ • ๋ฉ”๋ชจ๋ฅผ ์ ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์‹ค์ œ ์—ฐ๊ฒฐ ํ™•์ธ์ด ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

Google ํ†ต๊ณ„ ์—ฐ๊ฒฐ

  1. OAuth ํด๋ผ์ด์–ธํŠธ์˜ Google Cloud ํ”„๋กœ์ ํŠธ์—์„œ Analytics Data API, Analytics Admin API, Search Console API๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐฉ๋ฌธยท๊ฒ€์ƒ‰ โ†’ Google๋กœ ์—ฐ๊ฒฐ์—์„œ OAuth ํด๋ผ์ด์–ธํŠธ JSON ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ  Google ํ†ต๊ณ„ ์ฝ๊ธฐ ๊ถŒํ•œ์„ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋กœ์ปฌ ์ฝœ๋ฐฑยทํ† ํฐ ๋ณด๊ด€ ๋ฐฉ์‹์€ ์•„๋ž˜ โ€˜Google ๋กœ๊ทธ์ธ์œผ๋กœ ๋ฐฉ๋ฌธยท๊ฒ€์ƒ‰ ํ†ต๊ณ„ ์—ฐ๊ฒฐโ€™์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  3. ํ”„๋กœ์ ํŠธ์™€ ๊ธฐ๊ฐ„์„ ๊ณ ๋ฅธ ๋’ค ํ†ต๊ณ„ ์†์„ฑ ์ฐพ๊ธฐ์—์„œ ์‹ค์ œ GA4 ์†์„ฑ๊ณผ Search Console ์‚ฌ์ดํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น Google ๊ณ„์ •์— ์†์„ฑ ์ฝ๊ธฐ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐฉ๋ฌธยท๊ฒ€์ƒ‰์—์„œ ํ†ต๊ณ„ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ์ธ์ฆ ์™„๋ฃŒ, ์†์„ฑ ๋“ฑ๋ก, ์‹ค์ œ ์ˆ˜์‹ ์€ ๊ฐ๊ฐ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ์„œ๋น„์Šค ๊ณ„์ •๋„ ์—ฐ๊ฒฐ ์ฐฝ์˜ โ€˜์„œ๋น„์Šค ๊ณ„์ • ํŒŒ์ผ๋กœ ์—ฐ๊ฒฐโ€™์—์„œ JSON ํŒŒ์ผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋Š” ์ €์žฅ์†Œ ๋ฐ–์— ๋ณด๊ด€ํ•˜๊ณ  ํ•ด๋‹น ์ด๋ฉ”์ผ์— ์†์„ฑ ์ฝ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ํ‚ค ๋‚ด์šฉ์„ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์–‘์‹์— ์ž…๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .env์˜ GOOGLE_APPLICATION_CREDENTIALS ๊ฒฝ๋กœ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ๊ฐ’์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ์„ ์ง์ ‘ ์ž…๋ ฅํ•  ๋•Œ ๋„๋ฉ”์ธ ์†์„ฑ์€ sc-domain:example.com, URL ์ ‘๋‘์–ด ์†์„ฑ์€ ๋“ฑ๋ก๋œ ์ •ํ™•ํ•œ URL(๋ / ํฌํ•จ)์ž…๋‹ˆ๋‹ค.

GA4๋Š” ์–ด์ œ๊นŒ์ง€ 7/28/90์ผ์„ ์กฐํšŒํ•˜๊ณ  Search Console์€ ์ง€์—ฐ์„ ๊ณ ๋ คํ•ด 3์ผ ์ „๊นŒ์ง€ ๋™์ผํ•œ ์ผ์ˆ˜๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. GA4 ํ™œ์„ฑ ์‚ฌ์šฉ์ž ํ•ฉ๊ณ„๋Š” ๋‚ ์งœ๋ณ„ ํ•ฉ์‚ฐ์ด ์•„๋‹ˆ๋ผ ๊ธฐ๊ฐ„ ์ „์ฒด ์กฐํšŒ ๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์–ด์™€ ์œ ์ž… ๊ฒฝ๋กœ๋Š” API๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ์ƒ์œ„ ํ•ญ๋ชฉ์ด๋ฉฐ ๊ฒ€์ƒ‰์–ด ํ•ฉ๊ณ„์™€ ์ „์ฒด ํ•ฉ๊ณ„๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐํšŒ ์‹คํŒจ๋Š” ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ณ  ์ˆ˜์น˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹ค์ œ GA4 ๋ฐ Search Console ๊ณ„์ •์œผ๋กœ ์กฐํšŒ์™€ ์ˆ˜์‹ ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„ค์น˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ณธ์ธ ๊ณ„์ •์˜ ๊ถŒํ•œ๊ณผ ์†์„ฑ ์—ฐ๊ฒฐ์„ ๋ณ„๋„๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ: GA4 Data API, Search Console ๊ถŒํ•œ, ๊ฒ€์ƒ‰ ์‹ค์  ์กฐํšŒ.

์›๊ฒฉ ์ ‘๊ทผ (์„ ํƒ)

๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ SSH ํ„ฐ๋„๋กœ ๋ณด๋Š” ๋ฐฉ์‹์ด ์šฐ์„ ์ž…๋‹ˆ๋‹ค. ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์˜ SSH ์ ‘๊ทผ์ด ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ssh -L 4310:127.0.0.1:4310 ์‚ฌ์šฉ์ž@๋Œ€์‹œ๋ณด๋“œ์ปดํ“จํ„ฐ

๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ http://127.0.0.1:4310์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ปดํ“จํ„ฐ๋Š” ์ผœ์ ธ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ๋กœ ๋กœ์ปฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณ„๋„ ํ˜ธ์ŠคํŒ…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›น ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๋ ค๋ฉด ์‹ ๋ขฐํ•˜๋Š” ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๊ณ  HTTPS ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋’ค์— ๋ฐฐ์น˜ํ•˜์„ธ์š”. ํ”„๋กœ์ ํŠธ ์›๋ณธ์„ ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ์˜ฎ๊ธธ์ง€ ์—ฌ๋ถ€๋Š” ๋ณ„๋„ ๊ฒฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ •์  ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ…์—๋Š” ๋กœ์ปฌ ํŒŒ์ผ ์ˆ˜์ง‘ ์„œ๋ฒ„๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ ์™ธ๋ถ€ ํ˜ธ์ŠคํŒ…์˜ ์ œ๊ณต ์—ฌ๋ถ€์™€ ํ•œ๋„๋Š” ์ด ํ”„๋กœ์ ํŠธ์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HOST=0.0.0.0
DASHBOARD_PASSWORD=๋ณธ์ธ์ด-๋งŒ๋“ -์ถฉ๋ถ„ํžˆ-๊ธด-๋น„๋ฐ€๋ฒˆํ˜ธ
PUBLIC_ORIGIN=https://control.example.com
COOKIE_SECURE=true

ํ”„๋ก์‹œ๋Š” Host์™€ Origin์„ ๋ณด์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์ด ๋น ์ง€๋ฉด ์›๊ฒฉ ์‹คํ–‰์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. HttpOnlyยทSameSite ์„ธ์…˜ ์ฟ ํ‚ค(8์‹œ๊ฐ„), ๋กœ๊ทธ์ธ ์‹œ๋„ ์ œํ•œ, Host ๊ฒ€์ฆ, ๋™์ผ Origin ๋ณ€๊ฒฝ ์š”์ฒญ ๊ฒ€์ฆ, CSP๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ๋ฐฐํฌยทHTTPS ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ยทํฌํŠธ ๊ฐœ๋ฐฉ์€ ์ž๋™์œผ๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท ๊ณต๊ฐœ ์šด์˜ ์‹œ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ ํ†ต์ œ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด๊ด€๋„ ์šด์˜์ž๊ฐ€ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒ€์ฆ

npm run check
npm test

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ์ž„์‹œ ํ”„๋กœ์ ํŠธ์™€ ์ž„์‹œ ๋ฐ์ดํ„ฐ ํด๋”, 4319ยท4320 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋‚˜ ๊ด€๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

v1.1 ๊ฐœ์„ 

  • ์ œํ’ˆ ์ด๋ฆ„ยท๋ธŒ๋ผ์šฐ์ € ์ œ๋ชฉยทํŒŒ๋น„์ฝ˜ยท๋กœ๊ณ ๋ฅผ Manage-A๋กœ ํ†ต์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •์˜ ์‚ฌ์šฉ์ž๋ช…์„ ์ฒซ ํ™”๋ฉด ์ธ์‚ฌ์™€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒซ ํ™”๋ฉด ์„ค๋ช…: ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, ์šด์˜ ์ƒํƒœ, AI ์‚ฌ์šฉ๋Ÿ‰์„ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹œ๋ณด๋“œ์ž…๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ ์–ธ์–ด๋ณ„ ํŒŒ์ผ ์ˆ˜์™€ ๋น„์œจ, ๋ฐœ๊ฒฌํ•œ ํŽ˜์ด์ง€/API ์ˆ˜, Git ๋ณ€๊ฒฝ ํŒŒ์ผ๊ณผ ๋กœ์ปฌ ํฌํŠธ, Vercel ๋ฐฐํฌ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ํฌํŠธ๋Š” README์™€ package.json dev/start ๋ช…๋ น์—์„œ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ์—ฐ๊ฒฐ ๊ตฌ์กฐ์™€ ์ง์ ‘ ์ •์˜ํ•œ ํ๋ฆ„์„ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ๋ณ„ API๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฉ”์„œ๋“œยทํŒŒ์ผยท๋‚ด๋ถ€ importยทDB/AI SDK์˜ ๊ฐ„์ ‘ import๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. import ์ถ”์ ์€ ์ตœ๋Œ€ 3๋‹จ๊ณ„ยท25๊ฐœ ํŒŒ์ผยท40๊ฐœ ์—ฐ๊ฒฐ, ํ”„๋กœ์ ํŠธ ์ „์ฒด import ์บ์‹œ๋Š” 160๊ฐœ ํŒŒ์ผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ์— ๊ฑธ๋ฆฌ๋ฉด ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์„ ์€ ํ™•์ธํ•œ import, ์ ์„ ์€ ์˜์กด์„ฑ/์„ค์ • ๊ธฐ๋ฐ˜ ์ถ”์ •์ž…๋‹ˆ๋‹ค. import๋Š” ์‹คํ–‰ ์ˆœ์„œ๋‚˜ ์‹ค์ œ ํ˜ธ์ถœ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์š”์ฒญ ์ด๋ฒคํŠธ ์ˆ˜์ง‘์€ ๋ฏธ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค. ์ •๊ทœ์‹์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋™์  ๋ผ์šฐํŠธ๋‚˜ ๋Ÿฐํƒ€์ž„ import๋Š” ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ๋ฆ„ ํŽธ์ง‘์€ JSON ์ž…๋ ฅ ๋Œ€์‹  ๋‹จ๊ณ„ ์ด๋ฆ„ยท์„ค๋ช…๊ณผ ์‹œ์ž‘/๋„์ฐฉ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์‚ญ์ œ๋Š” ์ €์žฅ ์ „ ์ดˆ์•ˆ์—๋งŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.
  • Codex ๊ณต์‹ CLI ํ•œ๋„๋Š” ์„œ๋ฒ„ ์‹œ์ž‘๊ณผ 5๋ถ„๋งˆ๋‹ค ๊ฐฑ์‹ ํ•˜๋ฉฐ, ์‹ค์ œ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐฑ์‹  ๋ฒ„ํŠผ์€ ์ตœ์†Œ 1๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. ์‹คํŒจํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์„ฑ๊ณต๊ฐ’๊ณผ ์˜ค๋ฅ˜๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. CODEX_BIN์œผ๋กœ ์‹คํ–‰ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ/์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋Š” DISABLE_BACKGROUND_SYNC=1๋กœ ์ž๋™ ์กฐํšŒ๋ฅผ ๋•๋‹ˆ๋‹ค.
  • Claude Code ์ตœ๊ทผ 7์ผ ๋กœ๊ทธ๋Š” ๋ฉ”์‹œ์ง€ ID๋กœ ์ค‘๋ณต ์ œ๊ฑฐํ•˜์—ฌ ์ž…๋ ฅยท์ถœ๋ ฅยท์บ์‹œ ํ† ํฐ๋งŒ ์ง‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ™” ๋‚ด์šฉ์€ ํ™”๋ฉด์— ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 16 MiB ์ดˆ๊ณผ ํŒŒ์ผ, ์ „์ฒด 64 MiB๋ฅผ ๋„˜๋Š” ํŒŒ์ผ์€ ์ œ์™ธํ•˜๋ฉฐ ์ œ์™ธ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ˆ˜์น˜๋Š” ๊ณ„์ • ์ „์ฒด ์‚ฌ์šฉ๋Ÿ‰ยท์ฒญ๊ตฌ์•กยท์ž”์—ฌ ํ•œ๋„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ์„ฑ๊ณตํ•œ GA4/Search Console ์กฐํšŒ๋Š” ๊ธฐ๊ฐ„๋ณ„๋กœ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ์žฌ๋ฐฉ๋ฌธ ์‹œ ๋งˆ์ง€๋ง‰ ์กฐํšŒ ์‹œ๊ฐ๊ณผ ํ•จ๊ป˜ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์†์„ฑ์ด ๋ฐ”๋€Œ๋ฉด ์ด์ „ ์บ์‹œ๋ฅผ ์ง€์›๋‹ˆ๋‹ค. ๊ณ„์ • ๊ถŒํ•œ์ด ์—†๋Š” ์ƒํƒœ์—์„œ ์ž„์˜ ์ˆ˜์น˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Vercel์˜ .vercel/project.json์„ ์ž๋™ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ๋„๊ตฌ์—์„œ ์ฝ์€ ๊ณต์‹ ์Šค๋ƒ…์ƒท๊ณผ 403/404 ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. .env์— VERCEL_TOKEN์„ ์„ค์ •ํ•˜๋ฉด ๋ฐฐํฌ ์ƒํƒœ ์กฐํšŒ ๋ฒ„ํŠผ์œผ๋กœ ํ˜„์žฌ API ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ํ† ํฐ์€ UI์—์„œ ์ž…๋ ฅ๋ฐ›๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๋‚˜ ์„ค์ • ๋ณ€๊ฒฝ์€ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฆ„ ๊ฒ€์ƒ‰ (2026-10-13)

Manage-A ํ‘œ๊ธฐ์˜ ๋™์ผ ๋Œ€์‹œ๋ณด๋“œ๋Š” ์ด๋ฒˆ ์›น ๊ฒ€์ƒ‰์—์„œ ๋šœ๋ ทํ•˜๊ฒŒ ํ™•์ธํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์œ ์‚ฌํ•œ Managea ์ด๋ฆ„์˜ CRM ์„œ๋น„์Šค์™€ ์—…๋ฌด ๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜ ์›น ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์ด๋ฉฐ ์ด๋ฆ„์˜ ๋…์ ์„ฑ์ด๋‚˜ ์ƒํ‘œ ๋“ฑ๋ก ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ ๋กœ์ปฌ ์ œํ’ˆ ์ด๋ฆ„์€ ์‚ฌ์šฉ์ž ์š”์ฒญ๋Œ€๋กœ Manage-A๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Codex ๊ณต์‹ ์ธํ„ฐํŽ˜์ด์Šค: OpenAI App Server ๋ฌธ์„œ.

v1.2 ์ƒํƒœ ์ ๊ฒ€๊ณผ ๋ณ€๊ฒฝ ์˜ํ–ฅ

  • ์ƒํƒœ ์ ๊ฒ€: ๋ฐœ๊ฒฌํ•œ ๋กœ์ปฌ ํฌํŠธ์— GET /๋ฅผ ๋ณด๋‚ด HTTP ์ƒํƒœยท์‘๋‹ต ์‹œ๊ฐ„ยท์กฐํšŒ ์‹œ๊ฐ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ๋Š” ์ œ์™ธํ•˜๋ฉฐ ์™ธ๋ถ€ ์ฃผ์†Œ์™€ ๋ฆฌ๋””๋ ‰์…˜ ๋Œ€์ƒ์—๋Š” ์ ‘์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‘๋‹ต ๋ณธ๋ฌธยทํ—ค๋”ยท์ฟ ํ‚ค๋Š” ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ์ฆ ์‘๋‹ต๊ณผ ๋ฆฌ๋””๋ ‰์…˜์€ ๊ฒ€ํ†  ๋Œ€์ƒ์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. 15๋ถ„์ด ์ง€๋‚œ HTTP ๊ฒฐ๊ณผ๋Š” ์žฌ์ ๊ฒ€ ๋Œ€์ƒ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ ํŽ˜์ด์ง€ ์‘๋‹ต์€ ์ „์ฒด ๊ธฐ๋Šฅ์ด๋‚˜ DB์˜ ์ •์ƒ ๋™์ž‘์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋นŒ๋“œยทํ…Œ์ŠคํŠธ ๊ธฐ๋ก: ์ง์ ‘ ํ™•์ธํ•œ ํ†ต๊ณผ/์‹คํŒจ ๊ฒฐ๊ณผ, ๊ฒ€์ฆ ์‹œ๊ฐ, ๋ฉ”๋ชจ๋ฅผ ๋กœ์ปฌ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์€ ์ž๋™ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ก ์‹œ Git ์ƒํƒœ์™€ ์†Œ์Šค ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์‹๋ณ„ํ•ด ์ดํ›„ ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ํ•˜๋ฃจ๊ฐ€ ์ง€๋‚˜๋ฉด ์žฌํ™•์ธ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ํฌ๊ธฐยท์ˆ˜์ • ์‹œ๊ฐ ๊ธฐ๋ฐ˜ ๋น„๊ต์ด๋ฏ€๋กœ ๋‚ด์šฉ ํ•ด์‹œ ๊ฒ€์ฆ์ด๋‚˜ CI ๊ฒฐ๊ณผ ์ธ์ฆ์„ ๋Œ€์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ์˜ํ–ฅ ์ง€๋„: ๊ธฐ์ค€ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๋Š” ํŒŒ์ผ์„ ์—ญ์œผ๋กœ ์ถ”์ ํ•ด ์ง์ ‘ยท๊ฐ„์ ‘ ์ฐธ์กฐ, ์—ฐ๊ฒฐ๋œ ํ™”๋ฉด๊ณผ API, ์ตœ๋‹จ ์ฐธ์กฐ ๊ฒฝ๋กœ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. Git ๋ณ€๊ฒฝ ํŒŒ์ผ ํ•„ํ„ฐ, ์†Œ์Šค ๊ฒ€์ƒ‰, ํ•ด๋‹น API์˜ ๊ธฐ์กด ๊ตฌ์กฐ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Git ๋ณ€๊ฒฝ ํŒŒ์ผ์€ ๊ณต๋ฐฑยทํ•œ๊ธ€ยท์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ๋ณด์กดํ•˜๊ณ  ์ตœ๋Œ€ 100๊ฐœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ„์„ ๋ฒ”์œ„: JSยทTSยทVueยทSvelte์˜ ์ •์  import/require์—์„œ ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋ฐ @/ ๋ณ„์นญ์„ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ 800๊ฐœ ํŒŒ์ผยท24MiBยท6,000๊ฐœ ์—ฐ๊ฒฐ์„ ๋ถ„์„ํ•˜๊ณ  ๋ฒ”์œ„์™€ ์ƒํ•œ ๋„๋‹ฌ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋™์  import, ๋‹ค๋ฅธ ๋ณ„์นญ, ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ, PythonยทSwift์˜ ์—ฐ๊ฒฐ์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๊ธฐ๋ฐ˜ ๋ฐœ๊ฒฌ์ด๋ฏ€๋กœ ์ฃผ์„์ด๋‚˜ ์กฐ๊ฑด๋ถ€ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ฐธ์กฐ๋Š” ์‹ค์ œ ์‹คํ–‰ ํ๋ฆ„์ด๋‚˜ ํ™•์ •๋œ ์˜ค๋ฅ˜ ์˜ํ–ฅ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ†ต๊ณ„ ์—ฐ๊ฒฐ ํ™•์ธ: ์ธ์ฆ ๊ฒฝ๋กœ ๋“ฑ๋ก, ํ”„๋กœ์ ํŠธ ์†์„ฑ ๋“ฑ๋ก, ์‹ค์ œ GA4ยทSearch Console ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ ์กฐํšŒ ์‹œ๋„์™€ ๋งˆ์ง€๋ง‰ ์„ฑ๊ณต ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋ฉฐ ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ๋Š” ์—ฐ๊ฒฐ ์„ฑ๊ณต์œผ๋กœ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Google ๊ณ„์ • ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ์‹ค์ œ ํ†ต๊ณ„ ์—ฐ๊ฒฐ์€ ์™„๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ™•์ธํ•  ์ผ๊ณผ ์ž‘์—… ๊ธฐ๋ก: ์ตœ๊ทผ ์ ๊ฒ€ ์˜ค๋ฅ˜, ๋ฐฐํฌ ์—ฐ๊ฒฐ ๋ฌธ์ œ, ์‚ฌ์šฉ๋Ÿ‰ ๋ถ€์กฑ, ๋ณ€๊ฒฝ ์˜ํ–ฅ ๊ฒ€ํ† ๋ฅผ ๊ฐœ์š”์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์šด์˜ ๊ธฐ๋ก์—๋Š” Gitยท๊ด€๋ฆฌ ๊ธฐ๋ก ์™ธ์— ์ตœ๊ทผ HTTP ์ ๊ฒ€๊ณผ ๋ฐฐํฌ ์กฐํšŒ๋„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ์—ฌ์œ  ๊ณต๊ฐ„์ด 512MiB ๋ฏธ๋งŒ์ด๋ฉด ์ €์žฅ ์‹คํŒจ ๊ฐ€๋Šฅ์„ฑ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋Š” import ์ˆœํ™˜ยท์—ญ๋ฐฉํ–ฅ ๊ฒฝ๋กœยท๋ฌด๊ด€ํ•œ ํŒŒ์ผ ์ œ์™ธ, ๋กœ์ปฌ HTTP ๋ฆฌ๋””๋ ‰์…˜ ์ฐจ๋‹จยท์‹œ๊ฐ„ ์ œํ•œยท์‘๋‹ต ๋ณธ๋ฌธ ๋ฏธ๋ณด๊ด€, ์˜ค๋ž˜๋œ ๊ฒฐ๊ณผ ์ œ์™ธ, ๊ฒ€์ฆ ๊ธฐ๋ก๊ณผ ์ดํ›„ ์ฝ”๋“œ ๋ณ€๊ฒฝ, API ์ธ์ฆยท์ €์žฅ, Git ํŒŒ์ผ๋ช… ์ฒ˜๋ฆฌ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

v1.3 ์ œ๊ณต์ž ์—ฐ๊ฒฐ๊ณผ ์ ๊ฒ€ ํ‘œ์‹œ

  • Claude ํ•œ๋„ ์ˆ˜์ง‘: npm run connect:claude๋Š” ~/.claude/settings.json์˜ ๊ณต์‹ statusLine ๋ช…๋ น์— ๋กœ์ปฌ ์ˆ˜์ง‘๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„ค์ •์€ ๊ฐ™์€ ํด๋”์— 0600 ๊ถŒํ•œ์œผ๋กœ ๋ฐฑ์—…ํ•˜๋ฉฐ ๊ธฐ์กด ์ƒํƒœ์ค„ ๋ช…๋ น์€ ์ด์–ด์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Claude CLI ๋กœ๊ทธ์ธ ํ›„ ์ง€์›ํ•˜๋Š” ๊ตฌ๋… ๊ณ„์ •์˜ ๋‹ค์Œ ์‘๋‹ต์—์„œ ์ œ๊ณต๋˜๋Š” rate_limits.five_hour, seven_day, spend_limit๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ ์‚ฌ์šฉ๋ฅ ์„ ๊ตฌ๋… ์ž”์—ฌ๋Ÿ‰์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆ˜์ง‘๊ธฐ๋Š” ๋ณ„๋„ ๋ชจ๋ธ ์š”์ฒญยทOAuth ํ† ํฐ ์ฝ๊ธฐยท์™ธ๋ถ€ ์ „์†ก์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€ํ™”ยท์„ธ์…˜ IDยท์ „๋ฌธ ๊ฒฝ๋กœ๋Š” ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ/์„ค์น˜/์ˆ˜์ง‘๊ธฐ ์„ค์ •/์ฒซ ์ˆ˜์‹  ๋Œ€๊ธฐ/์ด์ „ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์€ claude auth login์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Claude ๊ณต์‹ ์ƒํƒœ์ค„ ๋ฌธ์„œ
  • ์ˆ˜์ง‘๊ธฐ ๊ฒฝ๋กœ: ๊ธฐ๋ณธ ์ €์žฅ ์œ„์น˜๋Š” Manage-A์˜ .local์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ DATA_DIR๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋ฉด Claude ํ”„๋กœ์„ธ์Šค์—์„œ๋„ MANAGE_A_DATA_DIR๋ฅผ ๊ฐ™์€ ๊ฒฝ๋กœ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์›ํ•˜๋ ค๋ฉด Claude ์„ค์ •์˜ statusLine์„ ๋ฐฑ์—… ํŒŒ์ผ์˜ ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฌ์„ธ์š”. ๋‹ค๋ฅธ ์„ค์ •์€ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Cursor ๊ฐœ์ธ ๊ณ„์ •: ๊ณต์‹ ์‚ฌ์šฉ๋Ÿ‰ ํ™”๋ฉด ๋งํฌ, ์ž”์—ฌ ํ•œ๋„ ์ง์ ‘ ๊ธฐ๋ก, ์ด๋ฒคํŠธ CSV ์ง‘๊ณ„๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Date/Timestamp, Model, Cost/Total Cost ๋ฐ Tokens ๊ณ„์—ด ์—ด์„ ์ฝ์œผ๋ฉฐ ์ตœ๋Œ€ 768KiBยท10,000ํ–‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ๋ณ„ ์ด๋ฒคํŠธยทํ† ํฐยทCSV ๊ธฐ์žฌ ๋น„์šฉ๋งŒ ์ €์žฅํ•˜๋ฉฐ ์›๋ณธ CSVยท์ด๋ฉ”์ผยท๋Œ€ํ™” ID๋Š” ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋น„์šฉ์€ ๋ฏธ์ œ๊ณต์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚ ์งœ๊ฐ€ ์ž˜๋ชป๋œ ํ–‰์€ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜จ ํŒŒ์ผ ์ „์ฒด ๋ฒ”์œ„์˜ ๊ธฐ๋ก์ด๋ฉฐ ๊ฐœ์ธ ๊ตฌ๋…์˜ ์‹ค์‹œ๊ฐ„ ์ž”์—ฌ ํ•œ๋„๋‚˜ ํ™•์ • ์ฒญ๊ตฌ์•ก์„ ์‚ฐ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋ฉด ์ด์ „ ์ง‘๊ณ„๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ๋… ๊ด€๋ฆฌ: ์ œ๊ณต์ž๋ณ„ ํ”Œ๋žœ, ์‚ฌ์šฉ/์œ ๋ฃŒ ์ผ์‹œ ์ค‘๋‹จ/๋ฌด๋ฃŒ/๋ฏธํ™•์ธ, ๊ณผ๊ฑฐ ํ”Œ๋žœ ์ด๋ ฅ, ๋ฉ”๋ชจ๋ฅผ ์ง์ ‘ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๊ฒฐ์ œ๋‚˜ ํ•ด์ง€๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘๋‹จ ์ค‘์ธ ๊ณ„์ •์€ ์ด์ „ ํ•œ๋„๋ฅผ ํ˜„์žฌ 0%/100%๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ๋Ÿ‰ ๋ถ€์กฑ ์•Œ๋ฆผ์—์„œ๋„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žœ ์ด๋ ฅ๊ณผ ์ค‘๋‹จ ์ƒํƒœ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณธ์ธ์˜ ๊ณ„์ • ์ •๋ณด๋ฅผ ์ง์ ‘ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ ์ƒํƒœ ์ ๊ฒ€: 5๋ถ„๋งˆ๋‹ค ์†Œ์œ  ํ”„๋กœ์ ํŠธ๊ฐ€ ํ™•์ธ๋œ ์—ด๋ฆฐ ํฌํŠธ์— GET /๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ˆ˜๋™ ์ ๊ฒ€์€ ๋ฐœ๊ฒฌํ•œ ๋กœ์ปฌ ํฌํŠธ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์†Œ์œ  ํฌํŠธ๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ๋Œ€๊ธฐ ์ƒํ•œ์€ 5์ดˆ์ž…๋‹ˆ๋‹ค. 401/403, 3xx, ๋ฃจํŠธ 404, ์‹œ๊ฐ„ ์ดˆ๊ณผ๋Š” ๊ฒ€ํ† /์ง€์—ฐ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ  5xx์™€ ์—ฐ๊ฒฐ ์‹คํŒจ๋Š” ์ ๊ฒ€ ์˜ค๋ฅ˜๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋””๋ ‰์…˜์„ ๋”ฐ๋ผ๊ฐ€์ง€ ์•Š์œผ๋ฉฐ ์‘๋‹ต ๋ณธ๋ฌธ์€ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž๋™ ์ ๊ฒ€ ์˜ค๋ฅ˜์™€ ๋งˆ์ง€๋ง‰ ์„ฑ๊ณต ์‹œ๊ฐ๋„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ๊ฒ€์€ ๋ฃจํŠธ ์‘๋‹ต๋งŒ ํ™•์ธํ•˜๋ฉฐ DB๋‚˜ ์ „์ฒด ๊ธฐ๋Šฅ ๊ฒ€์ฆ์„ ๋Œ€์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ด€๋ฆฌ ์ƒํƒœ์™€ ์‹คํ–‰ ์ƒํƒœ: ๊ฐœ์š” ์ง€๋„์™€ ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์€ ์‹ค์ œ HTTP ์ ๊ฒ€/ํฌํŠธ ์‘๋‹ต์„ ๊ธฐ๋ณธ ๋ฐฐ์ง€๋กœ ํ‘œ์‹œํ•˜๊ณ , ์ง์ ‘ ์ž…๋ ฅํ•œ ๊ฐœ๋ฐœ/์šด์˜/๋ณด๋ฅ˜ ์ƒํƒœ๋Š” ๊ด€๋ฆฌ:๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์ด๋‚˜ ๋กœ์ปฌ ์ฃผ์†Œ๊ฐ€ ์—†๋Š” ํ”„๋กœ์ ํŠธ๋Š” HTTP ๋Œ€์ƒ ์—†์Œ/์ฃผ์†Œ ๋ฏธ๋“ฑ๋ก์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธด ๊ธ€์ž: SVG ๊ธ€์ž์˜ ์‹ค์ œ ํญ์„ ์ธก์ •ํ•ด ๋ง์ค„์ž„ํ•˜๊ณ  ๋…ธ๋“œ ๋‚ด๋ถ€ clipPath๋กœ ํ‘œ์‹œ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๊ฒฝ๋กœ๋Š” ํˆดํŒยท์ƒ์„ธ ๋ชฉ๋ก์—์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์นด๋“œ์˜ ๊ธด ํ”„๋กœ์ ํŠธ๋ช…ยทํŒจํ‚ค์ง€๋ช…์€ ์ค„๋ฐ”๊ฟˆํ•ฉ๋‹ˆ๋‹ค.

Claude ๊ณ„์ • ๋ฐ API ๋ณด๊ณ ์„œ

์‚ฌ์šฉ๋Ÿ‰ ํ™”๋ฉด์—์„œ ์‹ค์ œ CLI ๋กœ๊ทธ์ธ ์ด๋ฉ”์ผ๊ณผ ๊ตฌ๋… ์ข…๋ฅ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์›น ๋กœ๊ทธ์ธ๋งŒ์œผ๋กœ ์ƒํƒœ์ค„์ด ํ˜ธ์ถœ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ˆ˜์ง‘๊ธฐ ์„ค์น˜ ํ›„ Claude Code๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๊ณ  ์ƒˆ ์‘๋‹ต์ด ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋ฉฐ, Team ์ขŒ์„์—์„œ ํ•œ๋„ ํ•„๋“œ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ์ž”์—ฌ๋Ÿ‰์„ ์ถ”์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Claude API ์‚ฌ์šฉ๋Ÿ‰์€ ๋ณ„๋„ ์กฐ์ง ๋ณด๊ณ ์„œ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ .env์˜ ANTHROPIC_ADMIN_KEY์— ์กฐ์ง์šฉ Admin ์ž๊ฒฉ ์ฆ๋ช…์„ ์„ค์ •ํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์‘๋‹ต์— ์ „๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ์™„๋ฃŒ๋œ UTC 7์ผ์˜ ์กฐ์ง ์ „์ฒด ํ† ํฐ๊ณผ ๋น„์šฉ์„ ์กฐํšŒํ•˜๋ฉฐ ๊ฐœ์ธ ์ด๋ฉ”์ผ๋ณ„ ์‚ฌ์šฉ๋Ÿ‰์ด๋‚˜ ๊ตฌ๋… ์ž”์—ฌ๋Ÿ‰์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ฏธ์—ฐ๊ฒฐยท๊ถŒํ•œ ์˜ค๋ฅ˜ยท๋ถˆ์™„์ „ ๋ณด๊ณ ์„œ๋Š” 0์œผ๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์„ค๋ช…์„œ ๋ฉ”๋‰ด์™€ ๊ฐ ํ™”๋ฉด์˜ '์ด ํ™”๋ฉด ์‚ฌ์šฉ๋ฒ•' ๋ฒ„ํŠผ์—์„œ ํ™”๋ฉด๋ณ„ ์•ˆ๋‚ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šด์˜ ์‚ฌ์ดํŠธ, ๋กœ์ปฌ HTTP ์‘๋‹ต, Vercel ์กฐํšŒ, ๋นŒ๋“œยทํ…Œ์ŠคํŠธ ๊ธฐ๋ก์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

Claude์™€ OpenAI ๋ชจ๋‘ AI ์‚ฌ์šฉ๋Ÿ‰ ํ™”๋ฉด์˜ API ์ž๋™ ์—ฐ๋™ ๋ฒ„ํŠผ์œผ๋กœ Admin ํ‚ค๋ฅผ ๊ฒ€์ฆยท์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ์—†์ด ์—ฐ๊ฒฐ๋˜๋ฉฐ 5๋ถ„๋งˆ๋‹ค ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์€ ๋กœ์ปฌ ๋ชจ๋“œ์˜ ๋ฃจํ”„๋ฐฑ ์ ‘์†์—์„œ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” .local/api-credentials.json์— 0600 ๊ถŒํ•œ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ ๋Œ€์‹œ๋ณด๋“œ ์‘๋‹ตยท๊ด€๋ฆฌ ์ •๋ณด ๋‚ด๋ณด๋‚ด๊ธฐ์— ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ ํ‚ค๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. OpenAI๋Š” ๋ชจ๋ธ ์‘๋‹ต ํ† ํฐ๊ณผ ์ „์ฒด ์กฐ์ง API ๋น„์šฉ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Codex ๊ตฌ๋… ์ž”์—ฌ ํ•œ๋„๋Š” ๊ธฐ์กด CLI ์—ฐ๊ฒฐ์„ ๊ณ„์† ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Claude Team ๊ตฌ๋… ํ•œ๋„ (macOS)

Team/Enterprise ๊ณ„์ •์€ ProยทMax ์ „์šฉ ์ƒํƒœ์ค„ rate_limits๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๊ณต์‹ Claude Code์˜ /usage ํ™”๋ฉด์—์„œ ๊ตฌ๋… ํ•œ๋„๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ CLI ๋กœ๊ทธ์ธ๊ณผ ๊ฒฉ๋ฆฌ๋œ ๋นˆ ์กฐํšŒ ํด๋”(/private/tmp/manage-a-claude-quota-check)์˜ ์‹ ๋ขฐ ํ™•์ธ์ด ํ•œ ๋ฒˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ํด๋”๋Š” ์‹ ๋ขฐ ๋Œ€์ƒ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ํ™˜๊ฒฝ๋งˆ๋‹ค ๋ณธ์ธ์˜ CLI ๋กœ๊ทธ์ธ๊ณผ ์ตœ์ดˆ ์„ค์ •์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์‹คํ–‰ ์ค‘ 5๋ถ„๋งˆ๋‹ค ๋„๊ตฌยทMCPยทํ›…ยทChrome ์—ฐ๋™์„ ๋ˆ ๋Œ€ํ™”ํ˜• CLI์—์„œ /usage๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ํ”„๋กฌํ”„ํŠธ๋Š” ์ „์†กํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›์‹œ ํ„ฐ๋ฏธ๋„ ์ถœ๋ ฅ์€ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์ธ์‹ํ•œ ๊ตฌ๋… ์‚ฌ์šฉ๋ฅ ๊ณผ ์ดˆ๊ธฐํ™” ์•ˆ๋‚ด๋งŒ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. CLI ํ™”๋ฉด ํ˜•์‹์— ์˜์กดํ•˜๋ฏ€๋กœ ํŒŒ์‹ฑ ์‹คํŒจ๋Š” ์กฐํšŒ ์‹คํŒจ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ macOS /usr/bin/script์™€ Python 3์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ OS๋Š” ๋ณ„๋„ ํ„ฐ๋ฏธ๋„ ์ค‘๊ณ„๊ธฐ ์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋Ÿ‰ ํ™”๋ฉด์— ์ œ๊ณต๋œ ๊ธฐ๊ฐ„๋งŒ ํ‘œ์‹œํ•˜๋ฉฐ ์ฃผ๊ฐ„ ํ•œ๋„๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Google ๋กœ๊ทธ์ธ์œผ๋กœ ๋ฐฉ๋ฌธยท๊ฒ€์ƒ‰ ํ†ต๊ณ„ ์—ฐ๊ฒฐ

์„œ๋น„์Šค ๊ณ„์ • ์™ธ์— ์‚ฌ์šฉ์ž OAuth ๋กœ๊ทธ์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฌธยท๊ฒ€์ƒ‰ โ†’ Google๋กœ ์—ฐ๊ฒฐ์—์„œ Google Cloud์˜ OAuth ํด๋ผ์ด์–ธํŠธ JSON ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Desktop ํด๋ผ์ด์–ธํŠธ๋Š” ์ž„์‹œ ๋ฃจํ”„๋ฐฑ ํฌํŠธ๋ฅผ ์“ฐ๋ฉฐ, Web ํด๋ผ์ด์–ธํŠธ๋Š” ํŒŒ์ผ์— ์ด๋ฏธ ๋“ฑ๋ก๋œ ๋กœ์ปฌ HTTP ์ฝœ๋ฐฑ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•ฑ์ด ํฌํŠธ๋ฅผ ์“ฐ๊ณ  ์žˆ์œผ๋ฉด ์ค‘๋‹จํ•˜๋ฉฐ ๊ทธ ์•ฑ์„ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Google ์Šน์ธ ํ™”๋ฉด์—๋Š” OAuth ํด๋ผ์ด์–ธํŠธ์˜ ๊ธฐ์กด ์•ฑ ์ด๋ฆ„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•ฑ๊ณผ ๊ฐœ๋ฐœ์ž๋ฅผ ํ™•์ธํ•˜๊ณ  AnalyticsยทSearch Console ์ฝ๊ธฐ ๊ถŒํ•œ๋งŒ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๊ฒ€์ฆ ์•ฑ ๊ฒฝ๊ณ ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํŒ๋‹จ๊ณผ ์ง„ํ–‰์„ ๋งก๊น๋‹ˆ๋‹ค. ์Šน์ธ ํ›„ ํ†ต๊ณ„ ์†์„ฑ ์ฐพ๊ธฐ๋กœ ๊ณ„์ •์˜ GA4 ์†์„ฑ๊ณผ ๊ฒ€์ฆ๋œ ๊ฒ€์ƒ‰ ์‚ฌ์ดํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. Google Analytics Data API, Admin API ๋ฐ Search Console API๊ฐ€ ํ•ด๋‹น OAuth ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ์ •๋ณด๋Š” .local/google-oauth.json์— 0600 ๊ถŒํ•œ์œผ๋กœ ๋ณด๊ด€ํ•˜๋ฉฐ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PKCE์™€ ๋‹จ์ผ ์‚ฌ์šฉ state๋กœ ๋กœ์ปฌ ์ฝœ๋ฐฑ์„ ๊ฒ€์ฆํ•˜๊ณ , OAuth ํ† ํฐ ๊ฐฑ์‹ ์€ ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Google ๋กœ๊ทธ์ธยท์†์„ฑ ๋“ฑ๋ก๊ณผ ์‹ค์ œ ํ†ต๊ณ„ ์ˆ˜์‹ ์€ ๊ฐ๊ฐ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณ„์ •์œผ๋กœ ์—ฐ๊ฒฐํ•  ๊ฒฝ์šฐ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ ์†์„ฑ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋””์Šคํฌ์— ๋‚˜๋ˆ  ๋ณด๊ด€ํ•œ๋‹ค๋ฉด ๊ธฐ๋ณธ PROJECT_ROOT ์™ธ์— PROJECT_ROOTS='["/another/disk/projects"]'๋กœ ์ถ”๊ฐ€ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์ด ๊ฒน์น˜๋ฉด ๊ธฐ๋ณธ ๊ฒฝ๋กœ๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

About

Local project dashboard for code visualization, Claude/Codex/Cursor usage, and GA4 & Search Console analytics.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages