{
  "markdown": "# velog-mcp-claude\n\n[![npm](https://img.shields.io/npm/v/velog-mcp-claude)](https://www.npmjs.com/package/velog-mcp-claude)\n[![downloads](https://img.shields.io/npm/dt/velog-mcp-claude)](https://www.npmjs.com/package/velog-mcp-claude)\n[![CI](https://github.com/seongwon030/velog_mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/seongwon030/velog_mcp/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/velog-mcp-claude)](./LICENSE)\n\n> Velog 개발자([@velopert](https://github.com/velopert))로부터 운영을 허용한다는 답변을 받은 독립 오픈소스입니다.\n\nClaude가 Velog에 직접 포스트를 작성·발행·수정·삭제하고, 댓글·좋아요·검색·트렌딩까지 다룰 수 있는 MCP 서버.\n\nstdio 기반 표준 MCP 서버라 Claude Code, Claude Desktop, Codex CLI 등 MCP를 지원하는 클라이언트에서 모두 동작합니다.\n\n**npm**: [velog-mcp-claude](https://www.npmjs.com/package/velog-mcp-claude) | **요구사항**: Node.js 18+\n\n## 설치\n\n```bash\nnpx -p velog-mcp-claude velog-mcp-setup\n```\n\nVelog에 로그인한 상태에서 브라우저 DevTools → Application → Cookies → `https://velog.io`에서 `access_token`과 `refresh_token` 값을 복사해 입력하세요.\n\n토큰은 `~/.velog-mcp.json`에 `0600` 권한으로 저장됩니다.\n\n## 설정\n\n### Claude Code\n\n```bash\nclaude mcp add velog -- npx -y velog-mcp-claude\n```\n\n전역으로 추가하려면:\n\n```bash\nclaude mcp add --scope global velog -- npx -y velog-mcp-claude\n```\n\n### Claude Desktop\n\n`~/Library/Application Support/Claude/claude_desktop_config.json`에 추가:\n\n```json\n{\n  \"mcpServers\": {\n    \"velog\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"velog-mcp-claude\"]\n    }\n  }\n}\n```\n\n### Codex CLI\n\n```bash\ncodex mcp add velog -- npx -y velog-mcp-claude\n```\n\n또는 `~/.codex/config.toml`에 직접 추가:\n\n```toml\n[mcp_servers.velog]\ncommand = \"npx\"\nargs = [\"-y\", \"velog-mcp-claude\"]\n```\n\n등록 확인은 `codex mcp list`.\n\n## 툴 목록\n\n### 포스트\n\n| 툴 | 설명 |\n| --- | --- |\n| `velog_draft_post` | 포스트 초안 생성 |\n| `velog_publish_post` | 초안을 Velog에 발행 |\n| `velog_list_posts` | 내 포스트 목록 조회 |\n| `velog_get_post` | 특정 포스트 전체 내용 조회 (조회수 포함) |\n| `velog_update_post` | 기존 포스트 수정 |\n| `velog_delete_post` | 포스트 삭제 |\n| `velog_upload_image` | 로컬 이미지를 Velog CDN에 업로드 |\n| `velog_import_from_github` | GitHub 블로그 마크다운을 Velog 초안으로 가져오기 |\n| `velog_git_to_post` | git 커밋 이력과 diff를 분석해 블로그 초안 프롬프트 생성 |\n\n### 시리즈\n\n| 툴 | 설명 |\n| --- | --- |\n| `velog_list_series` | 내 시리즈 목록 조회 |\n| `velog_create_series` | 새 시리즈 생성 |\n| `velog_update_series` | 시리즈 이름·설명 수정 |\n| `velog_append_to_series` | 포스트를 시리즈에 추가 |\n| `velog_delete_series` | 시리즈 삭제 |\n\n### 댓글\n\n| 툴 | 설명 |\n| --- | --- |\n| `velog_get_comments` | 포스트 댓글 목록 조회 (대댓글 포함) |\n| `velog_write_comment` | 댓글 또는 대댓글 작성 |\n| `velog_update_comment` | 댓글 수정 |\n| `velog_delete_comment` | 댓글 삭제 |\n\n### 좋아요\n\n| 툴 | 설명 |\n| --- | --- |\n| `velog_like_post` | 포스트 좋아요 |\n| `velog_unlike_post` | 포스트 좋아요 취소 |\n\n### 탐색\n\n| 툴 | 설명 |\n| --- | --- |\n| `velog_search_posts` | 키워드로 포스트 검색 |\n| `velog_get_trending` | 트렌딩 포스트 조회 (day / week / month / year) |\n| `velog_trend_report` | 트렌딩 포스트 분석 리포트 |\n| `velog_topic_research` | 트렌딩 태그 × 내 포스트 교차분석으로 아직 안 쓴 인기 주제 발굴 |\n| `velog_get_rss` | 특정 유저의 RSS 피드 조회 (인증 불필요) |\n\n### 내 계정\n\n| 툴 | 설명 |\n| --- | --- |\n| `velog_list_tags` | 내 태그 목록과 태그별 포스트 수 조회 |\n| `velog_list_temp_posts` | 임시저장 포스트 목록 조회 |\n| `velog_get_notifications` | 알림 목록 조회 (좋아요·댓글·팔로우, 읽지 않은 수 포함) |\n| `velog_get_reading_list` | 읽을 목록(북마크) 조회 |\n\n## git 커밋 → 블로그 초안\n\n최근 커밋 이력과 diff를 분석해 Claude가 한국어 기술 블로그 포스트를 자동으로 작성합니다.\n\n```\n나: \"오늘 작업한 커밋들로 벨로그 포스트 작성해줘\"\n나: \"지난 10개 커밋 기반으로 블로그 글 써줘\"\n나: \"v0.19.0 태그 이후 변경사항으로 포스트 초안 만들어줘\"\n```\n\n- `repo_path`: 분석할 로컬 git 저장소 경로 (기본값: 현재 디렉터리)\n- `commits`: 가져올 최근 커밋 수 (기본값: 5)\n- `since`: 특정 커밋·태그 이후 범위 지정 (예: `v0.19.0`, `HEAD~10`)\n- `include_diff`: 코드 diff 포함 여부 (기본값: `true`)\n- `max_diff_lines`: diff에서 가져올 최대 줄 수 (기본값: 200)\n- `tags`: 포스트에 넣을 태그 힌트 (미지정 시 파일 확장자로 자동 추론)\n\n## GitHub 블로그 마이그레이션\n\nJekyll / Hugo 등 front matter가 있는 마크다운을 지원합니다. `dry_run: true`로 먼저 미리보기를 확인하세요.\n\n```\n나: \"내 깃허브 블로그 _posts 폴더 글들을 벨로그 초안으로 옮겨줘\"\n```\n\n- 상대 경로 이미지는 GitHub raw URL로 자동 변환\n- Private 저장소는 `github_token` 파라미터로 접근\n\n### GitHub API 한도 초과 시\n\n토큰 없이 사용하면 60회/시간 제한이 있습니다. `dry_run: true` 한 번만으로도 한도의 상당 부분이 소진될 수 있습니다.\n\n한도를 초과하면 `github_token`을 발급해 전달하세요.\n\n**토큰 발급**: GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token\n\n- 공개 저장소: 스코프 없이 생성해도 되지만, **`public_repo`를 체크하면 확실합니다**\n- 비공개 저장소: `repo` 체크\n\n토큰을 전달하면 5,000회/시간으로 한도가 올라갑니다.\n\n## 인증\n\n- `access_token`: ~24시간 TTL, Velog 서버가 자동 갱신\n- `refresh_token`: ~30일 TTL. 만료 시 `npx -p velog-mcp-claude velog-mcp-setup` 재실행\n\n## 주의사항\n\n- draft는 MCP 서버 세션 메모리에 저장됨. 재시작 시 소멸, 24시간 후 자동 만료.\n- 보존하려면 `velog_publish_post(is_private: true)`로 비공개 저장.\n\n## 로드맵\n\n[docs/roadmap.md](./docs/roadmap.md) 참고.\n\n## 면책 조항\n\n내부 GraphQL API를 리버스 엔지니어링하여 구현되었습니다. API 구조 변경으로 예고 없이 동작이 중단될 수 있습니다.\n",
  "bytes": 4600,
  "sha": "e19a8c6df5e51a485657d667306994b71696f7f2c288ce757fbb6cf9f90ad95a",
  "repo_slug": "seongwon030/velog_mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_seongwon030_velog_5cf774ad/readme"
}