어벤져스 코퍼레이션 로컬 6개 부서 멀티 계정 완벽 결착 인프라 규격서

### **어벤져스 코퍼레이션 초자동화 미디어 제국 1단계 실무 개발 명세서 (V4 – 6개 계정 자동 생성 및 로컬 복합 연동 마스터본)**

타노스 최대주주님, 시스템 아키텍트 OMMA입니다. 요청하신 지침에 따라 **[Docker Desktop 로컬 환경 인프라]** 및 [구글 6개 부서 계정 결착 체계]를 기본 탑재하고, 인프라 구축의 가장 첫 관문인 ‘6개 계정 환경 자동 분리 및 일괄 프로비저닝 구조’를 개발 명세서에 전격 추가하여 배포합니다.

이를 통해 단 한 대의 로컬 PC에서 6개 부서 계정이 독립된 브라우저 세션과 데이터 격리 레이어를 가진 채 자율 구동되는 완벽한 제국 기지국이 완성됩니다.

## 1. 인프라 레이어 오케스트레이션 정의서 (`docker-compose.yml`)

로컬 PostgreSQL 데이터베이스와 n8n 마스터 엔진을 컨테이너로 묶어 기동하며, 6개 계정의 동시 API 트래픽 폭발을 제어하기 위한 환경 매개변수가 정합된 코드입니다.

YAML

“`
# 어벤져스 코퍼레이션 로컬 6개 부서 멀티 계정 완벽 결착 인프라 규격서
version: ‘3.8’

networks:
avengers-net:
driver: bridge

services:
# 1. 지속형 로컬 데이터베이스: 6개 계정의 실행 로그 및 지표 중앙 관리
avengers-db:
image: postgres:16-alpine
container_name: avengers-postgres-local
networks:
– avengers-net
restart: always
environment:
– POSTGRES_USER=thanos_master
– POSTGRES_PASSWORD=ThanosSnap100PercentInfinityStone
– POSTGRES_DB=avengers_infra_log
volumes:
– ./postgres_data:/var/lib/postgresql/data
ports:
– “5432:5432”

# 2. 메인 자동화 엔진: 6개 계정의 OAuth2 토큰을 시클리컬 제어하는 n8n 마스터
avengers-n8n:
image: docker.io/n8nio/n8n:latest
container_name: avengers-n8n-master-local
networks:
– avengers-net
restart: always
ports:
– “5678:5678”
environment:
– N8N_PORT=5678
– N8N_PROTOCOL=http
– WEBHOOK_URL=http://localhost:5678/
– DB_TYPE=postgresdb
– DB_POSTGRESDB_HOST=avengers-db
– DB_POSTGRESDB_PORT=5432
– DB_POSTGRESDB_DATABASE=avengers_infra_log
– DB_POSTGRESDB_USER=thanos_master
– DB_POSTGRESDB_PASSWORD=ThanosSnap100PercentInfinityStone
– N8N_ENCRYPTION_KEY=AvengersCorpSuperSecretKeyForCredentials2026
volumes:
– ./n8n_data:/home/node/.n8n
depends_on:
– avengers-db
“`

## 2. [추가] 6개 부서 계정 생성 및 세션 격리 자동화 스크립트

개인용 구글 계정 6개를 생성한 후, 크롬 브라우저 상에서 계정 간 쿠키 및 OAuth 토큰이 꼬여 인증 장애가 발생하는 현상을 물리적으로 완전 차단하기 위한 ‘부서별 전용 브라우저 세션 프로필 디렉터리 생성 및 실행 자동화 스크립트’입니다.

윈도우 메모장을 열고 아래 코드를 복사하여 `avengers_launch.bat` 파일로 저장 후 가동하면, 6개 부서가 완벽히 독립된 가상 독립 브라우저로 팝업되어 계정 생성 및 자격 증명 획득 작업을 휴먼 에러 없이 완수할 수 있습니다.

코드 스니펫

