CollabOps

표현 레퍼런스

수신 웹훅 본문에 쓸 수 있는 마크다운 문법, 토큰, 블록, 마크, 색 전량

수신 웹훅 본문에 쓸 수 있는 것을 전부 정리합니다. text 형식은 마크다운과 토큰으로, blocks 형식은 블록 JSON 으로 씁니다. 요청 형식과 상한은 수신 웹훅 문서에 있습니다.

text 와 blocks 로 되는 것

표현textblocks
굵게 · 기울임 · 취소선 · 밑줄 · 인라인 코드 · 링크예예
목록 · 할 일 · 인용 · 코드블록 · 표예예
글자색 · 배경색아니오예
토글 (접기)아니오예
이슈 · 변경 요청 · 문서 · 프로젝트 · 저장소 · 목표 · 문서 폴더 · 파이프라인 실행 · 채널 참조예예
스프린트 참조아니오예
날짜예예
제목 · 구분선서식 없이 보임서식 없이 보임
이미지아니오아니오

채팅 메시지는 제목을 제목 크기 없이 일반 글로 보여 주고, 구분선은 그리지 않습니다. 눈에 띄게 하려면 제목 대신 굵게를 쓰세요. 이미지는 CollabOps 에 업로드된 이미지를 가리키는 블록이라 웹훅으로는 보낼 수 없습니다. 외부 이미지는 링크로 거세요.

text 형식 — 마크다운

CommonMark 에 표와 취소선을 더한 문법을 해석합니다.

