AI 기반 블로그 작성 앱 제작 가이드: 코딩 없이 80분 완성
I Built an AI Powered Writing App With Zero Coding
Cursor + Firebase + DeepSeek/EXA API 조합으로 구현하는 지능형 워드 프로세서
1. 핵심 기능 개요
- 블록 단위 콘텐츠 편집(Shift + →/←)
- AI 자동 완성(Tab 키 활용)
- EXA API 기반 실시간 이미지/링크 검색
- DeepSeek 모델 연계 문맥 인식 작성
- Firebase 실시간 데이터 동기화
2. 개발 환경 구성
2.1 필수 도구 설치
npm install -g firebase-tools
curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh> | bash
2.2 Cursor 초기 설정
- Software Composer 템플릿 선택
- Next.js 기반 프로젝트 생성
- 로컬 실행 환경 구성
// firebase-config.js
import { initializeApp } from "firebase/app";
const firebaseConfig = { /* 개인 설정 */ };
export const app = initializeApp(firebaseConfig);
3. 데이터 아키텍처 설계
Firebase Firestore 구조
컬렉션 문서 필드 데이터 타입
users | uid, email | string |
documents | content, images[], links[] | array |
블록 데이터 모델
interface ContentBlock {
id: string;
text: string;
images: string[];
links: { url: string; title: string }[];
}
4. AI 통합 구현 단계
4.1 DeepSeek API 연결
// api/deepseek.js
export const generateCompletion = async (prompt) => {
const response = await fetch('<https://api.deepseek.com/v1/chat/completions>', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.DEEPSEEK_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: "deepseek-chat",
messages: [{ role: "user", content: prompt }]
})
});
return response.json();
};
4.2 EXA 이미지 검색
# utils/exa_search.py
import requests
def search_images(query):
headers = {"Authorization": f"Bearer {EXA_API_KEY}"}
params = {
"q": query,
"num_results": 5,
"highlight": True
}
response = requests.get("<https://api.exa.ai/search>", headers=headers, params=params)
return response.json()["results"]
5. 30단계 상세 구현 매뉴얼
- Cursor에서 'nextjs-template-2' 선택
- Firebase 콘솔에서 새 프로젝트 생성
- 사용자 인증 설정(Google OAuth 활성화)
- Firestore 데이터베이스 생성(테스트 모드)
- 웹 앱 등록 후 구성 정보 복사
- firebase-config.js 파일 생성
- Firestore 초기화 코드 작성
- 사용자 세션 관리 로직 구현
- 메인 페이지에 '새 문서' 버튼 추가
- 문서 생성 라우트 설정
- 블록 편집기 UI 컴포넌트 제작
- Hotkey 라이브러리 통합(react-hotkeys-hook)
- Shift+→ 핸들러 구현
- 사이드 패널 토글 로직 작성
- 이미지 업로드 컴포넌트 개발
- EXA API 검색 기능 연동
- 검색 결과 표시 그리드 레이아웃
- 이미지 선택 저장 기능 구현
- DeepSeek 자동 완성 트리거 설정
- 문맥 분석 프롬프트 엔지니어링
- 생성 텍스트 포맷팅 로직 추가
- 실시간 문서 저장 기능(Firestore 연동)
- 문서 목록 페이지 구현
- 최근 수정 시간 표시 로직
- 문서 삭제 기능 추가
- 오류 처리 모달 구현
- 반응형 CSS 스타일링
- 성능 최적화(이미지 지연 로딩)
- PWA 설정(오프라인 작동)
- 배포 스크립트 작성
6. 핵심 기능 상호작용 다이어그램
graph TD
A[사용자 입력] --> B{키 입력 분석}
B -->|Tab| C[DeepSeek API 호출]
B -->|Shift+→| D[사이드 패널 열기]
C --> E[AI 생성 텍스트 삽입]
D --> F[이미지/링크 검색]
F --> G[EXA API 요청]
G --> H[결과 표시]
H --> I[사용자 선택 저장]
7. 문제 해결 가이드
증상 원인 해결책
이미지 업로드 실패 | EXIF 메타데이터 | exif-js로 제거 |
API 응답 지연 | Cold Start | 사전 워밍 요청 |
CSS 깨짐 | CSS-in-JS 충돌 | styled-components 재설치 |
인증 오류 | 토큰 만료 | 자동 갱신 로직 추가 |
프롬프트 엔지니어링 예시
DeepSeek 자동완성 프롬프트
주어진 문맥을 분석해 자연스러운 다음 문장 생성:
- 1문장 길이 제한
- 원문과 어조 일치
- 구체적 사실 제시
예시 입력: "AI의 미래는"
예시 출력: "인간-기계 협업 시스템의 발전으로 일상생활 전반에 적용될 전망"
EXA 이미지 검색 최적화
# 이미지 검색 쿼리 최적화 함수
def optimize_query(text_block):
keywords = extract_nouns(text_block) # 한국어 형태소 분석
return " ".join(keywords[:5]) + " high quality image"
"AI 도구의 진정한 가치는 창작 과정의 흐름을 방해하지 않으면서 창의성을 확장시키는 데 있습니다" - 영상 중 발췌
본 가이드는 2025년 2월 기준 최신 API 사양을 반영했으며, AI 모델 업데이트 시 일부 코드 수정이 필요할 수 있습니다. 이미지 캐싱 전략과 오프라인 동기화 기능 추가를 통해 사용자 경험을 더욱 개선할 수 있습니다.
'IT' 카테고리의 다른 글
DeepSeek R-1 오픈소스를 활용한 앱/웹 통합 (0) | 2025.02.09 |
---|---|
DeepSeek R-1 오픈소스를 활용한 새로운 사업 기회 탐색 (0) | 2025.02.09 |
Vibe Coding 활용을 위한 45개 프롬프트 가이드 (0) | 2025.02.08 |
Vibe Coding 마스터 가이드: Cursor & AI 에이전트를 활용한 제로코드 개발 (0) | 2025.02.08 |
Foundups 코딩 규칙 (CR)에 따른 코드 생성 및 리팩토링 가이드 (0) | 2025.02.07 |