“`
@echo off
title Avengers Corporation 6-Account Environment Provisioning Script
echo =========================================================================
echo 어벤져스 코퍼레이션 가상 편집국 6개 부서 계정 독립 프로필 인프라 생성 및 실행
echo =========================================================================

:: 부서별 격리 데이터 디렉터리 환경 변수 선언
set PROFILE_DIR=%CD%\avengers_profiles

echo [인프라 공사 시작] 로컬 디렉터리에 부서별 격리 볼륨을 구축합니다…
if not exist “%PROFILE_DIR%\goldthanos1” mkdir “%PROFILE_DIR%\goldthanos1”
if not exist “%PROFILE_DIR%\ceo_avengers” mkdir “%PROFILE_DIR%\ceo_avengers”
if not exist “%PROFILE_DIR%\ops_avengers” mkdir “%PROFILE_DIR%\ops_avengers”
if not exist “%PROFILE_DIR%\fin_avengers” mkdir “%PROFILE_DIR%\fin_avengers”
if not exist “%PROFILE_DIR%\mkt_avengers” mkdir “%PROFILE_DIR%\mkt_avengers”
if not exist “%PROFILE_DIR%\cx_avengers” mkdir “%PROFILE_DIR%\cx_avengers”

echo [인프라 개통] 6개 가상 데스크용 구글 격리 세션 브라우저를 동시 실행합니다.
echo 각 팝업창에서 해당 부서 계정 생성 및 OAuth 인증을 꼬임 없이 진행하십시오.

start “” “chrome.exe” –user-data-dir=”%PROFILE_DIR%\goldthanos1″ “https://accounts.google.com/signup” –window-name=”1_Master_goldthanos1″
start “” “chrome.exe” –user-data-dir=”%PROFILE_DIR%\ceo_avengers” “https://accounts.google.com/signup” –window-name=”2_CEO_Desk”
start “” “chrome.exe” –user-data-dir=”%PROFILE_DIR%\ops_avengers” “https://accounts.google.com/signup” –window-name=”3_OPS_Desk”
start “” “chrome.exe” –user-data-dir=”%PROFILE_DIR%\fin_avengers” “https://accounts.google.com/signup” –window-name=”4_FIN_Desk”
start “” “chrome.exe” –user-data-dir=”%PROFILE_DIR%\mkt_avengers” “https://accounts.google.com/signup” –window-name=”5_MKT_Desk”
start “” “chrome.exe” –user-data-dir=”%PROFILE_DIR%\cx_avengers” “https://accounts.google.com/signup” –window-name=”6_CX_Desk”

echo =========================================================================
echo [완료] 6개 부서 창이 활성화되었습니다. 연동 가이드에 맞추어 계정을 세팅하십시오.
echo =========================================================================
pause
“`

## 3. 구글 GCP 마스터 프로젝트 기반 6계정 멀티 OAuth2 결착 명세

생성된 6개 계정을 하나의 대주주 통제권 안으로 결속시키고, 구글의 까다로운 보안 심사 절차를 우회하여 무료 API 통신망을 개통하는 연동 아키텍처입니다.

“`
[구글 원 가족 공유 결합 (Families)] [cite: 1715, 1731]
goldthanos1 (가족 관리자 / 결제 및 스토리지 통합) [cite: 1718, 1740]
├── ceo.avengers (최고 경영 및 전략 승인) [cite: 1720, 1741]
├── ops.avengers (기술 생산 및 인프라 운영) [cite: 1720, 1741]
├── fin.avengers (재무, 자산 배분 및 경매 관리) [cite: 1741]
├── mkt.avengers (마케팅 및 블로그 퍼블리싱) [cite: 1726, 1741]
└── cx.avengers (고객 소통 및 외부 스크래핑 TF) [cite: 1728, 1741]
“`

1. **GCP 마스터 프로젝트 일원화:** `tech.avengers` 또는 `goldthanos1` 브라우저 창에서 Google Cloud Console에 진입하여 단 하나의 마스터 프로젝트(`Avengers-Automation-Central`)를 개설합니다.

2. **OAuth 동의 화면 및 테스트 사용자 강제 배포:** 앱 게시 상태를 ‘테스트(Testing)’로 지정한 뒤, 하단의 **Test Users 목록에 위 스크립트로 생성한 6개의 구글 이메일을 전원 등록**합니다. 이 단계를 통해 구글의 보안 스코프 락(Lock)이 완전히 해제됩니다.

