For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ko/docs/web/content.md (or send Accept: text/markdown).
콘텐츠 관리
자유로운 라이프사이클과 공개 읽기 경계를 갖춘 타입화된 CMS 엔트리.
초보자 연습
전제 조건: 아래 두 개의 초보자 가이드를 읽고, 웹 로컬 설정을 완료하고, 편집기의 루트에서 이 모노레포를 엽니다. 웹 설정은 apps/web/.env.local에 속합니다. Next.js는 루트 .env를 읽지 않습니다. 기본 가짜 모드의 /dashboard는 데이터베이스가 없는 데모입니다. /auth에는 마이그레이션된 데이터베이스가 필요합니다.
빠른 용어: 작업 영역은 한 팀의 별도 사용자, 데이터 및 설정입니다. 서버는 신뢰할 수 있는 백엔드입니다. 제공업체 키를 브라우저 및 전화 코드에 보관하세요. 마이그레이션은 테이블을 생성하거나 업데이트하는 버전이 지정된 데이터베이스 변경입니다. AI 모델은 응답하는 엔진입니다. 모델 카탈로그는 서버의 사용 가능한 모델 ID 및 가격 목록입니다. 공급자는 AI, 이메일, 청구 서비스와 같은 외부 서비스입니다. 자격은 작업 영역에서 기능을 사용할 수 있도록 하는 부여입니다. 웹훅은 한 서비스가 다른 서비스의 URL에 보내는 메시지입니다.
1. 워크스페이스 소유자 또는 관리자로 로그인하고 /content를 열고 양식을 사용하여 고유한 슬러그가 있는 게시물, 페이지, 문서 또는 보고서를 만듭니다. 초안으로 저장한 후 게시하세요.
2. 상태가 게시됨으로 변경되었는지 확인합니다. 관리 액세스 권한이 없는 중복 슬러그 또는 멤버는 실패해야 합니다.
3. 게이트 테스트의 경우 required_entitlement=ai.reference-task를 사용합니다. 확인된 승인이 없으면 페이지에 티저만 표시되어야 합니다.
사용자 정의 코드의 경우 제공된 prompts/README.md로 시작하고 가장 가까운 프롬프트(앱 화면의 경우 prompts/new-app-screen.md, 공개 페이지의 경우 prompts/new-landing-page.md)를 복사합니다. 서버, 데이터베이스 또는 공급자 작업의 경우 코딩 에이전트에게 이 가이드의 작업을 제공하고 AGENTS.md, .ai/PROJECT_CONTEXT.md 및 일치하는 .ai/ 미러를 읽도록 요청하세요. 여기에 이름이 지정된 정확한 소스 파일을 검사하십시오. 편집하기 전에 파일을 나열하고 확인합니다. 작업 공간 소유권과 서버 전용 비밀을 보존합니다. 차이점을 보여주세요. 원하는 동작, 입력 및 출력 필드, 허용된 역할, 예상되는 성공 및 오류, 테스트 계정, 공급자 또는 장치를 알려주십시오. 샘플 값을 사용하십시오. 절대 진짜 비밀을 붙여넣지 마세요.
작업공간 항목 만들기
/content 관리자는 post, page, doc 및 report 항목을 처리합니다. content_entry 행에는 초안/게시됨/보관됨 상태, 작업공간 범위 슬러그 및 작성자가 있습니다. 관리 작업에는 적절한 소유자/관리자 역할이 필요합니다.
이 CMS는 src/resources에 있는 키트의 공개 docs/blog 카탈로그와 별개입니다. 제품은 자체 페이지 구성을 통해 CMS 항목을 렌더링할 수 있습니다.
서버에서 본체를 게이트로 이동하세요.
required_entitlement는 null을 허용합니다. 설정되지 않은 항목은 해제됩니다. 제한 항목의 경우 서버 전용 content-queries.ts는 읽을 수 있는 콘텐츠 또는 본문이 비어 있는 잠긴 티저를 프로젝트합니다. content-access.ts가 프로젝션을 소유합니다. 클라이언트가 제공한 권리 주장을 절대로 신뢰하지 마십시오.
게시하면 content.published가 방출됩니다. 예약된 다이제스트는 출판 팀의 최근 항목을 요약할 수 있습니다. 작성된 콘텐츠도 계정 내보내기에 참여합니다.
게시 및 액세스 확인
초안 가시성, 게시/보관 전환, 중복 슬러그, 잘못된 작업 공간, 무료 항목 및 비활성 유료 보조금을 테스트합니다. 서버가 액세스를 담당하는 동안 프리젠테이션을 위해 페이월 블록을 사용하십시오.
설치 및 설정
/content 워크스페이스 표면은 CMS 엔트리를 관리합니다 — post, page, doc이 권장 타입이지만 컬럼은 URL 안전한 모든 제품 타입(소문자, 숫자, 대시, 밑줄, 최대 64자)을 허용합니다. content_entry 테이블은 모든 행을 workspaceId로 범위 지정하고 createdBy를 기록하며 slug를 워크스페이스와 타입별로 고유하게 유지합니다.
엔트리는 자유로운 draft ↔ published ↔ archived 라이프사이클을 이동합니다 — src/content.ts의 evaluateContentStatusChange가 유효하지 않거나 변화 없는 전환을 거부하고, publishedAt은 첫 게시 시 찍혀 이후 게시 취소에도 살아남아 독자가 원래 날짜를 유지합니다.
/content workspace CMS surface
src/content.ts input + lifecycle rules
src/content-actions.ts member+ mutations
content_entry workspaceId, type, slug, status구현 워크플로
member 이상이 엔트리를 작성합니다 — 모든 뮤테이션은 requireWorkspaceWriter(workspace-access.ts)를 통해 세션, 활성 워크스페이스, 최소 member 역할을 확인하므로 guest는 읽기 전용입니다. normalizeContentEntryInput은 쓰기 전에 타입, 1–255자 제목, URL 안전 slug를 검증합니다.
listPublishedContentEntries는 의도적인 공개 읽기 경계입니다: 명시적 workspaceId를 받고 세션이 필요 없으며 게시된 행만 반환합니다 — 스토어프런트 페이지, 블로그, 문서가 워크스페이스 콘텐츠를 렌더링하는 경로입니다. 게시 시 content.published 아웃바운드 웹훅이 발생하고 작성된 엔트리는 GDPR 데이터보내기에 포함됩니다.
검증 및 문제 해결
draft → publish → archive 왕복, 같은 타입 내 중복 slug, 크로스 워크스페이스 읽기를 시험하세요. 공개 경계가 초안이나 다른 워크스페이스의 행을 절대 반환하지 않는지, content.published가 게시 액션당 한 번만 발화하는지 확인하세요.