AI 에이전트 연결

대화하던 에이전트에게 “onepage에 올려줘”라고 말하면 공유 링크가 돌아옵니다. 발행·수정·목록·삭제 전부 대화로. 설정은 3분이면 끝납니다.

1

API 키 발급 — 1분

키는 에이전트가 내 계정으로 발행하기 위한 열쇠입니다. 이 자리에서 바로 발급됩니다 — 발급하면 아래 2단계의 명령어에 키가 자동으로 채워집니다.

  • · 키는 발급 직후 한 번만 표시됩니다 — 아래 명령어를 이 화면에서 바로 복사하세요.
  • · 발급한 키의 목록·폐기는 설정 → API 키에서.
로그인하고 키 발급하기 →
2

쓰는 에이전트에 연결

아래에서 쓰는 도구 하나만 골라 따라 하세요. 명령어의 op_내_키 자리에 1단계에서 발급한 키를 넣습니다.

Claude Code

지금 바로

터미널에서 아래 한 줄이면 끝. 이후 Claude Code가 onepage_publish 같은 도구를 알아서 씁니다.

terminal
claude mcp add --transport http onepage https://onepage.mabrolabs.com/api/mcp --header "Authorization: Bearer op_내_키"

Cursor

지금 바로

~/.cursor/mcp.json(전역) 또는 프로젝트의 .cursor/mcp.json에 아래를 추가하세요.

mcp.json
{
  "mcpServers": {
    "onepage": {
      "url": "https://onepage.mabrolabs.com/api/mcp",
      "headers": { "Authorization": "Bearer op_내_키" }
    }
  }
}

그 외 코딩 에이전트 (Codex CLI, Devin 등)

지금 바로

MCP가 없어도 됩니다. 이 페이지 맨 아래의 에이전트 가이드 원문CLAUDE.md·AGENTS.md 등 에이전트 지침 파일에 붙여넣고, 키는 환경변수 ONEPAGE_API_KEY로 두면 에이전트가 REST API를 직접 호출합니다.

claude.ai 웹 · Claude Desktop

준비 중

claude.ai의 커스텀 커넥터는 OAuth 로그인을 요구합니다. OnePage의 OAuth 지원을 준비 중이며, 열리면 URL 하나 등록으로 연결됩니다. 그때까지는 Claude가 만든 HTML을 홈 드랍존에 붙여넣는 게 가장 빠릅니다.

ChatGPT

준비 중

ChatGPT 커넥터도 마찬가지로 OAuth 지원 후 열립니다. 지금은 ChatGPT가 만든 결과물을 홈 드랍존에 붙여넣어 발행하세요 — 로그인 없이도 됩니다.

3

이렇게 말해보세요

연결이 끝났다면 별도 명령어는 없습니다. 그냥 대화하세요.

  • "방금 만든 랜딩페이지, onepage에 발행해줘"

    → 30초 뒤 공유 링크가 돌아옵니다

  • "헤더를 검정으로 바꾸고 같은 링크로 업데이트해줘"

    → URL은 그대로, 내용만 바뀝니다. 받은 사람은 새로고침만 하면 됩니다

  • "내가 발행한 페이지 목록 보여줘"

    → 제목·링크·조회수를 정리해서 보여줍니다

  • "이번 주 보고서 3개를 weekly 컬렉션으로 묶어서 올려줘"

    → 자동 목차가 있는 컬렉션 페이지가 생깁니다

핵심은 두 번째입니다 — 한 번 공유한 링크는 죽지 않습니다. 피드백을 받고 에이전트에게 고치라고 하면, 같은 URL이 새 내용을 보여줍니다.

앞으로 열리는 것

  • OAuth 로그인 연결 — claude.ai·ChatGPT 커넥터에서 키 복사 없이 “OnePage로 로그인” 한 번으로 연결
  • 원클릭 설치 — “Add to Cursor” 버튼처럼 명령어 복사 없이 버튼 하나로 연결
  • MCP 레지스트리 등재 — 클라이언트의 서버 디렉토리에서 onepage를 바로 검색·설치

에이전트 가이드 원문

CLAUDE.md 등에 붙여넣는 전문 — 에이전트가 직접 읽게 하려면 https://onepage.mabrolabs.com/llms.txt를 fetch하라고 해도 됩니다

# OnePage API — 에이전트 가이드

HTML 또는 Markdown을 게시하면 즉시 공유 가능한 영구 URL이 됩니다.
이 문서 전체를 에이전트 지침(CLAUDE.md, 시스템 프롬프트 등)에 붙여넣어 쓰세요.
원문: https://onepage.mabrolabs.com/llms.txt