3. **n8n 멀티 자격 증명 크로스 매핑:** 로컬 n8n(`http://localhost:5678`)에 접속하여 발급받은 하나의 `Client ID`와 `Client Secret`을 사용해 자격 증명을 6번 연속 생성합니다.

– 단, [Connect my account]를 클릭할 때 위 배포 스크립트로 띄워둔 각 부서별 프로필 크롬 창의 세션을 매칭하여 로그인 승인을 진행합니다.

– n8n 내부 관리 명칭 규격: `Google_Drive_MKT_Account`, `Google_Drive_FIN_Account` 등으로 완벽히 분리 저장합니다.

## 4. 6개 부서 라우팅 및 3단계 릴레이 프롬프트 체이닝 구조도 (n8n JSON)

1단계 GAS 최전선 엔진이 스코어링을 거쳐 쏴준 트렌드 객체를 수신하여 , 각 담당 부서의 독립된 구글 드라이브 토큰으로 분기 업로드하고 워드프레스에 pending 상태로 자동 정렬시키는 최종 아키텍처 JSON 소스코드입니다.

JSON

“`
{
“name”: “Avengers_6Accounts_Local_Ultimate_Pipeline”,
“nodes”: [
{
“parameters”: {
“httpMethod”: “POST”,
“path”: “trend-receiver”,
“options”: {}
},
“name”: “Webhook_Data_Ingestion”,
“type”: “n8n-nodes-base.webhook”,
“typeVersion”: 1,
“position”: [100, 300]
},
{
“parameters”: {
“rules”: {
“values”: [
{ “value1”: “={{$json.routing_target}}”, “value2”: “thanos-proptech-desk”, “outputKey”: “proptech_fin” },
{ “value1”: “={{$json.routing_target}}”, “value2”: “thanos-finance-desk”, “outputKey”: “finance_fin” },
{ “value1”: “={{$json.routing_target}}”, “value2”: “thanos-infra-tech”, “outputKey”: “infra_ops” },
{ “value1”: “={{$json.routing_target}}”, “value2”: “thanos-lifestyle-trend”, “outputKey”: “lifestyle_mkt” }
]
}
},
“name”: “Switch_Routing_Gate”,
“type”: “n8n-nodes-base.switch”,
“typeVersion”: 1,
“position”: [320, 300]
},
{
“parameters”: {
“assignmentMethod”: “code”,
“code”: “const credentialsMapping = {\n ‘proptech_fin’: ‘Google_Drive_FIN_Account’,\n ‘finance_fin’: ‘Google_Drive_FIN_Account’,\n ‘infra_ops’: ‘Google_Drive_OPS_Account’,\n ‘lifestyle_mkt’: ‘Google_Drive_MKT_Account’\n};\nconst target = items[0].json.routing_target;\nreturn [{ json: { targetCredential: credentialsMapping[target] || ‘Google_Drive_Master_Account’ } }];”
},
“name”: “Department_Credential_Selector”,
“type”: “n8n-nodes-base.set”,
“typeVersion”: 1,
“position”: [540, 300]
},
{
“parameters”: {
“method”: “POST”,
“url”: “https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent”,
“authentication”: “genericCredentialType”,
“genericAuthType”: “httpHeaderAuth”,
“sendHeaders”: true,
“headerParameters”: {
“parameters”: [
{ “name”: “x-goog-api-key”, “value”: “AIZA_Avengers_Shared_Gemini_Key” }
]
},
“sendBody”: true,
“specifyBody”: “json”,
“jsonBody”: “{\n \”contents\”: [{\n \”parts\”: [{\n \”text\”: \”[6-Account Desk Analysis] 부서 역할에 맞게 노이즈를 제어하고 3줄 요약 JSON을 사출하라. 키워드: {{$node[\”Webhook_Data_Ingestion\”].json[\”keyword\”]}}\”\n }]\n }]\n}”
},
“name”: “Gemini_Chaining_Step1_Analysis”,
“type”: “n8n-nodes-base.httpRequest”,
“typeVersion”: 4,
“position”: [760, 200]
},
{
“parameters”: {
“method”: “POST”,
“url”: “https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent”,
“sendHeaders”: true,
“headerParameters”: {
“parameters”: [
{ “name”: “x-goog-api-key”, “value”: “AIZA_Avengers_Shared_Gemini_Key” }
]
},
“sendBody”: true,
“specifyBody”: “json”,
“jsonBody”: “{\n \”contents\”: [{\n \”keeps\”: [],\n \”parts\”: [{\n \”text\”: \”[6-Account Desk Creation] 가상 데스크 페르소나를 투영하여 1,500자 완성형 본문을 마크다운 규격으로 저작하라. 요약 데이터: {{$json[\”candidates\”][0][\”content\”][\”parts\”][0][\”text\”]}}\”\n }]\n }]\n}”
},
“name”: “Gemini_Chaining_Step2_Creation”,
“type”: “n8n-nodes-base.httpRequest”,
“typeVersion”: 4,
“position”: [980, 200]
},
{
“parameters”: {
“resource”: “file”,
“operation”: “upload”,
“authentication”: “predefinedCredentialType”,
“nodeCredentialType”: “googleDriveOAuth2Api”,
“credentialInsideNode”: “={{$node[\”Department_Credential_Selector\”].json[\”targetCredential\”]}}”,
“fileContent”: “={{$json[\”candidates\”][0][\”content\”][\”parts\”][0][\”text\”]}}”,
“name”: “={{$node[\”Webhook_Data_Ingestion\”].json[\”keyword\”]}}.md”,
“parents”: [“어벤져스_통합_마스터/03_Resources”]
},
“name”: “Google_Drive_Department_Sync”,
“type”: “n8n-nodes-base.googleDrive”,
“typeVersion”: 3,
“position”: [1200, 200]
},
{
“parameters”: {
“method”: “POST”,
“url”: “http://localhost:8080/wp-json/wp/v2/posts”,
“authentication”: “predefinedCredentialType”,
“nodeCredentialType”: “wordpressHttpBasicAuth”,
“sendBody”: true,
“specifyBody”: “json”,
“jsonBody”: “{\n \”title\”: \”={{$node[\”Webhook_Data_Ingestion\”].json[\”keyword\”]}}\”,\n \”content\”: \”={{$node[\”Gemini_Chaining_Step2_Creation\”].json[\”content\”]}}\”,\n \”status\”: \”pending\”\n}”
},
“name”: “WordPress_Local_Pending_Publish”,
“type”: “n8n-nodes-base.httpRequest”,
“typeVersion”: 4,
“position”: [1420, 300]
}
]
}
“`

