Claude Code 45가지 팁 총정리 — 초급부터 고급까지 핵심만

Claude Code를 쓰다 보면 ‘이걸 진작 알았으면’ 하는 순간이 생긴다. ykdojo가 GitHub에 공개한 45개 팁에서 좋은 팁들을 알아보자.


기초 설정 (Basic Setup)

① 상태줄 커스터마이징 (Tip 0) 처음 설정하고 나면 다시 끄기 싫어진다. 하단에 현재 모델명, git 브랜치, 미커밋 파일 수, 토큰 잔량 바가 떠있으면 작업 중 상황 파악이 훨씬 빠르다.

# 설정 스크립트 한 번에 적용 (아래 Tip 45 스크립트로 자동 포함)
bash <(curl -s https://raw.githubusercontent.com/ykdojo/claude-code-tips/main/scripts/setup.sh)

직접 설정하려면 scripts/README.md를 참고.

② 필수 슬래시 명령어 (Tip 1) 이것만 외워도 절반은 한다. 처음엔 다 알 필요 없고 /usage/compact 두 개부터 시작하면 된다.

명령어 기능
/usage 토큰·요청 한도 시각적 확인
/compact 컨텍스트 요약 압축
/clear 대화 초기화
/mcp MCP 서버 관리
/stats 사용 통계 그래프

③ 터미널 별칭 설정 (Tip 7) 별거 아닌 것 같아도 하루에 수십 번 치는 명령어를 한 글자로 줄이면 체감이 꽤 다르다.

alias c='claude'          # Claude Code 실행
alias ch='claude --chrome' # 브라우저 연동 모드
alias co='code .'         # VS Code 열기

컨텍스트 관리 (Context Management)

④ 컨텍스트는 신선할수록 좋다 (Tip 5) 대화가 길어지면 Claude도 지친다. 새 주제를 꺼낼 때는 새 대화를 열자. 원문 표현이 딱 맞다 — “컨텍스트는 우유와 같다, 신선하고 압축될수록 좋다.”

/compact로 선제 압축 (Tip 8) Claude가 알아서 압축하기를 기다리지 말고 먼저 /compact를 치자. /handoff로 지금까지 한 일을 요약해두면 새 대화에서도 맥락 없이 이어서 작업할 수 있다.

⑥ 대화 포크 및 반클론 (Tip 23) 작업이 두 갈래로 나뉠 것 같으면 /fork로 대화를 분기해두면 된다. 컨텍스트가 85%를 넘으면 자동으로 /half-clone이 실행되도록 훅을 걸어두는 방법도 있다.


생산성 극대화 (Productivity)

⑦ 음성 입력 활용 (Tip 2) 말이 손보다 빠를 때가 많다. SuperWhisper나 MacWhisper 같은 로컬 전사 도구를 연결하면 긴 지시도 말로 쭉 뱉으면 된다. 이어폰으로 쓰면 카페에서도 조용히 쓸 수 있다.

⑧ 터미널 탭으로 멀티태스킹 (Tip 14) 한 탭에서 Claude가 처리하는 동안 다른 탭에서 다음 작업을 넘겨주는 식으로 쓰면 된다. 3~4개 탭을 오른쪽에서 새로 열고 왼쪽부터 순서대로 확인하는 캐스케이드 방식이 잘 맞는다.

⑨ 백그라운드 실행 (Tip 36) 빌드나 CI처럼 오래 걸리는 작업은 Ctrl+B로 백그라운드로 보내두고 다른 일을 하면 된다. 서브에이전트 여러 개를 동시에 띄워 코드베이스를 병렬로 분석하는 것도 가능하다.


코드 품질 관리 (Code Quality)

⑩ 큰 문제는 잘게 쪼개라 (Tip 3) 복잡한 작업을 한 번에 던지면 Claude도 헤맨다. 그냥 "이걸 작은 문제 여러 개로 쪼개줘"라고 말하는 것만으로도 결과가 달라진다.

⑪ 테스트 작성과 TDD (Tip 34) Claude에게 테스트도 같이 짜게 하면 코드 품질이 올라간다. TDD로 접근하면 더 좋다 — 실패 테스트 먼저 작성하고 커밋, 그다음에 코드 구현. 단, Claude가 테스트를 항상 true를 반환하는 식으로 눈속임하는 경우가 있으니 확인은 필수다.

⑫ 코드가 복잡해졌다면 단순화 요청 (Tip 40) Claude는 시키지도 않은 걸 건드리거나 코드를 괜히 복잡하게 만드는 버릇이 있다. “이 코드 단순화해줘”, "이 줄 왜 이렇게 했어?"라고 물어보면 된다. 줄 하나하나 이해하면서 가면 오히려 코드를 더 빨리 파악하게 된다.


고급 활용 (Advanced Techniques)

⑬ 시스템 프롬프트 토큰 절감 (Tip 15) Claude Code는 기본적으로 매 대화마다 약 19k 토큰짜리 시스템 프롬프트를 쓴다. 패치를 적용하면 9k까지 줄일 수 있다. 절반이다. ~/.claude/settings.json에서 자동 업데이트도 꺼야 패치가 유지된다.

// ~/.claude/settings.json 에 추가
{
  "env": {
    "DISABLE_AUTOUPDATER": "1",
    "ENABLE_TOOL_SEARCH": "true"
  }
}

ENABLE_TOOL_SEARCH는 MCP 도구를 필요할 때만 로드하는 옵션. 둘 다 켜두는 게 좋다.

⑭ Git Worktrees로 병렬 브랜치 작업 (Tip 16) 브랜치를 왔다갔다하면서 작업하는 게 번거롭다면 git worktrees를 써보자. 브랜치마다 별도 디렉터리를 두고 동시에 작업할 수 있다. 터미널 탭 멀티태스킹과 합치면 꽤 강력하다.

# feature 브랜치를 ../my-feature 디렉터리에 따로 열기
git worktree add ../my-feature feature-branch

# 또는 Claude에게 직접 맡겨도 됨
# "git worktree로 feature-branch 새 디렉터리에 열어줘"

⑮ 위험한 작업은 컨테이너에서 (Tip 21) --dangerously-skip-permissions는 컨테이너 안에서만 쓰는 게 맞다. 매번 승인 없이 Claude가 알아서 처리하게 하고 싶을 때 컨테이너를 샌드박스로 쓰면 된다. 로컬 Claude가 원격 컨테이너 안의 Claude를 tmux로 조종하는 구조도 가능하다.

# Docker 컨테이너 안에서 Claude 실행
docker run -it --rm \
  -v $(pwd):/workspace \
  -w /workspace \
  node:20 bash -c "npm install -g @anthropic-ai/claude-code && claude --dangerously-skip-permissions"

CLAUDE.md와 워크플로우 (Configuration)

⑯ CLAUDE.md는 단순하게 유지 (Tip 30) 처음에는 그냥 비워두는 게 맞다. 같은 말을 Claude에게 두 번 이상 하게 되는 순간이 생기면 그때 추가하면 된다. 주기적으로 훑어보면서 더 이상 맞지 않는 내용은 지워야 한다.

⑰ Gemini CLI를 보조로 활용 (Tip 11) Claude가 못 들어가는 사이트가 있으면 Gemini CLI를 대신 쓰게 하면 된다. 스킬로 등록해두면 Claude가 상황 보고 알아서 Gemini로 넘긴다.

# Gemini CLI 설치 (npm)
npm install -g @google/gemini-cli

# dx 플러그인의 reddit-fetch 스킬이 이 방식을 자동으로 처리

⑱ GitHub CLI로 PR 자동화 (Tip 4) git 작업은 Claude한테 넘겨도 된다. gh CLI로 드래프트 PR을 먼저 만들고 직접 검토한 다음 최종 올리는 흐름이 안전하다.


보안 및 안전 (Security)

⑲ 승인된 명령어 주기적 감사 (Tip 33) Claude에게 한 번 승인해준 명령어들을 그냥 두는 경우가 많다. cc-safe를 돌리면 sudo, rm -rf처럼 위험한 명령어가 등록돼 있는지 바로 확인할 수 있다.

npx cc-safe  # 설치 없이 바로 실행

추천 플러그인 및 설정 스크립트 (Recommended Setup)

⑳ dx 플러그인 설치 (Tip 44) 앞에서 계속 언급된 기능들이 여기 다 들어있다. 설치해두면 /dx:gha로 CI 실패 원인을 바로 찾고, /dx:handoff로 대화 인수인계 문서를 자동으로 만들 수 있다.

claude plugin install dx@ykdojo
명령어 기능
/dx:gha GitHub Actions 실패 자동 분석
/dx:handoff 컨텍스트 인수인계 문서 생성
/dx:clone 대화 분기
/dx:half-clone 컨텍스트 절반 축소
/dx:reddit-fetch Reddit 콘텐츠 수집
/dx:review-claudemd CLAUDE.md 개선 제안

㉑ 원클릭 전체 설정 스크립트 (Tip 45) 지금까지 언급한 설정들을 스크립트 하나로 한 번에 처리할 수 있다. 각 항목을 골라서 적용할 수 있으니 필요한 것만 설치하면 된다.

bash <(curl -s https://raw.githubusercontent.com/ykdojo/claude-code-tips/main/scripts/setup.sh)

dx 플러그인, cc-safe, 상태줄, 자동 업데이트 비활성화, MCP 지연 로딩, 셸 별칭이 순서대로 물어보면서 설치된다.


핵심 철학 (Key Philosophy)

“Claude Code를 잘 쓰는 가장 좋은 방법은, 직접 많이 쓰는 것이다.” (Tip 22)

결국 이 45개 팁도 많이 써보면서 나온 것들이다. 처음부터 다 적용하려 하지 말고, 지금 당장 불편한 것 하나씩 해결하는 식으로 쌓아가면 된다.

  • 복잡한 문제는 쪼개서 단계적으로 (Tip 3)
  • 컨텍스트는 짧고 신선하게 (Tip 5)
  • 반복하는 작업은 자동화 (Tip 41)
  • 깊이 파고들 때와 가볍게 쓸 때를 구분 (Tip 32)
  • Claude Code는 코딩 도구가 아니라 디지털 작업 전반의 범용 인터페이스 (Tip 31)

원본: https://github.com/ykdojo/claude-code-tips (45 Claude Code Tips: From Basics to Advanced)

PDF·PPT·Excel을 Markdown으로 바꾸는 무료 오픈소스 MarkItDown 사용법

Microsoft AutoGen 팀이 만든 오픈소스 Python 라이브러리다. PDF, Word, Excel, PowerPoint, 이미지, 오디오, YouTube URL까지 거의 모든 파일 형식을 Markdown으로 변환해준다. LLM은 Markdown을 가장 잘 이해하기 때문에, RAG 파이프라인이나 AI 분석 전처리 단계에서 바로 쓸 수 있다.


주요 특징 (Key Features)

① 압도적으로 다양한 지원 형식

분류 지원 형식
문서 PDF, Word(.docx), PowerPoint(.pptx), Excel(.xlsx/.xls)
미디어 이미지(EXIF + OCR), 오디오(음성 전사)
HTML, YouTube URL(자막 추출)
텍스트 기반 CSV, JSON, XML
기타 ZIP, EPUB, Outlook 메시지

② 무료 오픈소스 (Microsoft 개발) Apache 2.0 라이선스. 상업적 사용 가능. Microsoft AutoGen 팀이 직접 관리.

③ CLI와 Python API 모두 지원 터미널 명령어 한 줄로도 실행 가능하고, Python 코드에 import해서 자동화 파이프라인으로도 활용 가능.

④ LLM 연동 기본 내장 GPT-4o 같은 비전 모델을 연결하면 이미지 속 텍스트까지 설명해서 Markdown으로 추출.

⑤ 필요한 형식만 골라 설치 가능 PDF만 쓴다면 PDF 의존성만, Excel만 쓴다면 Excel 의존성만 설치. 전체 설치보다 가볍게 활용 가능.


설치 (Installation) — 터미널에서 한 번만

> ⚠️ Python 3.10 이상 필요. python --version으로 먼저 확인하자.

전체 설치 (추천 — 모든 형식 지원)

pip install 'markitdown[all]'

형식별 선택 설치 (가볍게 쓰고 싶을 때)

# PDF만
pip install 'markitdown[pdf]'

# Word + PowerPoint + Excel
pip install 'markitdown[docx, pptx, xlsx]'

선택 가능한 옵션 전체 목록:

옵션 설명
[pdf] PDF 변환
[docx] Word 문서
[pptx] PowerPoint
[xlsx] Excel
[xls] 구형 Excel
[outlook] Outlook 이메일
[audio-transcription] 오디오 음성 전사
[youtube-transcription] YouTube 자막 추출
[az-doc-intel] Azure Document Intelligence 연동
[all] 위 전체 포함

사용 (Usage)

CLI — 터미널에서 바로 실행

> 💡 초보자 가이드: 별도 코드 파일 없이 터미널(Windows는 PowerShell 또는 CMD, Mac은 Terminal)에서 명령어만 입력하면 바로 실행된다. VS Code의 내부 터미널(Ctrl + `)을 써도 된다.

# 기본 변환 (결과를 터미널에 출력)
markitdown 파일.pdf

# 결과를 md 파일로 저장
markitdown 파일.pdf -o 결과.md

# 파이프로 연결해서 사용
cat 파일.pdf | markitdown

Python API

> 💡 초보자 가이드: VS Code 또는 Positron을 설치하고, 새 파일을 .ipynb 확장자로 만들면 Jupyter Notebook 환경이 열린다. 셀에 아래 코드를 붙여넣고 Shift + Enter로 실행하면 된다. pip 설치도 VS Code 내부 터미널(Ctrl + `)에서 그대로 실행 가능하다.

기본 사용

from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("파일.pdf")
print(result.text_content)   # 변환된 Markdown 출력

여러 파일 일괄 변환

from markitdown import MarkItDown

md = MarkItDown()
for 파일 in ["문서1.pdf", "발표.pptx", "데이터.xlsx"]:
    result = md.convert(파일)
    with open(파일 + ".md", "w", encoding="utf-8") as f:
        f.write(result.text_content)

LLM 연동 — 이미지 속 텍스트까지 추출

이미지 파일을 변환할 때 GPT-4o 같은 비전 모델을 연결하면, 이미지 안의 내용을 AI가 설명해서 Markdown으로 뽑아준다.

from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
md = MarkItDown(
    llm_client=client,
    llm_model="gpt-4o"
)
result = md.convert("이미지.jpg")
print(result.text_content)

Docker — 환경 설치 없이 실행

Python 환경 구성이 어렵다면 Docker로 바로 실행할 수 있다.

docker build -t markitdown:latest .
docker run --rm -i markitdown:latest  결과.md

유의할 점 (Things to Watch Out For)

1. Python 3.10 미만은 동작하지 않는다 설치 전 반드시 버전 확인. python --version으로 체크하자.

2. v0.1.0부터 설치 방식이 바뀌었다 이전 버전(pip install markitdown)으로 설치했다면 의존성이 빠져 있을 수 있다. pip install 'markitdown[all]'로 재설치하자.

3. convert_stream()은 반드시 바이너리로 열어야 한다 open("파일.pdf", "r")이 아니라 open("파일.pdf", "rb")처럼 바이너리 모드로 열어야 한다.

# 잘못된 방법
with open("파일.pdf", "r") as f:
    result = md.convert_stream(f)   # 오류 발생

# 올바른 방법
with open("파일.pdf", "rb") as f:
    result = md.convert_stream(f)

4. LLM 이미지 설명은 API 비용이 발생한다 llm_client를 연결하면 GPT-4o API를 호출하므로 OpenAI 과금이 생긴다. 이미지가 많은 PDF는 비용에 주의하자.

5. OCR은 기본 포함이 아니다 스캔 PDF나 이미지 내 텍스트 추출이 필요하다면 별도 플러그인 설치가 필요하다.

pip install markitdown-ocr

정리 (Summary)

항목 내용
개발사 Microsoft (AutoGen 팀)
라이선스 Apache 2.0 (상업적 사용 가능)
지원 언어 Python 3.10+
지원 형식 PDF, Word, PPT, Excel, 이미지, 오디오, YouTube, HTML 등
주요 출력 Markdown
강점 형식 다양성, CLI 지원, LLM 연동, 선택적 설치
주의 Python 3.10+, 바이너리 모드 필수, LLM 연동 시 API 비용

PDF 하나만 변환하는 게 아니라 여러 형식의 파일을 LLM에 넣어야 하는 상황이라면 MarkItDown이 가장 편한 선택이다. CLI로 바로 쓸 수 있어서 코딩을 몰라도 터미널만 열면 시작할 수 있다.

GitHub: https://github.com/microsoft/markitdown

PDF 파싱 오픈소스 끝판왕 — OpenDataLoader PDF로 PDF를 Markdown·JSON 변환하는 법

AI 서비스를 만들거나 RAG 파이프라인을 구축할 때 PDF 처리를 마크다운으로할 수 있는 방법이다. OpenDataLoader PDF는 이 문제를 오픈소스로 해결한 라이브러리다.


이게 왜 좋은가 (Why It’s Worth Using)

① 벤치마크 1위 200개 실제 PDF 대상 테스트에서 전체 정확도 0.90으로 1위를 기록했다. 특히 표 추출 정확도는 0.93으로, Docling(0.89) 등 경쟁 도구보다 높다.

② GPU 없이 로컬 실행 가능 기본 모드는 로컬에서 페이지당 0.05초로 동작한다. 복잡한 페이지만 AI 백엔드로 라우팅하는 하이브리드 모드도 지원한다. 비용 없이 시작할 수 있다.

③ AI에 바로 넣을 수 있는 출력

  • Markdown — LLM 컨텍스트, RAG 청킹용
  • JSON — 요소마다 바운딩 박스 + 의미 유형 포함
  • HTML — 웹 표시용
  • LangChain 통합도 기본 지원

④ 80개 이상 언어 OCR + 수식 인식 스캔 PDF도 처리하고, LaTeX 수식 변환, 워터마크 필터링, 프롬프트 인젝션 공격 차단 필터도 내장되어 있다.

⑤ Apache 2.0 라이선스 상업적 사용 가능. Python, Node.js, Java 모두 지원한다.


설치 및 기본 사용법 (Installation & Basic Usage)

설치 (Install) — 터미널에서 한 번만

언어 명령어 패키지
Python pip install opendataloader-pdf PyPI
Node.js npm install @opendataloader/pdf npm
Java Maven Central 의존성 추가 (아래 참고) Maven Central

Java — Java 11 이상 필요

<dependency>
  <groupId>org.opendataloader</groupId>
  <artifactId>opendataloader-pdf-core</artifactId>
  <version>최신버전 확인 후 입력</version>
</dependency>

사용 (Usage) — 코드에서 import 후 호출

Python

💡 초보자 가이드: 코딩 환경이 없다면 VS Code 또는 Positron을 설치하자. 설치 후 새 파일을 만들 때 확장자를 .ipynb로 지정하면 Jupyter Notebook 환경이 열린다. 셀 단위로 코드를 작성하고 Shift + Enter로 실행하면 된다. 터미널에서의 pip 설치도 VS Code / Positron 내부 터미널(Ctrl + `` “`)에서 그대로 실행 가능하다.

from opendataloader_pdf import convert

result = convert("파일.pdf")
print(result.markdown)   # Markdown 출력
print(result.json)       # JSON 출력 (바운딩 박스 포함)

Node.js

💡 초보자 가이드: Node.js가 없다면 nodejs.org에서 LTS 버전을 설치한다. 이후 VS Code에서 작업 폴더를 열고, 내부 터미널에서 npm install로 패키지를 설치한다. 코드는 .ts 또는 .js 파일을 만들어 붙여넣은 뒤 터미널에서 node 파일명.js로 실행하면 된다. TypeScript(.ts)를 쓴다면 ts-node 패키지도 함께 설치해야 한다(npm install -g ts-node).

import { convert } from '@opendataloader/pdf';

await convert(['file1.pdf', 'folder/'], {
  outputDir: 'output/',
  format: 'markdown,json'
});

유의할 점 (Things to Watch Out For)

1. PDF 전용 Word, Excel, PowerPoint는 지원하지 않는다. PDF로 변환 후 사용해야 한다.

2. 호출마다 JVM 프로세스가 생성 convert()를 파일 하나씩 반복 호출하면 느려진다. 배치로 묶어서 처리하는 것이 좋다.

3. 하이브리드 모드는 인터넷 연결 필요 로컬 모드만 쓰면 완전 오프라인 가능하지만, 정확도는 하이브리드 대비 낮다. 민감한 문서는 로컬 모드를 선택하자.

4. 접근성(Tagged PDF) 자동 생성은 아직 PDF/UA 변환은 엔터프라이즈 옵션이고, 완전 오픈소스 자동 태깅은 2026년 Q2 예정이다.


정리 (Summary)

항목 내용
라이선스 Apache 2.0 (상업적 사용 가능)
지원 언어 Python, Node.js, Java
주요 출력 Markdown, JSON, HTML
강점 표 추출 정확도, 로컬 실행, 바운딩 박스
주의 PDF 전용, 배치 처리 권장, 하이브리드 모드는 유료 API 사용

PDF를 LLM에 넣어야 하는 상황이라면 일단 써볼 만한 도구다. 로컬 무료 모드만으로도 충분한 수준의 추출 품질이 나온다.

GitHub: https://github.com/opendataloader-project/opendataloader-pdf

코딩 없이 부동산 데이터 분석: R 바이브 코딩 완전 가이드 (국토부 실거래가 실습)

바이브 코딩 & R 데이터 분석 강의 주요내용

1. 강의 핵심 3줄 요약

  1. 바이브 코딩 = 자연어(한국어)로 AI에게 명령 → AI가 코드 작성 → 단계별 확인·수정 반복
  2. 도구 스택: R + Positron IDE + GitHub Copilot (무료 or 교육 할인)
  3. 실습 흐름: 국토부 부동산 실거래가 Excel 다운 → 데이터 전처리 → 통계 → 시각화

2. 왜 이 도구들인가?

GitHub Copilot을 쓰는 이유

  • 가격: Claude Code, Cursor 등은 종량제(많이 쓸수록 비용↑), Copilot은 정액제 월 10달러
  • 멀티모델 지원: Claude, GPT, Gemini 등 모델을 자유롭게 선택 가능
  • 코드 특화 학습: 전 세계 개발자 코드를 학습 → 코드 품질·효율성이 높음
  • 전 세계 개발자 설문(StackOverflow)에서 업무용 AI 도구 1위 (ChatGPT는 개인용에 치우침)

Positron IDE를 쓰는 이유

  • R Studio를 만든 Posit 재단이 개발 (VS Code 기반)
  • R 사용자를 위한 기본값 세팅 내장 (단축키, 변수창 등)
  • 오른쪽 변수창: 현재 작업 중인 변수를 실시간 확인 (VS Code에는 없음)
  • Jupyter Notebook 지원 → Python·R·Julia 혼용 가능
  • 코드 → HTML → PDF 내보내기 가능

3. 초보자 단계별 설치 가이드

STEP 1. R 설치

  • 다운로드: CRAN R Project 공식 사이트
  • 최신 버전: R 4.5.3 (버전 앞자리가 3이면 반드시 업데이트)
  • Windows/macOS 각각 맞는 버전 다운로드 후 설치
  • 설치 시 "동의합니다"만 계속 클릭하면 OK

⚠️ R이 없으면 오늘 바이브 코딩 불가. 반드시 먼저 설치.

STEP 2. Positron IDE 설치

  • 다운로드: Positron 공식 페이지 접속
  • 다운로드 버튼 클릭 → Pre-download 체크박스 해제 → 다운로드 목록 활성화
  • Windows: System Level 설치 파일 선택 (위에 있는 것)
  • Mac: M1/M2/M3 → ARM 64, 인텔 Mac → Intel 버전 선택
  • 설치 순서: R 먼저 → Positron 나중에

STEP 3. GitHub 계정 가입

  1. github.com 접속 → 회원가입
  2. 교육기관 이메일(.ac.kr 또는 .edu) 사용 권장 → 교육 할인 가능
  3. 가입 시 본인 인증 퍼즐 통과 필요:
    • 비주얼 퍼즐: 왼쪽 그림과 가장 비슷한 그림 10개 중 선택
    • 오디오 퍼즐: 3개 소리 중 다른 동물 소리 찾기 (10번 반복) — 오디오가 더 쉬움

STEP 4. GitHub Copilot 활성화

  1. GitHub 로그인 → 오른쪽 상단 프로필 클릭
  2. Copilot Settings 선택
  3. “Copilot을 무료로 사용하시겠습니까?” 클릭 → 첫 달 Pro 무료 제공
  4. 이후 무료 플랜으로 전환 (토큰 제한·속도 차이 있지만 사용 가능)

교육 할인(2년 무료): Settings → Billing → Education Benefit → Start Application → 영문 재학/재직증명서 업로드 → 1~2일 후 승인 메일

STEP 5. Positron에 Copilot 연결

  1. Positron 실행 → 왼쪽 패널에서 안경 쓴 로봇 아이콘 클릭
  2. Enable Positron Assistant 클릭
  3. 팝업의 체크박스 2개 체크
  4. Sign in to Provider → GitHub Copilot (OAuth) 선택 → Sign in 클릭
  5. 8자리 코드 자동 복사됨 → Copy & Continue → 웹브라우저 자동 열림
  6. GitHub 로그인 → 8자리 코드 붙여넣기(Ctrl+V) → Continue → Authorize
  7. Positron으로 돌아와서 Reload 클릭
  8. 채팅창에 AI 모델 선택 드롭다운 표시되면 완료 (기본값: GPT-4o mini)

4. 바이브 코딩 개념

바이브 코딩이란?

  • 자연어 대화로 AI에게 코드를 시키는 방식 (2025년 2월 Andrej Karpathy가 정의)
  • 핵심: Low Code, High Impact — 코드를 직접 치는 것이 아니라 의도(Intent)를 전달
  • AI 오타 없음, 실수 줄어듦, 에러 발생 시 설명도 요청 가능

비유: 아이언맨의 토니 스타크가 자비스에게 "이거 빨간색 금색으로 바꿔줘"라고 하는 것처럼

논문·데이터 분석에서의 바이브 코딩 주의점

  • 한 번에 2,000줄짜리 코드를 뽑지 말 것 → 중간 어디서 잘못됐는지 모름
  • Step by Step: 단계별로 코드를 확인하며 진행
  • 중간 결과물 기록 필수 (논문 재현성 때문에)
  • Jupyter Notebook 활용 이유: AI에게 뭘 요구했는지 기록 + 단계별 확인 가능

5. 꼭 외워야 할 R 단축키 3가지

단축키 기능 비고
Alt + - 변수 저장 (<-) Mac: Option + -
Ctrl + Shift + M 파이프 오퍼레이터 (%>%) Mac: Cmd + Shift + M
Shift + Enter 코드 실행 현재 셀 실행

이 3가지만 알면 오늘 강의의 90% 완료


6. 바이브 코딩 실습 방법 (주석 기반)

방법: 채팅창 대신 주석으로 명령

# tidyverse 패키지 설치
install.packages("tidyverse")   # AI가 자동 완성

# tidyverse 패키지 불러오기
library(tidyverse)              # 탭 키로 추천 수락

# mtcars 예제 데이터 불러오기
data(mtcars)

동작 원리:

  1. 코드 창에 # 으로 한국어 주석 입력
  2. AI(Copilot)가 반투명 글씨로 코드 추천
  3. Tab 키로 수락, Enter 후 다음 줄 추천 수락
  4. Shift + Enter로 실행
  5. 에러 발생 시 → Fix 버튼 클릭 or 로봇 창에 에러 복사해서 질문

교수님 팁: “저는 알 코드 하나도 안 쳤고요, 다 주석 주석 주석만 했습니다”


7. 파이프 오퍼레이터 (%>%) 개념

왜 쓰나?

코드 가독성을 높이기 위해 — 괄호 안에서 바깥쪽으로 읽는 대신, 왼쪽에서 오른쪽으로 순서대로 읽을 수 있게 함

비교 예시

# 파이프 없이 (괄호 중첩 — 안에서 바깥으로 읽어야 함)
round(log(sum(1:10)))

# 파이프 사용 (왼쪽에서 오른쪽으로 순서대로 읽힘)
1:10 %>% sum() %>% log() %>% round()
  • 두 코드의 결과는 동일 (값: 4)
  • 파이프가 있으면 “1부터 10까지 합산 → 로그 → 반올림” 순서가 직관적

8. 부동산 데이터 분석 실습 흐름

STEP 1. 데이터 다운로드

  1. 국토부 실거래가 사이트 접속 (rt.molit.go.kr)
  2. 아파트 매매 실거래가 → 조건별 자료 제공
  3. 기간: 원하는 연도 설정 (예: 2024년 1월~12월)
  4. 시도: 서울시 선택 → 엑셀 다운로드
  5. 다운받은 파일을 작업 폴더에 저장

STEP 2. Positron 작업 폴더 설정

  1. Positron 실행 → Open Folder 클릭
  2. 새 폴더 생성 후 선택
  3. New NotebookR Notebook 선택
  4. Ctrl + S로 저장 (파일명 예: 260314_realestate.ipynb)

STEP 3. 패키지 로드 및 파일 읽기

# tidyverse 패키지 불러오기
library(tidyverse)

# readxl 패키지 이용해서 파일 불러오기 (상위 12줄 스킵)
library(readxl)
df <- read_excel("파일명.xlsx", skip = 12)

국토부 실거래가 파일은 상단에 주석 12줄이 자동 삽입됨 → skip = 12 필수

STEP 4. 데이터 확인 및 전처리

# df 변수명 확인
names(df)

# 변수명 일괄 변경 (영문 약어 + 한글 포함)
df <- df %>% rename(
  sgg = `시군구`,
  area_m2 = `전용면적(㎡)`,
  price = `거래금액(만원)`,
  contract_ym = `계약년월`,
  apt_name = `단지명`,
  floor = `층`
  # ... 나머지 변수도 동일하게
)

# 자료형 변환 (문자형 → 숫자형, 쉼표 제거)
df <- df %>%
  mutate(
    area_m2 = as.numeric(area_m2),
    price = as.numeric(gsub(",", "", price))
  )

# 평당 가격 변수 생성 (1평 = 3.3㎡)
df <- df %>%
  mutate(price_per_pyeong = price / (area_m2 / 3.3))

# 주소 분리 (시군구 → 시, 구, 동 분리)
df <- df %>%
  separate(sgg, into = c("si", "sgg", "dong"), sep = " ")

STEP 5. 기초 통계

# 시군구별 거래건수, 평균가격, 평균면적 통계
df_summary <- df %>%
  group_by(sgg) %>%
  summarise(
    count = n(),
    mean_price = mean(price, na.rm = TRUE),
    mean_area = mean(area_m2, na.rm = TRUE)
  ) %>%
  arrange(desc(mean_price))  # 가격 높은 순 정렬

STEP 6. 시각화

# 전용면적 vs 가격 산점도 (시군구별 색깔 구분)
ggplot(df, aes(x = area_m2, y = price, color = sgg)) +
  geom_point(alpha = 0.5) +
  labs(x = "전용면적(㎡)", y = "거래금액(만원)") +
  theme_minimal()

# 막대그래프 (시군구별 거래건수)
ggplot(df_summary, aes(x = reorder(sgg, count), y = count)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  theme_minimal()

9. 에러 처리 방법

상황 대처법
코드 에러 발생 에러 메시지 옆 Fix 버튼 클릭 → AI가 자동 수정
AI 추천이 안 맞을 때 로봇 채팅창에 에러 복사 후 “왜 오류가 났어?” 질문
복잡한 변환이 필요할 때 ChatGPT에 붙여넣어 변환 요청 → 결과를 Positron에 복사
자동완성이 안 뜰 때 주석을 조금 더 구체적으로 작성

10. 결과물 저장 방법

Ctrl + Shift + K  →  Preview 모드 (HTML 미리보기)
Ctrl + S          →  .ipynb 파일로 저장
HTML로 내보내기   →  웹브라우저에서 열기 → 인쇄 → PDF 저장

11. 핵심 패키지 정리

패키지 용도
tidyverse 데이터 분석 통합 패키지 (dplyr, ggplot2 등 포함)
readxl 엑셀 파일 불러오기
writexl 엑셀 파일로 내보내기
ggplot2 데이터 시각화 (tidyverse 포함)
dplyr 데이터 전처리 (tidyverse 포함)

12. 교수님 핵심 조언

“R code를 외우는 데 시간을 허비하지 마세요. 통계 이론이나 더 가치 있는 지식을 쌓으세요. 한국어로 명령만 할 줄 알면 AI가 나머지를 해줍니다.”

  • 코드를 한 번에 다 돌리지 말고 스텝 바이 스텝으로 확인
  • 결과물은 항상 노트북에 기록으로 남길 것 (논문 재현성)
  • Copilot은 쓸수록 내 코딩 패턴을 학습 → 시간이 지날수록 더 정확해짐
  • 로봇 채팅창의 @DF 기능: 현재 데이터를 참조해서 분석 추천 가능
Posted in mm

록실장으로 업무 효율을 높이는 방법

🏗️ 록실장 사용설명서

수주 사업본부 AI 비서 완전 정복 가이드

📌 목차

  1. 록실장이 뭔가요?
  2. 어떻게 말을 걸면 되나요?
  3. 스킬이란 무엇인가요?
  4. 스킬별 사용법
  5. 슬래시 커맨드 사용법
  6. 이런 상황엔 이렇게 쓰세요
  7. 자주 묻는 질문 (FAQ)

1. 록실장이 뭔가요?

록실장은 부동산회사 수주본부 전용으로 설정된 AI 비서입니다.

> 💡 쉽게 말하면: 카카오톡에서 메시지 보내듯이, 업무 요청을 자연스럽게 말하면 알아서 처리해주는 AI 직원입니다.

할 수 있는 것들:

  • 회의록 자동 정리 및 파일명 변경
  • 오늘 할 일·마감 업무 정리
  • 프로젝트 현황 브리핑
  • 이메일 초안 작성
  • 미팅 일정 예약
  • 팀 현황 보고
  • 주간 업무 로그 작성

2. 어떻게 말을 걸면 되나요?

Claude Code 채팅창에 한국어로 자연스럽게 입력하면 됩니다.

✅ 이렇게 하세요

"오늘 할 일 정리해줘"
"AAA 프로젝트 요즘 어떻게 됐어?"
"이번 주 한 일 정리해줘"
"OOO한테 보낼 메일 써줘"
❌ 이렇게 안 해도 됩니다

명령어를 외울 필요 없음
정확한 단어를 맞출 필요 없음
영어로 쓸 필요 없음

> 💡 핵심 원칙: 팀 동료에게 말하듯이 편하게 요청하면 됩니다.


3. 스킬이란 무엇인가요?

스킬은 록실장이 특정 업무를 처리하는 방법이 정해진 프로그램입니다.

사용자 요청 → 록실장이 스킬 판단 → 스킬 실행 → 결과 제공

마치 회사 직원에게 "주간 보고 써줘"라고 하면, 그 직원이 알아서 정해진 양식에 맞게 작성하는 것과 같습니다.

스킬의 종류:

  • AI 에이전트 스킬: 자연어로 호출 (8종)
  • 슬래시 커맨드: /로 시작하는 직접 명령 (6종)

4. 스킬별 사용법

📋 my-tasks — 오늘 할 일 확인

무엇을 해주나요? 오늘 해야 할 업무, 마감 임박 항목, 진행 중인 프로젝트 KPI를 한눈에 정리해줍니다.

이렇게 말하세요:

"내 할 일 보여줘"
"오늘 뭐 해야 해?"
"마감 임박 업무 알려줘"
"KPI 현황 보여줘"

결과 예시:

📋 오늘의 할 일 — 2026-03-20

🔴 긴급 (오늘/3일 이내 마감)
- [ ] AAA 심의 자료 — 마감: 03-21

🟡 진행 중
- [ ] BBB TF 계약서 검토 — 담당: OOO

🔵 이번 주 예정
- [ ] 주간보고 작성 — 금요일

📓 log-interviewer — 주간 업무 로그 작성

무엇을 해주나요? AI가 질문을 던져서 이번 주 한 일을 물어보고, 자동으로 주간 로그 파일을 만들어 줍니다.

이렇게 말하세요:

"이번 주 로그 작성해줘"
"이번 주 한 일 정리해줘"
"주간 보고 준비해줘"
"이번 주 마무리해줘"

진행 방식:

록실장: "이번 주 가장 비중이 컸던 업무가 뭐였나요?"
나:     "AAA 심의 준비랑 BBB 계약 검토요"

록실장: "완전히 마무리된 업무가 있나요?"
나:     "BBB 1차 협의는 끝났어요"

록실장: "다음 주에 집중할 업무 3가지만 꼽아주세요"
나:     "심의 대응, 수주회의 준비, 팀 공유"
         ↓
     [주간 로그 파일 자동 생성]

📊 project-tracker — 프로젝트 현황 추적

무엇을 해주나요? 수주 진행 중인 프로젝트들의 최근 변동사항과 현황을 정리해줍니다.

이렇게 말하세요:

"프로젝트 현황 보고해줘"
"AAA 요즘 어떻게 됐어?"
"수주진행 사업지 현황 알려줘"
"BBB 이번 주 변경사항 있어?"

결과 예시:

📊 프로젝트 현황 브리핑 — 2026-03-20

| 프로젝트       | 단계     | 담당   | 이번 주 변동 | 이슈 |
|--------------|--------|------|-----------|-----|
| AAA    | 사업성심의 | OOO | 5건        | ⚠️  |
| BBB | TF     | OOO | 3건        | —   |

👥 team-briefing — 팀 전체 현황

무엇을 해주나요? 팀원 9명의 담당 프로젝트와 주간 활동을 집계하여 팀장용 브리핑을 만들어줍니다.

이렇게 말하세요:

"팀 현황 보고해줘"
"팀 브리핑"
"우리 팀 KPI 어때?"
"팀원별 담당 현황 보여줘"

결과 예시:

👥 팀 현황 브리핑

| 팀원   | 담당 프로젝트      | 현재 단계  |
|------|----------------|---------|
| OOO | AAA센터      | 사업성심의  |
| ㅁㅁㅁ | BBB레지던스   | TF      |
| WWW | 공공CCC    | 입찰 준비  |
...

📧 email-sender — 이메일 초안 작성

무엇을 해주나요? 업무 이메일 초안을 DLC 비즈니스 형식으로 작성하고, Gmail 임시보관함에 저장합니다.

이렇게 말하세요:

"이메일 작성해줘"
"OOO한테 A PJ 심의 관련 메일 써줘"
"시행사에 계약 관련 메일 초안 만들어줘"
"인허가 담당자한테 미팅 확인 메일 써줘"

진행 방식:

1. 록실장이 수신자·목적·내용 확인
2. 초안 화면에 출력
3. 수정 요청 가능
4. 확인 완료 → Gmail 임시보관함 자동 저장
5. Gmail에서 첨부파일 추가 후 발송

> ⚠️ 주의: 발송은 본인이 Gmail에서 직접 합니다. 록실장은 초안만 저장합니다.


📅 meeting-scheduler — 미팅 일정 예약

무엇을 해주나요? 참석자들의 빈 시간을 자동으로 찾아 Google Calendar에 일정을 등록하고, Teams 초대 메시지 초안을 만들어줍니다.

이렇게 말하세요:

"미팅 잡아줘"
"다음 주에 BBB TF 회의 잡아줘"
"OOO, ㅁㅁㅁ이랑 내주 오전에 회의 예약해줘"
"내 빈 시간 확인해줘"

진행 방식:

1. 회의 목적·참석자·희망 날짜 확인
2. 참석자 공통 빈 시간 3개 제안
3. 시간 선택 → Google Calendar 자동 등록
4. Teams 초대 메시지 초안 출력

🔄 meeting-refiner — 회의록 정제 (기존 스킬)

무엇을 해주나요? 날것의 회의 메모를 비즈니스 형식으로 다듬고, 표준 파일명으로 자동 변경합니다.

이렇게 말하세요:

"회의록 정제해줘"
"회의 메모 다듬어줘"
"미팅 메모 정제하고 이름 바꿔줘"

전/후 예시:

[정제 전]
오늘 AAA 미팅함. 시청에서 부지 협의 필요하다함.
다음주까지 검토해달라함.

[정제 후]
## 주요 협의 내용
- 시청 부지 협의 필요 (확인 요망)

## Action Items
- [ ] 부지 협의안 검토 — 마감: 2026-03-27 @담당자

📈 daily-delta — 전일 변경사항 추적 (기존 스킬)

무엇을 해주나요? 어제 변경된 프로젝트 파일과 수신 이메일을 분석하여 일일 업무 보고서를 만들어줍니다.

이렇게 말하세요:

"전일 변경사항 알려줘"
"어제 뭐 바뀌었어?"
"오늘 아침 브리핑해줘"
"모닝브리핑"

5. 슬래시 커맨드 사용법

채팅창에 /를 입력하면 바로 실행됩니다.

커맨드 기능 입력 예시
/task-assign 팀원 업무 지시서 /task-assign 입력 후 내용 작성
/report-write DLC 표준 보고서 /report-write 입력 후 주제 입력
/teams-message Teams 메시지 초안 /teams-message 입력 후 내용 설명
/outlook-email Outlook 이메일 초안 /outlook-email 입력 후 내용 설명
/doc-create 표준 문서 생성 /doc-create 입력 후 문서 종류 설명
/meeting-minutes 회의록 작성 /meeting-minutes 입력 후 내용 입력

사용 예시:

/task-assign
→ "OOO / AAA 심의 자료 보완 / 03-25 / PPT 1식"

6. 이런 상황엔 이렇게 쓰세요

🌅 월요일 아침

"오늘 할 일 보여줘"
"이번 주 뭐 챙겨야 해?"

📅 회의 전

"[프로젝트명] 최근 현황 정리해줘"
"[참석자]랑 오후에 회의 잡아줘"

📝 회의 후

"방금 회의 메모 정제해줘" (메모 붙여넣기 후)
"회의록 이름 바꿔줘"

📧 메일 작성

"[수신자]한테 [내용] 관련 메일 초안 써줘"

📊 금요일 주간 마무리

"이번 주 한 일 정리해줘"
"주간 로그 작성해줘"
"팀 현황 브리핑해줘"

🚨 급할 때

"[프로젝트명] 지금 어떤 상황이야?"
"오늘 마감 업무 뭐 있어?"

7. 자주 묻는 질문

Q. 정확한 스킬 이름을 몰라도 되나요? > 네. “회의록 정리해줘”, "오늘 일정 알려줘"처럼 자연스럽게 말하면 알아서 찾아서 실행합니다.

Q. 실수로 잘못 요청하면 어떻게 되나요? > 파일 생성·저장 전에 항상 확인을 요청합니다. "아니야, 취소해줘"라고 하면 중단됩니다.

Q. 결과가 마음에 안 들면? > “다시 써줘”, “좀 더 간결하게”, “공식적인 톤으로 바꿔줘” 등으로 수정 요청하면 됩니다.

Q. 이메일을 록실장이 직접 보내나요? > 아닙니다. Gmail 임시보관함에 초안만 저장합니다. 발송은 본인이 직접 합니다.

Q. 팀원도 록실장을 쓸 수 있나요? > 현재는 팀장(록) 계정으로만 설정되어 있습니다. 팀원 확장은 별도 설정이 필요합니다.

Q. 록실장이 틀린 정보를 말하면? > "그건 틀렸어, [올바른 정보]야"라고 정정해주세요. 중요한 결정은 반드시 직접 확인하세요.


🗂️ 관련 파일 위치

파일 위치
스킬 파일들 _DL_Rok\.agent\skills\[스킬명]\SKILL.md
팀 정보 _DL_Rok\.context\team-info.md
프로젝트 현황 _DL_Rok\.context\project-status.md
주간 로그 2026DL\Today\YYYY-WXX-weekly.md
일일 보고서 2026DL\Today\YYYY-MM-DD-daily.md
세션 메모 memory.md

> 💬 문의: 사용 중 막히는 부분이 있으면 그냥 록실장에게 “이거 어떻게 써?” 라고 물어보세요.


작성: 록실장 | 2026-03-20 | v1.0

Posted in mm

최신 AI로 투자 콘텐츠 자동화하기

콘텐츠 자동화 파이프라인 구축 가이드

전체 아키텍처 개요

[Cron/스케줄러] → [매크로 수집 봇] → [Discord 알림]
        ↓
[인턴 에이전트] → 주제 정렬 & 중복 제거
        ↓
[트레이더 에이전트] → 투자 추천 → [Discord 전송]
        ↓
[Claude API] → 번역 → [Notion 업로드]
        ↓
[사용자] → 10개 내외 자료 선택
        ↓
[ElevenLabs API] → TTS 생성
[이미지 합성] → 칠판 배경 합성
        ↓
[JSON 저장] → 작업 데이터 관리
        ↓
[Python 숏츠 생성] → 이미지 + TTS + 번역 → 영상
        ↓
[사용자 승인] → YouTube 업로드
        ↓
[Playwright] → 텔레그램, 네이버블로그, 링크드인, 페이스북, X 자동 게시

Phase 1. 인프라 세팅

1-1. 서버 환경

항목 권장 사양
서버 AWS EC2 (t3.medium 이상) 또는 개인 서버
OS Ubuntu 22.04 LTS
Python 3.11+
Node.js 18+ (Playwright용)
스케줄러 Cron (Linux) 또는 APScheduler (Python)
DB SQLite (경량) 또는 PostgreSQL

1-2. 필수 계정 & API 키

서비스 용도 비용
Discord Bot 알림 & 결과 전송 무료
Claude API (Anthropic) 번역 & AI 에이전트 종량제
ElevenLabs API TTS 음성 생성 무료 티어 + 유료
Notion API 데이터 업로드 & 관리 무료
YouTube Data API 영상 업로드 무료
Telegram Bot API 텔레그램 포스팅 무료
Naver Blog API 블로그 포스팅 무료 (또는 Playwright)

1-3. 프로젝트 폴더 구조

content-pipeline/
├── config/
│   ├── .env                  # API 키, 토큰
│   └── settings.yaml         # 스케줄, 채널ID 등 설정
├── collectors/
│   ├── macro_collector.py    # 매크로 데이터 수집
│   └── sources.yaml          # 수집 소스 목록
├── agents/
│   ├── intern_agent.py       # 주제 정렬 & 중복 제거
│   └── trader_agent.py       # 투자 추천 분석
├── translators/
│   └── claude_translator.py  # Claude API 번역
├── media/
│   ├── tts_generator.py      # ElevenLabs TTS
│   ├── image_composer.py     # 칠판 배경 이미지 합성
│   └── shorts_maker.py       # 숏츠 영상 생성
├── publishers/
│   ├── youtube_uploader.py   # YouTube 업로드
│   ├── discord_bot.py        # Discord 알림
│   ├── notion_uploader.py    # Notion 업로드
│   └── social_poster.py      # Playwright 멀티플랫폼 게시
├── data/
│   ├── raw/                  # 수집 원본
│   ├── processed/            # 정렬·중복제거 후
│   ├── selected/             # 사용자 선택분
│   └── output.json           # 최종 작업 데이터
├── assets/
│   ├── chalkboard_bg.png     # 칠판 배경 이미지
│   └── fonts/                # 폰트 파일
├── scheduler.py              # 메인 스케줄러
├── requirements.txt
└── README.md

Phase 2. 단계별 구현

Step 1. 매크로 자료 수집 (매일 오후 정해진 시간)

역할: 정해진 소스에서 매크로/금융 데이터를 자동 수집

# scheduler.py — APScheduler 예시
from apscheduler.schedulers.blocking import BlockingScheduler

scheduler = BlockingScheduler()

@scheduler.scheduled_job('cron', hour=14, minute=0)  # 매일 오후 2시
def run_pipeline():
    collect_data()      # Step 1
    notify_discord()    # Step 2
    sort_and_dedup()    # Step 3
    analyze_trading()   # Step 4
    translate_upload()  # Step 5
    # Step 6~12는 사용자 입력 대기

scheduler.start()

수집 소스 예시:

  • RSS 피드 (Bloomberg, Reuters 등)
  • 웹 스크래핑 (Selenium/Playwright)
  • API (금융 데이터 API, 뉴스 API)

필요 라이브러리:

feedparser        # RSS 파싱
requests          # HTTP 요청
beautifulsoup4    # HTML 파싱
playwright        # 동적 페이지 스크래핑

Step 2. Discord 알림 — “업무 시작”

역할: 파이프라인 시작을 Discord 채널에 알림

# discord_bot.py
import discord
from discord import Webhook
import aiohttp

WEBHOOK_URL = "https://discord.com/api/webhooks/YOUR_WEBHOOK"

async def notify_start(collected_count: int):
    async with aiohttp.ClientSession() as session:
        webhook = Webhook.from_url(WEBHOOK_URL, session=session)
        embed = discord.Embed(
            title="📡 매크로 수집 완료",
            description=f"총 {collected_count}건의 자료를 수집했습니다.\n인턴 에이전트가 정리를 시작합니다.",
            color=0x00ff00
        )
        await webhook.send(embed=embed)

Tip: Discord Bot 대신 Webhook을 사용하면 더 간단합니다.


Step 3. 인턴 에이전트 — 주제 정렬 & 중복 제거

역할: Claude API를 활용하여 수집된 자료를 주제별 분류하고, 유사 콘텐츠 제거

# intern_agent.py
import anthropic

client = anthropic.Anthropic(api_key="YOUR_KEY")

def sort_and_deduplicate(articles: list[dict]) -> list[dict]:
    prompt = f"""
    다음 {len(articles)}개의 매크로 자료를 분석해주세요:
    
    1. 주제별로 분류 (예: 금리, 환율, 원자재, 주식, 부동산 등)
    2. 내용이 유사한 자료는 가장 정보량이 많은 것만 남기고 제거
    3. 각 자료에 중요도 점수(1~10) 부여
    
    자료 목록:
    {json.dumps(articles, ensure_ascii=False)}
    
    JSON 형식으로 반환해주세요.
    """
    
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=4096,
        messages=[{"role": "user", "content": prompt}]
    )
    return json.loads(response.content[0].text)

Step 4. 트레이더 에이전트 — 투자 추천 → Discord 전송

역할: 정리된 자료를 바탕으로 투자 인사이트를 생성하고 Discord에 전송

# trader_agent.py
def generate_trading_insight(sorted_articles: list[dict]) -> str:
    prompt = f"""
    당신은 전문 매크로 트레이더입니다.
    아래 정리된 매크로 자료를 바탕으로:
    
    1. 현재 시장 상황 요약 (3줄)
    2. 주목할 섹터/자산 TOP 3
    3. 각 추천에 대한 근거
    4. 리스크 요인
    
    자료: {json.dumps(sorted_articles, ensure_ascii=False)}
    """
    
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=2048,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.content[0].text

# Discord로 전송
async def send_trading_insight(insight: str):
    embed = discord.Embed(
        title="📊 트레이더 에이전트 분석",
        description=insight,
        color=0xffd700
    )
    await webhook.send(embed=embed)

Step 5. Claude API 번역 → Notion 업로드

역할: 영문 자료를 한국어로 번역하고 Notion 데이터베이스에 업로드

# claude_translator.py
def translate_article(article: dict) -> dict:
    prompt = f"""
    아래 영문 기사를 자연스러운 한국어로 번역해주세요.
    전문 용어는 원문을 괄호에 병기합니다.
    
    제목: {article['title']}
    본문: {article['content']}
    """
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=4096,
        messages=[{"role": "user", "content": prompt}]
    )
    article['translated'] = response.content[0].text
    return article

# notion_uploader.py
from notion_client import Client

notion = Client(auth="YOUR_NOTION_TOKEN")
DATABASE_ID = "YOUR_DATABASE_ID"

def upload_to_notion(article: dict):
    notion.pages.create(
        parent={"database_id": DATABASE_ID},
        properties={
            "제목": {"title": [{"text": {"content": article['title_kr']}}]},
            "카테고리": {"select": {"name": article['category']}},
            "중요도": {"number": article['importance']},
            "날짜": {"date": {"start": article['date']}},
            "상태": {"select": {"name": "대기"}}
        },
        children=[
            {"paragraph": {"rich_text": [{"text": {"content": article['translated']}}]}}
        ]
    )

Step 6. 사용자 자료 선택 (수동)

역할: Notion 또는 Discord에서 10개 내외 자료를 선택

구현 옵션:

방식 장점 단점
Notion 체크박스 직관적, 모바일 가능 Notion API 폴링 필요
Discord 리액션 빠름, 알림 UI 제한적
웹 대시보드 커스텀 UI 추가 개발 필요
# Notion 기반 선택 감지 예시
def get_selected_articles() -> list[dict]:
    results = notion.databases.query(
        database_id=DATABASE_ID,
        filter={"property": "상태", "select": {"equals": "선택됨"}}
    )
    return [parse_page(page) for page in results['results']]

Step 7. ElevenLabs TTS 변환

역할: 선택된 자료의 번역문을 음성으로 변환

# tts_generator.py
from elevenlabs import ElevenLabs

client = ElevenLabs(api_key="YOUR_KEY")

def generate_tts(text: str, output_path: str, voice_id: str = "YOUR_VOICE_ID"):
    audio = client.text_to_speech.convert(
        voice_id=voice_id,
        text=text,
        model_id="eleven_multilingual_v2",
        output_format="mp3_44100_128"
    )
    
    with open(output_path, "wb") as f:
        for chunk in audio:
            f.write(chunk)
    
    return output_path

음성 설정 팁:

  • eleven_multilingual_v2 모델 → 한국어 지원
  • Voice Cloning으로 본인 목소리 사용 가능
  • Stability: 0.5, Similarity: 0.75 기본 권장

Step 8. 이미지 칠판 배경 합성

역할: 핵심 내용을 칠판 스타일 이미지로 합성

# image_composer.py
from PIL import Image, ImageDraw, ImageFont

def compose_chalkboard_image(
    title: str,
    key_points: list[str],
    bg_path: str = "assets/chalkboard_bg.png",
    output_path: str = "output.png"
):
    bg = Image.open(bg_path).resize((1080, 1920))  # 숏츠 세로 비율
    draw = ImageDraw.Draw(bg)
    
    # 폰트 설정 (분필 느낌)
    title_font = ImageFont.truetype("assets/fonts/chalk_font.ttf", 60)
    body_font = ImageFont.truetype("assets/fonts/chalk_font.ttf", 40)
    
    # 제목
    draw.text((540, 200), title, font=title_font, fill="white", anchor="mt")
    
    # 핵심 포인트
    y = 400
    for i, point in enumerate(key_points):
        draw.text((100, y), f"✦ {point}", font=body_font, fill="#E8E8E8")
        y += 80
    
    bg.save(output_path)
    return output_path

Step 9. JSON 저장

역할: 모든 작업 데이터를 JSON으로 저장하여 숏츠 생성에 활용

# data/output.json 구조
{
    "date": "2026-03-15",
    "articles": [
        {
            "id": 1,
            "title_en": "Fed Holds Rates Steady",
            "title_kr": "연준, 금리 동결 결정",
            "category": "금리",
            "summary_kr": "연준이 3월 FOMC에서...",
            "translated_full": "...",
            "importance": 9,
            "tts_path": "data/selected/01_tts.mp3",
            "image_path": "data/selected/01_chalkboard.png",
            "duration_seconds": 45
        }
    ],
    "trading_insight": "...",
    "total_duration": 540
}

Step 10. Python 숏츠 생성

역할: 이미지 + TTS + 자막을 조합하여 YouTube Shorts 영상 생성

# shorts_maker.py
from moviepy.editor import (
    ImageClip, AudioFileClip, TextClip, 
    CompositeVideoClip, concatenate_videoclips
)

def create_shorts(data_json: str, output_path: str = "output_shorts.mp4"):
    with open(data_json) as f:
        data = json.load(f)
    
    clips = []
    for article in data['articles']:
        # 이미지 클립
        audio = AudioFileClip(article['tts_path'])
        image = ImageClip(article['image_path']).set_duration(audio.duration)
        
        # 자막 추가
        subtitle = TextClip(
            article['summary_kr'],
            fontsize=30, color='white', bg_color='rgba(0,0,0,0.7)',
            size=(1000, None), method='caption'
        ).set_position(('center', 1600)).set_duration(audio.duration)
        
        # 합성
        clip = CompositeVideoClip([image, subtitle]).set_audio(audio)
        clips.append(clip)
    
    # 인트로/아웃트로 추가 가능
    final = concatenate_videoclips(clips, method="compose")
    final.write_videofile(
        output_path,
        fps=30,
        codec='libx264',
        audio_codec='aac'
    )
    return output_path

필요 라이브러리:

moviepy          # 영상 편집
Pillow           # 이미지 처리
ffmpeg           # 코덱 (시스템 설치 필요)

Step 11. 사용자 승인 → YouTube 업로드

역할: Discord에서 [승인] 버튼 클릭 시 YouTube에 업로드

# Discord 버튼 인터랙션
class ApprovalView(discord.ui.View):
    @discord.ui.button(label="✅ 승인", style=discord.ButtonStyle.green)
    async def approve(self, interaction, button):
        await interaction.response.send_message("📤 업로드를 시작합니다...")
        upload_to_youtube(shorts_path)
        await interaction.followup.send("✅ YouTube 업로드 완료!")
    
    @discord.ui.button(label="❌ 반려", style=discord.ButtonStyle.red)
    async def reject(self, interaction, button):
        await interaction.response.send_message("🔄 수정이 필요합니다. 피드백을 입력해주세요.")

# YouTube 업로드
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials

def upload_to_youtube(video_path: str, title: str, description: str):
    creds = Credentials.from_authorized_user_file('config/youtube_token.json')
    youtube = build('youtube', 'v3', credentials=creds)
    
    request = youtube.videos().insert(
        part="snippet,status",
        body={
            "snippet": {
                "title": title,
                "description": description,
                "tags": ["매크로", "경제", "투자"],
                "categoryId": "22"  # People & Blogs
            },
            "status": {
                "privacyStatus": "public",
                "selfDeclaredMadeForKids": False
            }
        },
        media_body=video_path
    )
    response = request.execute()
    return response['id']

Step 12. Playwright 멀티 플랫폼 자동 게시

역할: 숏츠 업로드 후 텍스트 버전을 여러 플랫폼에 자동 게시

# social_poster.py
from playwright.async_api import async_playwright

class SocialPoster:
    async def post_all(self, content: dict):
        async with async_playwright() as p:
            browser = await p.chromium.launch(headless=True)
            
            await self.post_telegram(browser, content)
            await self.post_naver_blog(browser, content)
            await self.post_linkedin(browser, content)
            await self.post_facebook(browser, content)
            await self.post_x(browser, content)
            
            await browser.close()
    
    async def post_telegram(self, browser, content):
        # Telegram Bot API 사용 (Playwright 불필요)
        import httpx
        BOT_TOKEN = "YOUR_BOT_TOKEN"
        CHAT_ID = "YOUR_CHAT_ID"
        url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
        await httpx.AsyncClient().post(url, json={
            "chat_id": CHAT_ID,
            "text": content['text'],
            "parse_mode": "Markdown"
        })
    
    async def post_naver_blog(self, browser, content):
        page = await browser.new_page()
        await page.goto("https://blog.naver.com")
        # 로그인 → 글쓰기 → 내용 입력 → 발행
        # (세부 셀렉터는 네이버 블로그 UI에 맞게 조정 필요)
        await page.close()
    
    async def post_linkedin(self, browser, content):
        page = await browser.new_page()
        await page.goto("https://www.linkedin.com")
        # 로그인 → 게시물 작성 → 발행
        await page.close()
    
    async def post_facebook(self, browser, content):
        page = await browser.new_page()
        await page.goto("https://www.facebook.com")
        # 로그인 → 게시물 작성 → 발행
        await page.close()
    
    async def post_x(self, browser, content):
        page = await browser.new_page()
        await page.goto("https://x.com")
        # 로그인 → 트윗 작성 → 발행
        await page.close()

⚠️ 주의: Playwright 기반 SNS 자동 게시는 각 플랫폼의 이용약관에 따라 계정 제한 리스크가 있습니다. 가능하면 공식 API를 우선 사용하세요.


Phase 3. 추가 자동화 (🟥 확장)

유튜브 영상 기반 주제 추천

# topic_recommender.py
def recommend_topics_from_youtube(channel_id: str):
    """기존 유튜브 영상을 분석하여 새로운 주제를 추천"""
    # 1. YouTube API로 채널 영상 목록 가져오기
    # 2. 영상 제목/설명/태그 수집
    # 3. Claude API로 트렌드 분석 & 새 주제 추천
    
    prompt = f"""
    다음은 유튜브 채널의 최근 영상 목록입니다:
    {video_list}
    
    1. 어떤 주제가 조회수가 높았는지 분석
    2. 아직 다루지 않은 관련 주제 5개 추천
    3. 현재 트렌드와 연결되는 주제 3개 추천
    """
    return claude_response

전체 스케줄 관리

# config/settings.yaml
schedules:
  macro_collection:
    time: "14:00"
    timezone: "Asia/Seoul"
    enabled: true
  
  topic_recommendation:
    time: "09:00"
    frequency: "weekly"  # 매주 월요일
    enabled: true
  
  analytics_report:
    time: "10:00"
    frequency: "weekly"  # 매주 월요일
    enabled: true
  
  channel_performance:
    time: "08:00"
    frequency: "daily"
    enabled: false

기술 스택 요약

카테고리 기술 용도
언어 Python 3.11+ 전체 파이프라인
스케줄링 APScheduler / Cron 정시 실행
AI Claude API (Anthropic) 번역, 분류, 분석, 추천
TTS ElevenLabs API 음성 생성
영상 MoviePy + FFmpeg 숏츠 제작
이미지 Pillow 칠판 배경 합성
알림 Discord.py / Webhook 상태 알림 & 승인
데이터 Notion API 자료 관리
자동화 Playwright SNS 자동 게시
업로드 YouTube Data API v3 영상 업로드
서버 AWS EC2 24시간 운영

필요 패키지 (requirements.txt)

# AI & NLP
anthropic>=0.40.0
elevenlabs>=1.0.0

# 데이터 수집
feedparser
requests
beautifulsoup4

# 영상 & 이미지
moviepy>=2.0.0
Pillow>=10.0.0

# 자동화
playwright
apscheduler>=3.10.0

# Discord
discord.py>=2.3.0
aiohttp

# Notion
notion-client>=2.0.0

# YouTube
google-api-python-client
google-auth-oauthlib

# SNS
httpx

# 유틸
python-dotenv
pyyaml

구현 순서 (권장)

한 번에 전체를 만들지 말고, 아래 순서로 하나씩 완성하세요.

Phase 1 — MVP (1~2주)
├── ① 매크로 수집 봇 (collectors/)
├── ② Discord 알림 (publishers/discord_bot.py)
├── ③ 인턴 에이전트 (agents/intern_agent.py)
└── ④ Notion 업로드 (publishers/notion_uploader.py)

Phase 2 — 콘텐츠 생성 (2~3주)
├── ⑤ Claude 번역 (translators/)
├── ⑥ TTS 생성 (media/tts_generator.py)
├── ⑦ 이미지 합성 (media/image_composer.py)
└── ⑧ 숏츠 생성 (media/shorts_maker.py)

Phase 3 — 배포 자동화 (1~2주)
├── ⑨ YouTube 업로드 (publishers/youtube_uploader.py)
├── ⑩ 승인 워크플로우 (Discord 버튼)
└── ⑪ 멀티플랫폼 게시 (publishers/social_poster.py)

Phase 4 — 고도화 (지속)
├── ⑫ 유튜브 분석 & 주제 추천
├── ⑬ 성과 대시보드
└── ⑭ A/B 테스트 (썸네일, 제목 등)

주의사항

[!CAUTION]

  • API 비용 관리: Claude API, ElevenLabs는 종량제입니다. 일일 사용량 상한을 설정하세요.
  • SNS 자동화 리스크: Playwright 기반 자동 게시는 계정 정지 리스크가 있습니다. 공식 API 우선 사용을 권장합니다.
  • 환경변수 보안: .env 파일은 절대 Git에 커밋하지 마세요. .gitignore에 반드시 추가하세요.
  • 영상 저작권: 수집한 자료의 출처를 반드시 명시하고, 저작권 문제가 없는 콘텐츠만 사용하세요.

참고글 :

https://www.facebook.com/leebisu/posts/pfbid02aaWe3TUXSUe2eY4WYdvbkpGgvWVTFJkwaEHkTKDtZnYaWZyoGRcQFs52cRfYUbufl

Posted in mm

AWS Lightsail로 서버 구축하고 도메인 연결하는 방법

AWS Lightsail 기반 서버 구축, 도메인 연동 및 HTTPS 보안 인증서 적용 방법입니다.


1. AWS Lightsail 인스턴스(서버) 개설

AWS Lightsail은 올인원 패키지로, 저렴하고 간편하게 가상 프라이빗 서버(VPS)를 구축할 수 있는 서비스입니다.

  • 인스턴스 생성 과정
    1. AWS Lightsail 콘솔에서 [인스턴스 생성] 클릭
    2. 플랫폼 선택: Linux/Unix
    3. 블루프린트 선택: LAMP (PHP 8) 또는 WordPress 등 목적에 맞게 선택
    4. 요금 플랜 선택 (필요한 스펙에 따라 선택, 최초 가입자의 경우 일부 요금제 3개월 무료 지원 가능)
    5. 인스턴스 이름 지정 후 [인스턴스 생성] 완료
  • 고정 IP 생성 및 할당 (필수)
    • 기본 할당되는 동적 퍼블릭 IP는 인스턴스 재시작 시 변경됩니다.
    • [네트워킹] – [고정 IP 생성] 옵션을 통해 고정 IP를 발급받고 생성한 인스턴스에 할당합니다.

2. 도메인 등록 및 서버 IP 연결

기억하기 어려운 IP 주소(예: 15.164.x.x) 대신 사용할 고유한 도메인 이름을 등록하고 서버와 연결합니다.

  • 도메인 구매 및 등록
    • spaceship.com, AWS Route 53 등 기관을 통해 사용할 도메인 이름(예: Url.com) 검색 및 구매
  • Lightsail DNS 영역 생성
    1. Lightsail 콘솔의 [도메인 및 DNS] 탭에서 [DNS 영역 생성]
    2. 구매한 도메인 이름 입력
    3. 할당받은 Lightsail의 이름 서버(NS) 목록(예: ns-xxx.awsdns-xx.com 등 4개) 확인
  • 네임서버 업데이트 설정
    • 도메인 구입처 설정 메뉴로 이동하여 DNS 네임서버를 위에 확인한 Lightsail 이름 서버들로 변경 (전파에 약간의 시간 소요됨)
  • 도메인 할당 (서버 연결)
    • [도메인 및 DNS] – 해당 도메인 영역 설정에서 발급해둔 **‘고정 IP’**와 **‘도메인’**을 매핑 연결(A 레코드 추가 등).
    • (필요 시) www.도메인을 루트 도메인으로 보내기 위해 CNAME 레코드 등 추가 설정.

3. HTTPS 인증서 설치 및 배포

Lightsail 내장 툴(bncert-tool)을 사용하여 Let’s Encrypt 기반의 무료 SSL/TLS 보안 인증서를 설치합니다. HTTP 접속 시 자동으로 시작 페이지가 안전한 HTTPS로 암호화 되도록 설정합니다.

  • SSH 터미널 접속
    • Lightsail 콘솔에서 해당 인스턴스의 [ >_ (SSH를 사용하여 연결) ] 버튼 클릭하여 웹 브라우저 기반 SSH 접속
  • 인증서 설치 스크립트 실행
    • 콘솔 창에 아래 명령어를 입력합니다.
      $ sudo /opt/bitnami/bncert-tool
      
  • 인증서 발급 위자드 설정 단계
    1. Domain list: 도메인 목록 입력 (예: url.net www.url.net 띄어쓰기로 구분)
    2. Enable HTTP to HTTPS redirection [Y/n]: Y (http 접속 시 https로 강제 이동)
    3. Enable non-www to www redirection / Enable www to non-www: 원하는 URL 통합 방향에 따라 Y 또는 N 선택
    4. 설정되는 변경 사항(자동 갱신 크론탭 등록, 리다이렉션 반영 등)에 대한 승인 Y
    5. 관리자 이메일 주소 입력 및 Let’s Encrypt 사용자 동의 Y 완료
  • 최종 접속 확인
    • 웹 브라우저에서 https://자신의도메인 으로 접속하여, 주소창 옆 자물쇠 모양(연결이 안전합니다)이 정상적으로 뜨는지 확인합니다.
Posted in mm

온톨로지 가이드

온톨로지 (Ontology) 상세 가이드

1. 온톨로지란?

온톨로지는 특정 도메인의 개념(Entity), 속성(Property), 관계(Relation)를 형식적으로 정의한 지식 모델입니다.

핵심 구성요소 4가지

  • 클래스(Class): 개념의 카테고리 (예: “건물”, “임차인”, “계약”)
  • 인스턴스(Instance): 실제 데이터 (예: “강남 A빌딩”, “㈜B회사”)
  • 속성(Property): 개체의 특성 (예: 면적, 임대료, 계약기간)
  • 관계(Relation): 개체 간 연결 (예: “A빌딩 → 임대계약 → B회사”)

일반 DB와의 차이는, 온톨로지는 데이터의 ’의미’와 ’맥락’까지 구조화한다는 점입니다. RDB는 테이블 간 JOIN으로 관계를 표현하지만, 온톨로지는 “왜 연결되는지”까지 정의합니다.


2. 부동산 업무 적용 가능성

적용 시나리오

  • 자산 관리: 건물 → 층 → 호실 → 임차인 → 계약 → 매출의 계층적 관계를 하나의 지식 그래프로 통합
  • 투자 의사결정: 지역, 용도, 수익률, 공실률, 인구데이터 등 멀티 도메인 데이터를 연결해 크로스 분석
  • 실사(Due Diligence): 법적 권리관계(소유권, 근저당, 전세권 등)를 관계 그래프로 시각화
  • 팀 리포팅 자동화: 자동화 시스템의 데이터 백본으로 활용

ROI 관점

데이터가 10개 도메인 이상, 팀원 5명 이상이 같은 데이터를 다르게 해석하는 상황이라면 온톨로지 도입 가치가 높습니다. 반대로 단일 도메인, 소규모 데이터라면 잘 설계된 RDB로 충분합니다.


3. 구축 방법 (실용적 단계)

Step 1: 경량 접근 (즉시 시작 가능)

도구 용도 난이도
Notion / Google Sheets 개념-관계 매핑 초안 작성 ★☆☆
draw.io / Miro 관계도 시각화 ★☆☆
Neo4j (그래프 DB) 실제 지식 그래프 구축 ★★☆

이 단계에서는 도메인 전문가(본인)가 직접 개념과 관계를 정의하는 것이 핵심입니다.

Step 2: 본격 구축

도구 용도 난이도
Protégé (스탠포드 개발, 무료) OWL 온톨로지 편집기 ★★☆
Neo4j + Cypher 그래프 DB로 쿼리 가능한 온톨로지 ★★★
Knowledge Graph (GCP/AWS) 클라우드 기반 대규모 온톨로지 ★★★

Step 3: AI 연동

온톨로지 + LLM 조합이 최근 트렌드입니다:

  • 온톨로지가 구조화된 지식(팩트)을 제공
  • LLM이 *자연어 인터페이스*를 제공
  • 예: “강남구 오피스 중 공실률 5% 이하이면서 수익률 4% 이상인 건물?” → 온톨로지 기반 정확한 답변

4. 현실적 추천 로드맵

단계 기간 행동
1단계 12주 본인 업무 도메인의 핵심 개념 3050개를 스프레드시트에 정리, 관계 정의
2단계 24주 Neo4j Community Edition(무료)으로 그래프 DB 구축, 샘플 데이터 입력
3단계 12개월 팀 리포팅 자동화 시스템과 연동, API로 데이터 조회
4단계 3개월+ LLM 연동하여 자연어 질의 인터페이스 구축

핵심 조언

온톨로지 구축에서 가장 중요한 건 도구가 아니라 *도메인 모델링 품질*입니다. 부동산 현장 경험이 있는 본인이 직접 개념과 관계를 정의하는 것이 외부 개발자에게 맡기는 것보다 훨씬 정확한 결과를 만듭니다. 1단계를 충실히 하면 나머지는 기술적 구현의 문제입니다.

Posted in mm

2026-02-18-AI코딩에이전트_비교-분석

AI 코딩 에이전트 비교 분석 (Gemini vs Claude)

1. 개요

본 문서는 터미널 기반 AI 코딩 도구인 Gemini CLIClaude Code, 그리고 IDE 통합 AI 비서(Antigravity)의 기능과 역할을 비교 분석한 결과이다.

2. 도구별 비교

구분 Gemini CLI (gemini) Claude Code (claude) IDE AI 비서 (Antigravity)
형태 터미널 CLI (Interactive) 터미널 CLI (Interactive) IDE 채팅 & 에이전트
기반 모델 Google Gemini Anthropic Claude Google Gemini (Deepmind)
설정 파일 .gemini/settings.json .claude.json 시스템 통합 설정
MCP 지원 ✅ 지원 (공통 설정 가능) ✅ 지원 ✅ 지원 (IDE 내장)
장점 Google 생태계 통합, 빠름 터미널 워크플로우 최적화 문맥 파악, GUI 통합, 사용성
단점 터미널 환경 지식 필요 터미널 환경 지식 필요 텍스트 기반 명령 한계(보완됨)

3. 상세 분석

3.1. Gemini CLI (gemini)

  • 특징: Google에서 제공하는 최신 AI 코딩 에이전트.
  • 버전: v0.21.3 (현재 설치됨)
  • MCP: .mcp.json 설정을 인식하여 GitHub, Slack 등 외부 도구 연동 가능.
  • 활용: 터미널에서 독립적인 코드 생성, 리팩토링, 테스트 자동화 수행 시 유용.

3.2. Claude Code (claude)

  • 특징: Anthropic의 Claude 모델을 터미널에서 직접 사용하는 도구.
  • 버전: v2.1.45
  • 활용: 리눅스/맥 환경의 개발자들에게 친숙한 CLI 경험 제공.

3.3. IDE AI 비서 (Antigravity)

  • 특징: IDE(VS Code 등)와 완벽하게 통합된 “나란히 앉은 사수” 역할.
  • 강점:
  • 현재 열려 있는 파일의 문맥(Context)을 자동으로 파악.
  • 파일 생성, 수정, 터미널 명령 실행을 대화형으로 모두 처리.
  • 사용자가 터미널 명령어를 몰라도 자연어로 지시 가능.

4. 결론 및 제언

  1. 주력 도구: *IDE AI 비서(Antigravity)*를 메인으로 사용.
  2. 기획, 설계, 복잡한 코드 수정, 프로젝트 관리에 최적.
  3. 보조 도구: 터미널 작업이나 백그라운드 자동화가 필요할 때 gemini 또는 claude CLI 사용.
  4. 예: “이 테스트 반복해서 돌리고 결과 알려줘”, “GitHub 이슈 10개 요약해줘”
  5. 설정 관리: MCP 설정(.mcp.json)은 프로젝트 루트에서 관리하여 모든 도구가 공유하도록 함.
Posted in mm

Root folder


date: 2026–02–18
tags:
– workspace
– AI설정
– 폴더정리
type: research

루트 폴더 정리 작업 중 확인한 각 설정 파일의 역할, 위치 제약, AI 도구별 차이점을 정리한다.

1. 루트 고정 파일 (이동 불가)

| 파일 | 용도 | 이동 불가 사유 |
|——|——|-—————|
| CLAUDE.md | Claude Code 프로젝트 설정 | 루트에서만 자동 인식 |
| GEMINI.md | Antigravity(Gemini) 프로젝트 설정 | 루트에서만 자동 인식 |
| .claudeignore | Claude 컨텍스트 제외 목록 | .gitignore와 동일 — 루트 필수 |
| .mcp.json | Claude MCP 서버 연결 설정 | Claude Code 전용, 루트에서 참조 |
| desktop.ini | Windows 폴더 표시 설정 | OS 시스템 파일 |

2. AI 도구별 설정 비교

ignore 파일

| 항목 | Claude Code | Antigravity (Gemini) | |
| ——— | -—————— | ——————————————— | — |
| ignore 파일 | .claudeignore | .geminiignore X 미지원 | |
| 방식 | 파일/폴더 제외 (negative) | GEMINI.md + .context/로 참조 가이드 (positive) | |

MCP 설정

| 항목 | Claude Code | Antigravity (Gemini) | |
| —— | ——————— | ———————————— | — |
| 설정 파일 | .mcp.json (프로젝트 루트) | X 별도 파일 불필요 | |
| 설정 위치 | 프로젝트별 JSON | VS Code 확장 설정(settings.json)에서 관리 | |

3. 결론: 루트 최종 구성

루트/  
├── CLAUDE.md ← AI 설정 (고정)  
├── GEMINI.md ← AI 설정 (고정)  
├── .claudeignore ← Claude 전용 (고정)  
├── .mcp.json ← Claude MCP (고정)  
├── desktop.ini ← Windows (고정)  
├── .agent/ ← AI 스킬 + 프롬프트 템플릿  
├── .context/ ← AI Knowledge Base + 가이드  
├── .claude/ ← Claude 설정  
├── .obsidian/ ← Obsidian 설정  
├── _문서보관/ ← 비AI 문서 보관  
├── _프로젝트별정리/ ← 프로젝트/업무 문서  
└── 0_Inbox ~ 9 폴더 ← Obsidian 폴더 구조  
Posted in mm