포럼 만드는 법: 카테고리, 스레드, 검색, 스팸 관리
포럼은 카테고리, 그 안의 스레드, 스레드 안의 답글, 그리고 계정, 검색, 운영 도구로 이루어집니다. 채팅방과 다른 점은 대화가 주제별로 정리되고 몇 년이 지나도 유용하게 남는다는 것입니다. 3년 전 스레드도 검색으로 찾아서 답을 얻을 수 있습니다. 포럼을 만들 때는 스레드 페이지와 검색을 제대로 설계하고, 포럼이 공개라면 검색엔진이 읽을 수 있게 만들고, 첫 실제 회원이 가입하기 전에 스팸 방지와 운영 도구를 준비해 두어야 합니다.
포럼에 필요한 것
페이지
- 카테고리 목록: 대부분의 포럼에서 첫 화면이며, 각 카테고리의 설명과 최근 활동을 보여 줍니다.
- 스레드 목록: 카테고리 안의 스레드를 최근 답글순으로 정렬하고, 답글 수와 해결됨 또는 고정됨 표시를 보여 줍니다.
- 스레드 페이지: 첫 글과 모든 답글을 순서대로 보여 주며, 인용, 반응 표시, 답글 입력창이 있습니다.
- 새 스레드 양식: 제목, 카테고리, 본문, 선택적 태그.
- 검색: 제목과 글 내용을 검색하고, 카테고리로 거를 수 있습니다.
- 사용자 프로필: 이름, 아바타, 가입일, 글 수, 최근 글.
- 운영 대기열: 신고된 글과 승인을 기다리는 글.
데이터
| 테이블 | 주요 필드 |
|---|---|
| 사용자 | 이름, 아바타, 역할, 신뢰 등급, 가입일, 상태 |
| 카테고리 | 이름, 슬러그, 설명, 정렬 순서, 글쓰기 권한 |
| 스레드 | 제목, 슬러그, 카테고리, 작성자, 고정 여부, 잠금 여부, 해결 여부, 마지막 답글 시각 |
| 글 | 스레드, 작성자, 본문, 작성 시각, 수정 시각, 숨김 여부 |
| 반응 | 글, 사용자, 유형 |
| 신고 | 글, 신고자, 사유, 상태, 운영자의 처리 결과 |
| 구독 | 사용자, 스레드(새 답글 알림용) |
스레드 자체에 「마지막 답글 시각」과 「답글 수」를 저장해 두면, 페이지를 열 때마다 글을 세지 않아도 스레드 목록이 빠르게 나옵니다.
권한
- 방문자는 공개 카테고리를 읽을 수 있습니다.
- 회원은 글과 답글을 쓸 수 있고, 일정 시간 안에 자신의 글을 수정할 수 있습니다.
- 운영자는 스레드를 숨기고, 이동하고, 잠그고, 고정하고, 병합하며, 사용자를 정지할 수 있습니다.
- 관리자는 카테고리와 역할을 관리합니다.
비공개 카테고리는 요청할 때마다 서버에서 확인해야 합니다. 스레드 페이지, 검색 결과, RSS, 알림 모두 같은 확인을 거쳐야 하며, 그렇지 않으면 비공개 글이 다른 경로로 새어 나갑니다. 역할 기반 접근 제어 추가 방법을 참고하세요.
결정과 트레이드오프
평면형 또는 중첩형 답글. 평면형 스레드(시간순 답글, 인용 포함)는 읽기 쉬워서 대부분의 포럼이 쓰는 표준입니다. 중첩형 답글(Reddit 스타일의 트리)은 토론에 적합하지만 휴대폰에서는 따라가기 어렵습니다. 특별한 이유가 없다면 평면형을 고르세요.
Q&A 모드. 지원이나 도움말 포럼에서는 질문자가 답글 하나를 「채택된 답변」으로 표시하고, 그 답변을 질문 바로 아래에 보여 주게 하세요. 이 기능 하나만으로도 오래된 스레드가 훨씬 유용해집니다.
SEO를 위한 공개 또는 비공개. 공개 스레드 페이지는 꾸준한 검색 유입을 가져올 수 있지만, 검색엔진이 읽을 수 있어야 합니다. 즉 각 스레드가 깔끔한 고유 URL과 실제 <title>을 가지고, 글이 JavaScript로 나중에 불러오는 것이 아니라 HTML에 들어 있어야 합니다. 검색 유입이 중요하다면 서버 렌더링이나 사전 렌더링된 스레드 페이지를 요청하세요. 자세한 내용은 AI로 만든 웹사이트의 SEO에서 볼 수 있습니다.
리치 텍스트 또는 Markdown. 미리보기가 있는 Markdown은 안전하게 저장하기 쉽습니다. 비주얼 편집기는 비개발자 회원에게 더 친숙합니다. 어느 쪽이든 표시하기 전에 HTML을 정리해서, 누구도 글 안에 스크립트를 넣지 못하게 하세요.
검색. 포럼의 처음 몇 년 동안은 Postgres 전문 검색으로 충분합니다. 전용 검색 서비스는 규모가 커진 뒤에야 가치가 있습니다. 앱에 검색 추가 방법을 참고하세요.
출시 전에 준비할 스팸과 운영
포럼은 다른 종류의 사이트보다 자동화된 스팸을 빨리 끌어들입니다. 글마다 링크를 담을 수 있는 공개 페이지가 생기기 때문입니다. 처음부터 계획하세요.
- 신뢰 등급. 새 계정은 링크와 이미지를 올릴 수 없고, 첫 두세 글은 승인을 기다립니다. 그 뒤에는 자유롭게 글을 씁니다.
- 요청 제한. 새 계정의 분당, 일일 글 작성 횟수 상한.
- 이메일 인증 후 글쓰기 허용.
- 모든 글에 신고 버튼을 두고, 신고는 운영 대기열로 보냅니다.
- 사용자 링크에 nofollow 적용하여 스팸 업체가 검색엔진에서 얻을 것이 없게 합니다.
- 운영 기록을 남겨 운영자가 누가 무엇을, 왜 했는지 볼 수 있게 합니다.
- 모든 카테고리 상단에 명확한 규칙을 고정합니다.
예시 첫 프롬프트
홈 에스프레소를 즐기는 사람들을 위한 공개 Q&A 포럼을 만들어 줘. 카테고리는 머신, 그라인더, 기술, 원두, 사고팔기. 누구나 읽을 수 있고, 회원은 이메일과 비밀번호로 가입하고 글을 쓰기 전에 이메일을 인증한다. /t/[slug] 형식의 스레드 페이지는 검색엔진이 읽을 수 있도록 서버에서 렌더링하고, 고유한 제목과 메타 설명을 가져야 한다. 답글은 시간순 평면형이며 인용과 엄지 반응을 지원한다. 스레드를 시작한 사람은 답글 하나를 「채택된 답변」으로 표시할 수 있고, 질문 아래에 보여야 한다. 새 회원의 첫 세 글은 운영자 승인을 기다리고, 승인 전에는 링크를 올릴 수 없다. 운영자는 스레드를 숨기고, 잠그고, 고정하고, 이동할 수 있으며, 신고된 글 대기열을 보고, 모든 조치를 기록한다. 제목과 글을 대상으로 한 검색과 카테고리 필터를 추가하고, 내가 팔로우한 스레드의 새 답글은 앱 안 알림으로 알려 줘. 모든 것은 데이터베이스에 저장한다.
빌드 단계
- 스레드 페이지부터. 카테고리 몇 개와 현실적인 스레드 50개를 시드 데이터로 넣으세요. 휴대폰에서 읽기, 인용, 답글 달기가 제대로 되는지 확인하세요.
- 카테고리와 스레드 목록. 최근 활동순 정렬, 고정 스레드 상단 배치, 해결 표시.
- 계정과 인증. 앱에 로그인 추가 방법을 참고하세요.
- 운영과 신뢰 등급. 승인 대기열, 신고, 숨김, 잠금, 이동, 기록. 링크 게시를 시도하는 새 계정으로 직접 테스트하세요.
- 검색. 회원이 실제로 입력할 만한 검색어로 테스트하세요.
- SEO. 게시한 뒤 스레드를 열고 페이지 소스를 보며 글이 HTML에 들어 있는지 확인하세요. 스레드 사이트맵을 추가하세요.
- 실제 콘텐츠 채우기. 유용한 첫 글 스무 개는 직접 쓰거나 전문가를 초대해 쓰게 하세요. 빈 포럼에는 첫 글이 올라오지 않습니다.
자주 하는 실수
- 빈 상태로 출시. 아무도 먼저 글을 쓰지 않습니다. 실제 질문과 답변을 채워 두세요.
- 카테고리가 너무 많음. 한산한 카테고리 스무 개보다 활발한 카테고리 다섯 개가 낫습니다. 나중에 나누세요.
- 새 계정 승인 없음. 스팸 봇은 새 포럼을 금방 찾아냅니다.
- 정제되지 않은 글 HTML. 글 안의 스크립트가 다른 사용자의 세션을 탈취할 수 있습니다. 사용자 콘텐츠는 항상 정제하세요.
- 새는 비공개 카테고리. 스레드 페이지만이 아니라 검색 결과와 알림도 확인하세요.
- 페이지를 열 때마다 답글 세기. 개수를 스레드에 저장해 두고 글이 바뀔 때 갱신하세요.
- 계정 삭제 방법 없음. 떠나는 회원의 글을 어떻게 할지 정해 두세요.
포럼 소프트웨어가 더 나은 경우
Discourse 같은 오픈소스 및 호스팅 포럼 소프트웨어는 신뢰 등급, 스팸 방지, 이메일 연동, 운영, 모바일 레이아웃을 수년간 다듬어 왔습니다. 다른 앱의 일부가 아닌 일반 목적의 포럼이 필요하다면, 이런 도구를 설치하거나 구독하는 편이 직접 만드는 것보다 대개 빠르고 안전합니다. 채팅 도구는 빠른 대화에는 좋지만 답변을 다시 찾기 쉽게 보관하는 데는 약합니다.
직접 만들어야 할 때는 포럼이 제품의 일부일 때입니다. 예를 들면 SaaS 안의 지원 포럼이나 마켓플레이스의 Q&A 섹션입니다. 스레드에 고유한 데이터(기계 모델, 주문, 강의 레슨)를 붙여야 할 때, 또는 포럼의 디자인과 URL을 완전히 자기 것으로 하고 싶을 때입니다. 프로필과 행사를 갖춘 더 넓은 회원 공간이 필요하다면 커뮤니티 플랫폼 만드는 법을 참고하세요.
Mythex로 만들기
Mythex에서는 채팅으로 포럼을 설명하고, 실시간 미리보기에서 확인한 뒤, 공개 주소로 게시할 수 있습니다. Pro 요금제에서는 직접 도메인을 쓸 수 있습니다. 앱에 필요할 때 Mythex는 사용자, 스레드, 글을 위한 전용 Postgres 데이터베이스를 추가하고, 아바타와 이미지를 위한 파일 저장소를 제공합니다. 기본 스택은 브라우저에서 렌더링되는 Vite와 React 앱이므로, 공개 포럼이라면 서버 렌더링된 스레드 페이지(Next.js도 선택지입니다)를 요청하고 SEO 레시피를 따르세요. 회원 로그인과 이메일은 직접 연결하는 방식입니다. 접근 방식과 제공업체를 고르고, 키는 프로젝트 시크릿으로 보관하면 에이전트가 연결합니다. 가입을 열기 전에는 /test로 에이전트가 글쓰기와 운영 과정을 직접 진행하게 하고, AI로 만든 앱을 위한 보안 체크리스트를 읽어 보세요.
자주 묻는 질문
포럼 웹사이트에는 무엇이 필요한가요?
카테고리, 답글이 달린 스레드, 사용자 계정, 검색, 운영 도구가 필요합니다. 대부분의 포럼은 답글 알림, 질문 글에서 가장 좋은 답변을 표시하는 기능, 새 계정을 위한 스팸 방지도 필요합니다.
포럼은 공개로 해야 하나요, 비공개로 해야 하나요?
공개 포럼은 각 스레드가 구글에서 찾을 수 있는 페이지가 되므로 검색 유입을 가져올 수 있습니다. 민감한 주제나 유료 회원에게는 비공개 포럼이 더 적합합니다. 많은 포럼이 읽기는 공개로 두고 글쓰기에만 계정을 요구합니다.
포럼의 스팸은 어떻게 막나요?
새 계정이 할 수 있는 일을 제한하세요. 첫 글은 승인 전까지 보류하고, 일정 기간 활동하기 전까지 링크를 막고, 글 작성 빈도를 제한하고, 회원이 신고할 수 있는 버튼을 제공하세요. 가입 때 이메일을 인증하고 운영자의 모든 조치를 기록하세요.
Discourse 같은 포럼 소프트웨어를 쓰는 편이 나은가요?
정식 기능을 갖춘 포럼을 빨리 만들어야 한다면 검증된 포럼 소프트웨어가 더 안전한 선택입니다. 수년간 쌓인 운영 및 스팸 방지 기능이 있습니다. 포럼이 더 큰 앱의 일부이거나, 일반 포럼 소프트웨어에 없는 데이터와 워크플로가 필요할 때 직접 만드세요.