## 5. 단위 테스트 및 계정 생성 상태 검증 가이드 (Test Matrix)

– **테스트 1: 프로필 디렉터리 분리 검증**

– **수행 방법:** `avengers_launch.bat` 구동 후 크롬 창이 뜨면 각 창의 구글 우측 상단 프로필 아이콘을 대조합니다.

– **합격 조건:** 한 창에서 구글 로그인을 진행해도 다른 5개의 브라우저 창에는 로그인 상태가 전파되지 않고 완벽하게 초기 세션 격리 상태(볼륨 분리)를 유지해야 성공입니다.

– **테스트 2: 계정 간 토큰 스위칭 및 다이렉트 마운트 검증**

– **수행 방법:** 테크 카테고리 트렌드를 주입하여 워크플로우를 강제 기동합니다.

– **합격 조건:** n8n 디버그 콘솔에서 `Department_Credential_Selector`가 `Google_Drive_OPS_Account` 토큰을 호출해 에러 없이 구글 드라이브 업로드를 마치고, 로컬 옵시디언 볼트 `03_Resources` 폴더에 해당 트렌드 마크다운 파일이 즉시 복제 마운트되어야 최종 합격입니다.

6개 계정의 자동 디렉터리 분리 생성 배치 파일과 다중 자격 증명 바인딩 설계가 완벽히 완료되었습니다. 로컬 인프라 빌드 중 포트 충돌이나 구글 OAuth 인증 리디렉션 거부 장애가 감지되면 시스템 아키텍트 OMMA에게 즉각 무전 주십시오. 실시간으로 지원하겠습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다