- Base URL: `https://onepage.mabrolabs.com/api/v1`
- 인증: 모든 요청에 `Authorization: Bearer <API_KEY>` 헤더. 키는 https://onepage.mabrolabs.com/settings 에서 발급 (`op_`로 시작)
- 본문은 JSON. 실패 시 `{ "error": { "code": "...", "message": "..." } }` + HTTP 상태코드
- 제한: 콘텐츠 2MB, 키당 분당 쓰기 10회 · 읽기 60회 (429면 잠시 후 재시도)

## 페이지 게시

`POST /pages`

```json
{
  "title": "주간 리포트",
  "html": "<!doctype html>... 또는 Markdown 원문",
  "contentType": "html",
  "collection": "my-collection",
  "description": "이번 주 완료 항목과 다음 주 계획 요약.",
  "ogImage": "https://example.com/cover.png"
}
```

- `contentType`: `"html"`(기본) 또는 `"markdown"`. Markdown일 때도 원문은 `html` 필드에 넣습니다.
- `collection`: 선택. 내 컬렉션의 slug — 게시와 동시에 그 컬렉션 맨 뒤에 배치됩니다.
- `title` 생략 시 콘텐츠에서 자동 유도됩니다 (Markdown: frontmatter `title` > 첫 헤딩, HTML: `<title>`).
- **공유 미리보기(OG) — 링크를 카톡/슬랙/X에 붙였을 때 뜨는 제목·설명·썸네일:**
  - `title` → og:title, `description` → og:description(~2문장 권장, 최대 300자), `ogImage` → og:image.
  - `ogImage`는 **공개 접근되는 외부 이미지 URL을 그대로** 넣으면 됩니다(http(s)://, 권장 1200×630). onepage에 업로드할 필요 없습니다.
  - 생략하면 `description`은 본문 앞부분에서 자동 추출, 썸네일은 제목 기반 이미지가 자동 생성됩니다. slug가 랜덤이라도 미리보기는 이렇게 채워집니다.
- Markdown이면 위 세 값을 요청 필드 대신 문서 맨 앞 `---` frontmatter(`title`, `description`, `image`; 그밖에 `author`, `date`, `tags`)로 넣어도 동일하게 적용됩니다. 요청 필드와 frontmatter가 겹치면 요청 필드가 우선입니다. `date: false`로 날짜 표시를 끌 수 있습니다.
- 응답: `201 { "page": { "slug", "url", "title", "collection", "createdAt" } }` — 이 `url`을 사용자에게 전달하세요.

## 페이지 수정 — 같은 URL 제자리 갱신

`PATCH /pages/{slug}` — 보낸 필드만 갱신됩니다.

- 필드: `title`, `html`, `contentType`, `collection`(slug 또는 `null`=컬렉션에서 분리), `position`(0 이상 정수), `description`, `ogImage`
- `description`·`ogImage`에 빈 문자열(`""`) 또는 `null`을 보내면 명시값을 지워 자동 추출/생성으로 되돌립니다.
- 같은 문서를 다시 게시할 때는 새 페이지를 만들지 말고 반드시 PATCH로 갱신하세요. URL은 변하지 않습니다.

## 페이지 목록 · 삭제

- `GET /pages?collection={slug}&limit=50&offset=0` → `{ "pages": [ { "slug", "url", "title", "collection", "contentType", "createdAt", "updatedAt" } ] }` (본문 미포함)
- `DELETE /pages/{slug}` → `{ "success": true }`

## 컬렉션 — 페이지를 묶는 자동 목차

- `POST /collections` — `{ "title": "...", "slug"?: "...", "description"?: "..." }` (slug는 소문자/숫자/하이픈 3~32자, 생략 시 자동 생성) → `201 { "collection": { "slug", "url", "title", "createdAt" } }`
- `GET /collections` → `{ "collections": [ { "slug", "url", "title", "description", "pageCount", "createdAt" } ] }`

## 예시 (curl)

```bash
curl -X POST https://onepage.mabrolabs.com/api/v1/pages \
  -H "Authorization: Bearer $ONEPAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"주간 리포트","contentType":"markdown","html":"# 주간 리포트\n\n이번 주 완료 항목입니다."}'
```

## 규칙

- 한 번 만들어진 URL은 죽지 않습니다. 링크를 바꾸지 말고 PATCH로 내용을 갱신하세요.
- 게시물은 기본적으로 unlisted — 링크를 아는 사람만 볼 수 있고 목록/검색에는 노출되지 않습니다.
- 작업을 마치면 결과 `url`을 사용자에게 보여주세요.