日本語

Anon

익명 게시판/댓글/투표/번역/링크프리뷰가 포함된 보드 모듈. HMAC 기반 익명 식별, 신고 누적 자동 숨김, 차단/HOT 정렬을 즉시 사용할 수 있습니다.

개요

커뮤니티/포럼 기능을 풀스택으로 제공합니다. 게시글 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);
}