
AI Writer란?
AI Writer는 제품 사진을 편집 가능한 이커머스 설명으로 변환하는 오픈 소스 애플리케이션입니다. 공개 HTTPS 이미지 URL을 1개에서 8개까지 입력하고 출력 언어를 선택하면, OpenAI 비전 지원 Chat Completions 모델을 사용해 초안을 만들 수 있습니다.
이 애플리케이션은 영어, 터키어, 스페인어, 독일어, 프랑스어, 중국어를 지원합니다. 또한 계정 인증, 브라우저 기반 편집, 번역 기능과 MySQL을 기반으로 하는 크레딧 시스템을 제공합니다.

AI Writer는 검증된 제품 사양이 아니라 초안을 생성합니다. 이미지만으로는 치수, 원단 구성 또는 인증과 같은 세부 정보를 안정적으로 입증할 수 없으므로, 게시하기 전에 모든 설명을 검토하세요.
주요 기능
- 이미지 기반 작성: 공개적으로 접근 가능한 HTTPS 제품 이미지 1개에서 8개까지를 바탕으로 문구를 생성합니다.
- 제품 페이지 가져오기: Puppeteer를 사용해 공개 제품 페이지에서 이미지 링크를 수집합니다.
- 6개 출력 언어: 영어, 터키어, 스페인어, 독일어, 프랑스어 또는 중국어로 콘텐츠를 생성합니다.
- 편집 및 번역: 브라우저에서 생성된 초안을 다듬고, 복사한 뒤 한 번의 작업으로 번역합니다.
- 계정 및 크레딧: bcrypt 비밀번호, MySQL 세션과 병렬 초과 사용을 방지하는 잔액 시스템을 사용합니다.
- 실패 시 환불: 지원되는 생성 요청이 실패하면 예약된 크레딧을 돌려줍니다.
- 실험적 동영상 입력: 짧은 YouTube 동영상에서 최대 8개의 프레임을 추출해 시각적 입력으로 사용합니다.
사전 요구 사항
설치하기 전에 다음을 준비하세요:
- Node.js 22.12 이상 및 npm.
- Compose가 포함된 Docker 또는 기존 MySQL 8 이상 서버에 대한 액세스 권한.
- 비전 지원 Chat Completions 모델에 액세스할 수 있는 OpenAI API 키.
- 제품 페이지에서 이미지를 가져오려는 경우 Puppeteer를 통해 설치된 Chrome.
- 실험적 동영상 처리를 사용하려는 경우
PATH에서 사용할 수 있는 FFmpeg 및 FFprobe.
이미지에서만 설명을 생성할 계획이라면 FFmpeg는 선택 사항입니다.
AI Writer 자동 설치
대화형 설정 스크립트는 가장 간단한 설치 방법입니다. 저장소를 복제하고 해당 디렉터리로 이동한 뒤 설치 프로그램을 실행하고 애플리케이션을 시작하세요:
git clone https://github.com/csadigital/ai-writer.git
cd ai-writer
npm run setup
npm start설치 프로그램은 애플리케이션 종속성과 Chrome을 다운로드하고, 입력한 내용이 화면에 표시되지 않도록 OpenAI API 키를 요청하며, 데이터베이스 및 세션 시크릿을 생성하고 MySQL을 초기화합니다. 기존 .env 값을 유지하고 로컬 백업을 생성합니다.
설정 중 docker를 선택하면 영구 MySQL 컨테이너가 자동으로 시작됩니다. Docker가 이미 설치되어 실행 중이어야 합니다. 자체 MySQL 서버에 연결하려면 existing을 선택하세요. 관리자 자격 증명이 있으면 설치 프로그램이 전용 데이터베이스와 애플리케이션 사용자를 생성할 수 있으며, 관리자 비밀번호는 저장하지 않습니다.
시작한 후 브라우저에서 http://localhost:3000을 여세요.
Docker 데이터베이스 중지
영구 데이터를 삭제하지 않고 로컬 MySQL 컨테이너를 중지하려면 다음을 실행하세요:
docker compose -f compose.mysql.yml stop.env에서 데이터베이스 자격 증명을 변경해도 이전에 초기화된 Docker 볼륨은 재설정되지 않습니다. 기존 자격 증명을 유지하거나 의도적으로 데이터베이스를 마이그레이션하세요.
AI Writer 수동 설치
수동 설정을 사용하면 환경 및 데이터베이스 구성을 직접 제어할 수 있습니다. 프로젝트를 복제하고 정확한 종속성을 설치한 다음 환경 파일을 생성하세요:
git clone https://github.com/csadigital/ai-writer.git
cd ai-writer
npm ci
cp .env.example .env
node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"생성된 값을 .env의 SESSION_SECRET에 복사하세요. 시크릿은 32자 이상이어야 합니다. 그런 다음 OpenAI API 키와 MySQL 연결 설정을 추가하세요. 새 자격 증명을 사용하고 .env 파일을 커밋하지 마세요.
MySQL 관리자를 사용해 데이터베이스와 애플리케이션 사용자를 생성하고, 해당 사용자에게 데이터베이스 액세스 권한을 부여한 다음 schema.sql로 테이블을 초기화하세요:
mysql -h 127.0.0.1 -u ai_writer -p ai_writer < schema.sql
npm starthttp://localhost:3000을 열고 계정을 생성한 뒤 로그인하세요.
환경 구성
애플리케이션은 환경 변수에서 설정을 읽습니다. 최소한 OpenAI 자격 증명, 세션 시크릿 및 데이터베이스 연결을 구성하세요.
OPENAI_API_KEY: 필수 OpenAI API 자격 증명입니다.OPENAI_MODEL: 비전 지원 Chat Completions 모델입니다. 기본값은gpt-4.1-mini입니다.SESSION_SECRET: 32자 이상의 임의 시크릿이 필요한 항목입니다.DB_HOST및DB_PORT: MySQL 주소입니다. 기본값은127.0.0.1및3306입니다.DB_USER및DB_PASSWORD: 로컬 MySQL 애플리케이션 자격 증명입니다.DB_NAME: 데이터베이스 이름입니다. 기본값은ai_writer입니다.PORT: 애플리케이션 HTTP 포트입니다. 기본값은3000입니다.NODE_ENV: 런타임 모드입니다. 기본값은development입니다.TRUST_PROXY: 애플리케이션이 하나의 HTTPS 리버스 프록시를 신뢰할지 설정합니다. 기본값은0입니다.
선택한 모델은 Chat Completions API를 통한 이미지 입력을 지원해야 합니다. 호환되는 요청 동작은 OpenAI 공식 이미지 입력 가이드를 참조하세요.
첫 번째 상품 설명 생성하기
- 계정 만들기: 로컬 애플리케이션에서 등록한 후 로그인하세요. 새 계정에는 10크레딧이 기본으로 제공됩니다.
- 상품 사진 추가하기: 공개 HTTPS 이미지 URL을 1개에서 8개까지 입력하세요. 모델이 해당 URL에 액세스할 수 있어야 합니다.
- 언어 선택하기: 영어, 터키어, 스페인어, 독일어, 프랑스어 또는 중국어를 선택하세요.
- 초안 생성하기: 시각적 분석 및 설명 생성을 위해 이미지를 제출하세요.
- 결과 편집하기: 브라우저에서 초안을 검토하고 근거 없는 주장, 어조 또는 상품 세부 정보를 수정하세요.
- 텍스트 복사하기: 수정한 설명을 전자상거래 작업 흐름에 복사하세요.
설명이 성공적으로 생성되면 1크레딧이 사용됩니다. 생성 요청이 실패하면 애플리케이션이 예약된 크레딧을 환불합니다.
이미지 작업 흐름 예시
여러 각도에서 촬영한 상품의 경우 다음과 같이 직접 연결된 이미지 URL을 몇 개 입력하세요.
https://example.com/products/item-front.jpg
https://example.com/products/item-side.jpg
https://example.com/products/item-detail.jpg공개 HTTPS 주소만 사용하세요. 여러 시점을 제공하면 모델이 확인할 수 있는 맥락이 늘어나지만, 상품 카탈로그에서 확인된 사양을 대신할 수는 없습니다.
상품 페이지에서 이미지 가져오기
모든 이미지 URL을 수동으로 수집하는 대신, AI Writer는 Puppeteer를 사용해 공개 상품 페이지를 검사하고 이미지 링크를 수집할 수 있습니다. 이 작업 흐름에는 Puppeteer가 관리하는 Chrome 설치가 필요합니다.
- 페이지 가져오기 작업 흐름에 공개 상품 페이지 URL을 입력하세요.
- 애플리케이션이 후보 이미지 링크를 수집하도록 하세요.
- 가져온 결과에서 적절한 상품 사진을 선택하세요.
- 평소와 같이 설명을 생성하고 검토하세요.
사용 권한이 있는 페이지만 처리하고 이미지를 사용하세요. 공개 배포 환경에서는 브라우저 자동화를 샌드박스에서 실행하고 네트워크 액세스를 제한해야 합니다.
기존 초안 번역하기
설명을 생성하거나 편집한 후 번역 작업을 사용해 지원되는 다른 언어로 변환하세요. 번역이 성공하면 1크레딧이 사용됩니다. 게시하기 전에 번역된 텍스트의 상품 용어, 브랜드 어조 및 사실 정확성을 검토하세요.
실험적 동영상 작업 흐름 사용하기
AI Writer는 짧은 YouTube 동영상에서 최대 8개의 프레임을 추출하고 해당 프레임을 시각적 맥락으로 제출할 수 있습니다. localhost 이미지 링크는 API에서 액세스할 수 없으므로 로컬 프레임은 데이터 URL로 모델에 전송됩니다.
동영상은 다음 제한을 모두 충족해야 합니다.
- 실시간 동영상이어서는 안 됩니다.
- 길이가 3분을 초과해서는 안 됩니다.
- 크기가 50MB를 초과해서는 안 됩니다.
- FFmpeg와 FFprobe를
PATH에서 사용할 수 있어야 합니다. - 미디어를 처리할 권한이 있어야 합니다.
이 기능은 상위 YouTube 다운로드 기능의 사용 가능 여부에 따라 달라지며, YouTube가 자동 다운로드를 거부할 수 있습니다. 처리가 실패하면 예약된 크레딧이 반환됩니다.
개발 및 테스트
애플리케이션을 변경하는 동안 다음 개발 명령을 사용하세요.
npm run dev프로젝트 검사, 자동화된 테스트 및 프로덕션 종속성 감사를 다음 명령으로 실행하세요.
npm run check
npm test
npm audit --omit=dev테스트 모음은 인증, 세션 순환, CSRF 보호, URL 검증, 이스케이프된 출력, 이미지 생성, 번역, 크레딧 환불 및 병렬 크레딧 사용을 다룹니다. 로컬 테스트는 데이터베이스와 AI 서비스를 격리하므로 프로덕션 자격 증명을 사용하거나 유료 API를 호출하지 않습니다. 또한 지속적 통합에서는 임시 실제 MySQL 서버를 생성하여 설치 프로그램의 스키마 생성과 데이터베이스 사용자 권한 부여를 검증합니다.
고급 팁
이미지를 신중하게 선택하기
유용한 각도에서 상품을 보여 주는 선명한 사진을 사용하세요. 요청은 1개에서 8개의 이미지 제한을 지키세요. 이미지가 많아질수록 같은 시점을 반복하기보다 의미 있는 시각 정보를 추가해야 합니다.
사실 데이터와 시각적 추측을 분리하기
크기, 구성 또는 인증에 관한 생성된 주장을 사실로 간주하지 마세요. 편집하는 동안 재고 또는 상품 정보 시스템에서 확인된 사양을 추가하세요.
비밀 정보와 데이터베이스 액세스 보호하기
.env를 비공개로 유지하고, 전용 데이터베이스 자격 증명을 사용하며, API 키나 세션 비밀을 커밋하지 마세요. 기존 MySQL 서버를 사용하는 경우 애플리케이션 사용자에게 지정된 데이터베이스에만 액세스 권한을 부여하세요.
공개 배포 전에 준비하기
AI Writer를 인터넷에 공개하기 전에 저장소의 배포 가이드를 읽으세요. 공개 서버에는 HTTPS, 제한된 네트워크 송신 및 샌드박스 브라우저가 필요합니다. DNS 검증만으로는 DNS 리바인딩을 완전히 방어할 수 없습니다.
내장된 크레딧은 지출을 제한하지만, 이 프로젝트에는 결제 연동, 자동 크레딧 구매, 비밀번호 복구 또는 이메일 인증 기능이 포함되어 있지 않습니다. 저장소를 게시해도 호스팅된 애플리케이션이나 라이브 데모가 생성되는 것은 아닙니다.
주요 프로젝트 파일 이해하기
app.js: Express 애플리케이션과 계정 및 크레딧 라우트.db.js: MySQL 연결 풀.youtube.js: 제한된 실험적 동영상 워크플로.lib/ai.js: 모델 요청 및 다국어 프롬프트.lib/network.js: 공개 HTTPS URL 검증.views/: EJS 페이지 및 공통 레이아웃.public/: 스타일, 브라우저 코드 및 브랜딩.schema.sql: 계정 데이터베이스 테이블.scripts/setup.js: 대화형 설치 프로그램.compose.mysql.yml: 선택 사항인 로컬 MySQL 서비스.test/: 자동 회귀 검사.
결론
AI Writer는 제품 사진을 다국어 이커머스 초안으로 변환하는 실용적인 로컬 워크플로를 제공합니다. 대화형 설치 프로그램으로 시작하고, 비전 기능을 지원하는 OpenAI 모델을 연결한 다음, 공개 HTTPS 이미지를 추가하고 게시 전에 모든 결과를 검토하세요. 계정, 크레딧, 번역 및 테스트 기능은 탄탄한 기반을 제공하지만, 프로덕션 배포에는 여전히 신중한 브라우저 격리, 네트워크 제어 및 HTTPS가 필요합니다.