쓰는 법결과
**굵게**굵게
*기울임*기울임
~~취소선~~취소선
<u>밑줄</u>밑줄. HTML 태그는 이것만 해석하고, 다른 태그는 글자 그대로 보입니다.
백틱 한 쌍으로 감싼 글자인라인 코드
[글자](https://collabops.ai)링크
# ~ ###### 로 시작하는 줄제목 1~6단계. 채팅에서는 일반 글처럼 보입니다.
- 로 시작하는 줄글머리 목록. 두 칸씩 들여쓰면 한 단계씩 깊어집니다 (최대 5단계).
1. 로 시작하는 줄번호 목록
- [ ] · - [x] 로 시작하는 줄할 일 목록 (체크 안 됨 · 체크됨)
> 로 시작하는 줄인용
--- 만 있는 줄구분선. 채팅에서는 보이지 않습니다.
백틱 세 개로 감싼 블록코드블록. 여는 백틱 뒤에 언어를 적을 수 있습니다.
GFM 표 문법표. 구분 줄의 : 로 칸 정렬을 정합니다.
줄바꿈 한 번같은 문단 안에서 줄이 바뀝니다.
빈 줄문단이 나뉩니다.
![대체 텍스트](URL)이미지는 표시되지 않습니다.

글자색, 배경색, 토글은 마크다운에 대응하는 문법이 없어서 blocks 형식으로만 쓸 수 있습니다.

토큰

text 안에 토큰을 쓰면 이슈 칩, 날짜 칩이 됩니다. 모양은 모두 같습니다.

{{종류:키=값|키=값}}

키 순서는 상관없습니다. 종류나 필수 키가 맞지 않는 토큰은 오류 없이 적은 글자 그대로 보입니다. 새 토큰을 쓸 때는 처음 한 번 채널에서 칩으로 바뀌었는지 확인하세요.

참조 칩 — 이슈 · 변경 요청 · 문서 · 폴더 · 실행 · 채널 등

{{issue:slug=acme|key=42|label=로그인 오류}}
{{cr:slug=acme|key=318|label=세션 만료 수정}}
{{repo:slug=acme|key=7|label=web}}
{{run:slug=acme|key=128|label=nightly}}
종류가리키는 것
issue이슈
cr변경 요청
doc문서
project프로젝트
repo저장소 (repository 가 아닙니다)
goal목표
folder문서 폴더
run파이프라인 실행
channel채팅 채널
키필수설명
slug예워크스페이스 슬러그. 주소 https://collabops.ai/<슬러그>/… 의 그 값입니다.
key예번호. 이슈 #42 면 42 입니다. channel 만 번호 대신 채널 ID(UUID)를 씁니다.
label권장칩에 보일 제목. 칩은 실제 제목을 불러오지 않고 이 값을 그대로 보여 주므로 넣어 두세요.

스프린트 참조는 text 토큰으로 만들 수 없습니다. {{sprint:…}} 와 {{repository:…}} 는 글자 그대로 남습니다. 저장소는 repo 로 쓰고, 스프린트가 필요하면 blocks 형식을 쓰세요.

날짜

{{date:iso=2026-09-23|hasTime=0}}
{{date:iso=2026-09-23T15:30:00+09:00|hasTime=1}}
키필수설명
iso예YYYY-MM-DD 또는 ISO 8601 시각. 시각은 시간대를 붙여 쓰세요. 해석할 수 없는 값이면 글자 그대로 남습니다.
hasTime아니오1 이면 시각까지, 없거나 0 이면 날짜만 보입니다.

토큰을 쓸 때 주의할 것

코드블록 안에는 토큰을 쓰지 마세요. 칩으로 바뀌지 않고 내부 자리표시자 글자가 보입니다.

굵게나 인라인 코드 안에 넣은 토큰도 칩이 되고, 감싼 서식은 사라집니다.

토큰 모양의 글자를 그대로 보여 주려면 여는 중괄호를 역슬래시로 이스케이프합니다. \{\{issue:…}} 는 칩이 되지 않고 {{issue:…}} 로 보입니다.

blocks 형식

blocks 는 블록 객체의 평평한 배열이고 배열 순서대로 그려집니다. 블록을 다른 블록 안에 넣지 않고, 토글은 parentId 로, 표는 tableId 로 관계를 나타냅니다.

필드필수설명
id예이 메시지 안에서 겹치지 않는 문자열
type예블록 종류 (아래 표)
attrs종류마다 다름블록 속성
children예글 조각 배열. 글이 없는 블록은 빈 배열 []
parentId아니오토글 안에 넣을 블록이면 그 토글의 id

블록 종류

typeattrs설명
paragraph없음문단
headinglevel 1~6 (필수)제목. 채팅에서는 일반 글처럼 보입니다.
listItemkind bullet · ordered · task (필수), indent 0~5 (필수), checked (task), start (번호 목록 첫 항목)목록 항목. 들여쓰기가 더 큰 다음 항목이 하위 항목이 됩니다.
blockquote없음인용
codeBlocklanguage (선택)코드블록. children 에 서식 없는 텍스트 하나를 넣고 줄은 \n 으로 나눕니다.
thematicBreak없음구분선. children 은 []. 채팅에서는 보이지 않습니다.
toggle없음접기. children 은 접혔을 때 보이는 제목이고, 펼치면 보일 블록은 parentId 로 이 토글을 가리킵니다. 처음엔 접힌 채 보이고 누르면 펼쳐집니다.
tableCelltableId · rowIdx · colIdx (필수), colCount · columnAlign (표의 첫 셀에만)표의 칸. 같은 tableId 의 셀이 연달아 오면 한 표가 됩니다. 첫 행이 머리글입니다.
table · image · columnList · column문서 편집기용 블록입니다. 표는 tableCell 로 만들고, 이미지는 웹훅으로 보낼 수 없습니다.

글 조각 (children)

children 에는 텍스트 조각과 칩 조각을 섞어 넣습니다. 텍스트 조각은 marks 로 서식을 입힙니다.

[
  {"text": "배포 완료 ", "marks": [{"type": "bold"}]},
  {"type": "embed", "embedType": "entityRef",
   "attrs": {"kind": "issue", "workspaceSlug": "acme", "entityKey": 42, "title": "로그인 오류"}},
  {"type": "embed", "embedType": "date",
   "attrs": {"iso": "2026-09-23", "hasTime": false}}
]
embedTypeattrs
entityRefkind · workspaceSlug · entityKey (정수. channel 은 채널 ID 문자열) · title (모두 필수)
dateiso · hasTime (모두 필수)

entityRef 의 kind 는 issue · cr · doc · project · repository · goal · sprint · folder · run · channel 10종입니다. 토큰과 달리 저장소는 repository 로 쓰고, 스프린트도 쓸 수 있습니다. 스프린트의 entityKey 는 스프린트 그룹 번호입니다. 칩은 title 을 그대로 보여 줍니다.

마크

typeattrs효과
bold굵게
italic기울임
strikethrough취소선
underline밑줄
code인라인 코드
linkurl (필수)링크
textColorcolor (필수)글자색
bgColorcolor (필수)배경색

한 조각에 마크 여러 개를 함께 쓸 수 있습니다. 예를 들어 [{"type": "bold"}, {"type": "link", "attrs": {"url": "https://collabops.ai"}}] 는 굵은 링크입니다.

색

color 에는 gray · amber · green · blue · coblue · purple · red 7가지 이름만 씁니다. 라이트·다크 테마에 맞는 실제 색은 화면이 정합니다. hex 값 같은 그 밖의 값은 422 입니다. 색을 빼려면 값을 넣지 않습니다.

블록의 attrs.textColor · attrs.bgColor 는 오류 없이 받지만 채팅 메시지에서는 칠해지지 않습니다. 채팅에서 색을 보이려면 글 조각에 textColor · bgColor 마크를 겁니다. 표 칸을 칠할 때도 칸의 attrs 가 아니라 칸 안 글 조각에 마크를 겁니다.

검증

blocks 는 채널에 올리기 전에 전부 검증합니다. 하나라도 규격에 맞지 않으면 메시지 전체를 422 로 거절하고, error.title 에 blocks.3 rejected 처럼 몇 번째 블록인지(0부터 셈) 적습니다.

목차