2026-10-19

Linetta Works 사이트 소개와 가입 개방

Linetta Works는 linetta로 쓴 웹소설을 읽는 사이트다. linetta로 쓴 작품을 남에게 보여 주려면 Markdown으로 내보내 다른 연재 사이트에 손으로 옮겨야 했고 linetta로 무엇을 쓸 수 있는지 보여 줄 공개된 결과물도 없었다. 그래서 앱에서 회차를 올리면 읽기 좋은 작품 페이지와 공유 링크가 생기는 사이트를 따로 만들기로 했다. 처음 찾아올 사람은 일반 독자보다 linetta를 써 볼까 고민하는 작가라고 봤다. 앱에서 회차를 올리는 쪽은 앞 글에 적었고 이 글은 사이트 쪽을 다룬다.

회차를 읽는 화면 만들기

먼저 내 작품 네 편(연재 「신의 K-직장 생존기」 5화와 단편 「동박새」, 「가을」, 「크리스마스 악몽」)을 가져오기 도구로 넣고 가입 없이 읽을 수 있는 화면부터 열었다. 회차 화면에서 글자 크기를 바꿀 수 있고 본문 끝에는 이전·다음 회차와 회차 목록이 있으며 마지막 회차에는 연재 중이면 “다음 회차를 기다리는 중”, 완결이면 “완결”이 나온다. 작품이나 회차 링크를 메신저에 붙이면 제목과 필명이 든 미리보기 이미지가 뜬다.

작품 페이지를 보고 linetta를 받으러 간 사람이 있는지 알려면 숫자가 있어야 한다고 판단해서 조회수와 linetta 안내 클릭 수는 처음부터 쌓기로 했고 IP나 쿠키처럼 개인을 알아볼 수 있는 값은 남기지 않는다.

작가 가입과 내 작품 화면

작가는 비밀번호 없이 Google 계정이나 이메일로 받은 6자리 코드로 로그인하고 처음이면 로그인하면서 가입이 함께 된다. 처음 들어오면 필명과 작가 주소(works.marvin-42.com/@주소)를 정하는데, 공유한 링크가 깨지지 않도록 주소는 한 번 정하면 바꿀 수 없게 했다.

내 작품 화면에는 올린 작품과 회차가 상태, 조회수와 함께 보이고 작품이나 회차를 비공개로 돌리거나 지울 수 있다. 비공개 회차는 남에게는 없는 페이지(404)로 보이고 작가 본인이 그 주소로 들어가면 안내 띠와 함께 본문이 보인다. 프로필에서는 필명과 소개를 고치고 연결한 linetta 기기를 해제하거나 계정을 지울 수 있다.

수위 검사를 거쳐 공개하기

다른 작가에게 사이트를 열려면 올라오는 회차를 내가 하나하나 읽고 열 수는 없다고 판단해서 가입을 열기 전에 수위 검사부터 붙였다. 게시한 회차와 작품 소개는 바로 공개하지 않고 “검토 중”으로 두고 검사 워커(Node.js로 만든 별도 프로그램)가 Claude에게 전체 이용가 기준에 맞는지 물어 통과하면 공개한다. 반려되면 공개되지 않고 내 작품 화면과 앱에 사유가 보이고 재검토 요청 메일을 보낼 수 있다. 판단이 애매하거나 미성년자 관련 항목이면 운영자 검토로 넘어가고 운영자에게 메일이 간다. 운영자가 관리 화면에서 판정을 바꾸면 그 판정을 잠가서 워커가 다시 뒤집지 않게 했다.

검사가 내 작품을 막지 않는지 먼저 시험했다. 내 작품 네 편과 회차 8개, 그리고 통과해야 할 장면 4개와 막혀야 할 장면 요약 6개를 합친 22건을 돌렸는데, 운영에 쓰는 Claude Opus 5.5가 22건을 모두 맞혔고 회차당 평균 비용은 $0.0216이었다. 같은 시험에서 Claude Haiku 5.5도 22건을 모두 맞혔다. 검사 비용에는 월 한도를 걸어서 한도를 넘으면 워커가 호출을 멈추고 회차는 검토 중으로 남는다. 계정마다 하루에 맡길 수 있는 검사 수에도 한도를 뒀다(가입 7일 안의 계정은 30건, 그 뒤로는 100건).

검사 때문에 올린 본문은 Anthropic API로 전송된다. 이 내용은 linetta의 게시 연결 화면과 사이트의 개인정보처리방침에 적었고 이용약관에는 자동 검사를 쓴다는 점과 이의 제기 방법을 넣었다.

운영 메일이 나가지 않던 일 고치기

운영에서 마지막 점검을 하다가 운영자 알림 메일이 실패한 것을 보고 원인을 찾아보니, 발신 주소의 도메인이 메일 발송 서비스 Resend에 인증되지 않아 로그인 코드 메일까지 처음부터 하나도 나가지 않고 있었다. 로그인 기능을 만들 때는 로컬의 가짜 메일 서버(Mailpit)로 확인했고 운영에서 코드 메일을 실제로 받아 보는 확인이 빠져 있었다. works.marvin-42.com 도메인을 Resend에 인증하고 발신 주소를 그 도메인으로 바꾼 뒤, 운영에서 로그인 코드 메일이 전달되는 것까지 확인했다.

운영 구성

사이트는 PocketBase(계정과 데이터)와 Next.js(화면)로 만들었고 검사 워커까지 컨테이너 세 개가 OVHcloud VPS에서 Cloudflare Tunnel 뒤로 돈다. 회차를 올리면 PocketBase가 화면 캐시를 바로 지워서 몇 초 안에 새 회차가 보인다. 데이터는 매일 암호화해 백업하고 운영 백업을 받아 로컬에서 복구해 보는 것까지 해 봤다.

가입 열기

10월 18일에 게시 기능이 든 linetta 1.9.0을 내고 가입을 열었다. 이제 누구나 가입하면 바로 회차를 올릴 수 있다. 문제가 생기면 환경값 하나로 새 가입의 게시 권한을 다시 닫을 수 있게 해 두었다.

linetta로 쓴 작품은 이 순서로 올린다.

  1. works.marvin-42.com에서 작가로 가입하고 필명과 주소를 정한다.
  2. linetta 1.9 이상을 설치한다(brew install --cask devlikebear/tap/linetta, 이미 쓰고 있으면 메뉴의 업데이트 확인).
  3. linetta의 설정 > 게시에서 브라우저로 계정을 연결한다.
  4. 아웃라인의 회차 메뉴에서 “이 회차 게시…”를 누른다.

확인한 것과 남은 것

운영 사이트에서는 따로 만든 시험 계정으로 확인했다. 새 작품의 첫 회차는 검토 중으로 시작해 9초 뒤 공개됐고 반려 사례는 공개되지 않고 사유가 보였다. 운영자가 통과로 바꾼 회차는 워커가 다시 뒤집지 않았고 워커를 멈추면 회차가 검토 중으로 남았다가 다시 켜자 공개됐다. 계정을 지우면 작품 주소가 404가 되는 것도 봤다. 운영자 알림 메일은 도메인을 고친 뒤에는 아직 다시 보내 보지 않았다.

백업을 VPS 밖 저장소로도 보낼지는 아직 정하지 않아서 지금은 VPS 안의 매일 백업과 호스팅 업체의 자동 백업만 있다. Mac App Store 판 제출은 따로 정한다.

같은 작업대에서 나온 이웃 도구입니다.