카드뉴스 렌더링 API

카드뉴스를 사람이 만들지 않게

템플릿을 한 번 등록하면, 이후 카드는 API 호출로 나옵니다. 디자이너를 기다리지 않고 매번 같은 품질로.

카드 등록 없이 · 월 100장 무료

slides.json→ instagram · 1080×1350
{  "template": "listicle",  "format": "instagram",  "slides": [{    "type": "cover",    "slots": {      "count": "5",      "headline": "카드뉴스를 코드로 만든다",      "subheadline": "디자이너 없이, 매번 같은 품질로"    }  }]}
위 JSON 으로 만들어진 카드뉴스 표지

왼쪽 JSON 이 오른쪽 카드의 어디로 가는지 보여줍니다

오른쪽 카드는 목업이 아니라 이 API 가 왼쪽 JSON 으로 그린 결과입니다

6종
바로 쓰는 템플릿
리스트·통계·매거진·사진·강의·범용
3초
장당 렌더 시간
서울 리전 6종 순차 실측 중앙값 3.2초 · 가장 느린 장이 3.9초
5종
렌더 경고
넘침·해상도·폰트·이탈·상한 — 결과와 함께 옵니다

cardnews 로 만들 수 있는 것

아래는 전부 이 API 가 그린 실제 카드입니다. 용도마다 어울리는 템플릿이 다릅니다.

만드는 일과 그리는 일을 나눕니다

무엇을 쓸지는 사람이나 LLM 이 정하고, 어떻게 보일지는 서버가 책임집니다. 이 경계 하나로 결과가 흔들리지 않게 됩니다.

  1. 01

    템플릿을 한 번 등록한다

    디자인에서 바뀔 자리만 슬롯으로 열어 둡니다. 로고와 강조색은 프로젝트 프로필에서 오므로, 같은 템플릿을 여러 브랜드가 각자의 얼굴로 씁니다.

    template.json등록 시 검증
    "slide_types": [{  "name": "cover", "min": 1, "max": 1,  "slots": [    { "name": "count",       "type": "text",  "required": true },    { "name": "headline",    "type": "text",  "required": true },    { "name": "subheadline", "type": "text" },    { "name": "accent_color", "type": "color" },    { "name": "brand_logo_url", "type": "brand_asset",      "asset": "logo_horizontal" }  ]}]
  2. 02

    LLM 은 내용만 쓴다

    템플릿마다 llms.txt 가 붙습니다. 어떤 슬롯이 있고 몇 글자까지 되는지 기계가 읽는 형식이라, 에이전트가 가이드만 보고 첫 시도에 성공합니다. 글자 수는 손으로 적지 않고 manifest 에서 생성하므로 가이드와 실제 한계가 어긋날 수 없습니다.

    가이드 전문 보기 →
    GET /v1/templates/listicle/llms.txt200 · 공개
    ## 3. 슬라이드 흐름 권장 cover → item(1~10장) → cta- 항목이 7장을 넘으면 저장률이 떨어진다.  5~7장을 권장한다. ### `cover` (min 1, max 1) | 슬롯 | 필수 | 형식·한계 || --- | --- | --- || `count` | 예 | 텍스트 || `headline` | 예 | 텍스트 |
  3. 03

    서버가 그린다

    폰트·이미지를 서버에서 준비해 헤드리스 브라우저로 렌더합니다. 같은 입력이면 언제나 같은 그림이 나옵니다.

    request.sh
    # 슬라이드 내용만 만들고 나머지는 맡깁니다curl -X POST https://api.cardnews.dev/v1/renders \  -H "Authorization: Bearer $CARDNEWS_API_KEY" \  -d '{    "template": "listicle",    "format": "instagram",    "slides": [      { "type": "cover", "slots": { … } },      { "type": "item",  "slots": { … } }    ]  }'

같은 글, 다른 템플릿

형식을 바꾸면 전혀 다른 카드가 됩니다

아래 넷은 완전히 같은 글입니다. 글을 다시 쓰지 않고 요청의 template 한 줄만 바꿨습니다.

쓴 만큼 냅니다

이미지 장수로만 셉니다. 실패한 렌더는 세지 않습니다. 지금 바로 쓸 수 있는 것은 Free 이고, 유료 플랜은 준비 중입니다.

Free
₩0
월 100장
카드 등록 없이 시작
그냥 시작
Scale준비 중
₩89,000
월 100,000장
웹훅 · 팀 3명 · 우선 처리
출시 알림 받기
Enterprise준비 중
문의
무제한
전용 리전 · SLA · 온보딩
영업팀 문의

자주 묻는 것

템플릿을 직접 만들 수 있나요+

네. 패키지 형식(manifest + 슬라이드 HTML + 폰트 + llms.txt)에 맞춰 올리면 등록 게이트가 검증합니다. 슬롯 불일치·폰트 정책 위반·글리프 누락은 등록 단계에서 거부되므로, 통과한 템플릿은 최소한 그려집니다.

글자가 넘치면 어떻게 되나요+

렌더는 성공하고 이미지와 함께 경고가 옵니다. 실패로 처리해 아무것도 안 주는 것보다, 결과를 보고 문구를 줄이는 쪽이 빠르기 때문입니다. 사전 검증(글자수)과 렌더 경고(실제 넘침)를 두 층으로 나눠 둡니다.

로고와 브랜드 색은 어떻게 넣나요+

콘솔 프로젝트 설정에서 한 번 등록하면 그 프로젝트의 모든 렌더가 씁니다. 요청마다 로고 URL 을 실어 보낼 필요가 없습니다. 특정 요청에서만 바꾸고 싶으면 brand 필드로 덮어씁니다.

사진은 어떻게 전달하나요+

공개 HTTPS URL 과 data URI 를 모두 받습니다. 실사진은 URL 을 쓰세요 — 전체 요청 본문 상한이 1MB 라 실사진을 base64 로 넣으면 두 장에서 넘어갑니다.

실패한 렌더도 과금되나요+

아니요. 성공한 렌더의 이미지 장수만 셉니다.

다음 카드뉴스는 만들지 마세요

Google 계정으로 1분이면 첫 렌더까지 갑니다.

월 100장 무료 · 카드 등록 없음