개요
커뮤니티/포럼 기능을 풀스택으로 제공합니다. 게시글 CRUD, 좋아요/싫어요, 댓글 트리, 신고, 링크 미리보기, 자동 번역까지 단일 모듈에서 처리됩니다. 사용자 식별은 HMAC(userSecret + boardId)로 익명화되어 동일 사용자 여부만 판별 가능합니다.
보드/게시글
typescript
// 보드 목록
const boards = await client.anon.listBoards();
// 게시글 작성
const post = await client.anon.createPost({
boardId: 'b_travel',
anonKey: 'a_3f29...', // HMAC 익명 키
title: '제주도 가성비 숙소 추천',
body: '서귀포 근처에서...',
attachments: [{ type: 'image', url: 'https://...' }],
});
// 게시글 목록(HOT 정렬)
const list = await client.anon.listPosts({
boardId: 'b_travel',
sort: 'hot',
limit: 20,
});댓글/투표
bash
# 댓글 작성
curl -X POST https://api.moai.page/v1/anon/comments \
-H "X-API-Key: $KEY" \
-d '{ "postId": "p_1", "anonKey": "a_...", "body": "감사합니다." }'
# 투표
curl -X POST https://api.moai.page/v1/anon/posts/p_1/vote \
-H "X-API-Key: $KEY" \
-d '{ "anonKey": "a_...", "value": 1 }' # 1=up, -1=down, 0=cancel신고/자동숨김
같은 게시글이 5건 이상 신고되면 자동으로 숨김 상태(hidden)로 전환되고 관리자 대시보드 큐에 들어갑니다. 악성 사용자는 anonKey 차단(POST /v1/anon/blocks)으로 즉시 격리할 수 있습니다.
HMAC 익명 키
클라이언트에서 anonKey를 직접 생성합니다. 서버는 실명 정보를 받지 않으면서도 동일 사용자/스팸을 식별할 수 있습니다.
typescript
import { createHmac } from 'crypto';
function anonKey(userSecret: string, boardId: string) {
return 'a_' + createHmac('sha256', userSecret).update(boardId).digest('hex').slice(0, 24);
}