콘텐츠로 이동

콘텐츠 관리

컬렉션, 항목, 로케일, 릴리스를 갖춘 헤드리스 CMS. Content 패널 또는 SDK로 콘텐츠를 관리하세요.

Proyecta는 완전한 헤드리스 CMS를 제공합니다. 스키마 우선 방식으로 동작합니다. 먼저 컬렉션(구조화된 콘텐츠 유형)을 정의하고, 각 컬렉션의 필드에 맞는 항목을 생성합니다. 항목은 로컬라이즈하거나 릴리스로 묶을 수 있습니다.

콘텐츠는 SDK를 통하거나 AI에게 요청하는 방식으로 관리할 수 있습니다. Content API에는 여섯 가지 리소스 유형이 있습니다.

탭 / 리소스용도
Collections콘텐츠 스키마 정의 및 관리 (예: “Blog Post”, “FAQ”, “Product Spec”)
Fields컬렉션 내 타입이 지정된 슬롯 (Collections의 하위 리소스로 관리)
Entries컬렉션 내 항목 탐색, 생성, 편집, 게시, 삭제
Locales번역 콘텐츠를 위한 언어/지역 로케일 추가 및 관리
Releases항목을 묶어 동시에 게시하거나 게시 취소; releases.publish()로 수동 게시
Assets항목에서 참조 가능한 미디어 파일(이미지, 동영상, PDF) 업로드 및 관리

Collections 탭에서 컬렉션을 클릭하면 해당 항목으로 바로 이동합니다. Entries 탭에서는 개별 콘텐츠 항목을 생성, 편집, 게시, 삭제할 수 있습니다.

SDK(proyecta.content)를 통해 모든 것을 프로그래밍 방식으로 관리할 수도 있습니다.

개념설명
Collection스키마 — 한 가지 콘텐츠 유형의 구조 (예: “Blog Post”, “FAQ”, “Product Spec”)
Field컬렉션 내 타입이 지정된 슬롯 (예: title: string, body: rich_text, coverImage: asset)
Entry컬렉션의 단일 인스턴스 (블로그 포스트 하나, FAQ 항목 하나)
Asset항목에서 참조 가능한 업로드된 미디어 파일
Locale콘텐츠가 번역되는 언어/지역
Release동시에 게시되거나 게시 취소될 항목의 묶음
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });
// 1. Define a collection
const blog = await proyecta.content.collections.create({
api_id: 'blogPost',
name: 'Blog Post',
// fields are added via collections.fields.create()
});
// 2. Create an entry
const post = await proyecta.content.entries.create({
collection_id: blog.id,
data: {
title: 'Hello, world',
body: 'My very first post.',
},
});
// 3. Publish it
await proyecta.content.entries.publish({ entryId: post.id });
// Browse collections
for await (const collection of proyecta.content.collections.list()) {
console.log(collection.name);
}
// Add or remove fields on a collection
await proyecta.content.collections.fields.create(blog.id, {
/* field definition */
});
await proyecta.content.collections.fields.delete(blog.id, fieldId);

항목은 실제 콘텐츠 행입니다. 각 항목은 하나의 컬렉션에 속하며, 해당 컬렉션의 필드에 맞는 데이터를 담습니다.

// Browse entries (pass the collection's api_id, not its numeric id)
for await (const entry of proyecta.content.entries.list({ collection: 'blogPost' })) {
console.log(entry);
}
// Update an entry
await proyecta.content.entries.update(post.id, { data: { title: 'Updated title' } });
// Publish an entry
await proyecta.content.entries.publish({ entryId: post.id });
// Delete an entry
await proyecta.content.entries.delete(post.id);

에셋 업로드는 일급 기능입니다. 이미지, 동영상, PDF를 항목에 첨부하는 데 활용하세요.

// Browse assets
for await (const asset of proyecta.content.assets.list()) {
console.log(asset);
}
// Upload, update, or delete via assets.create / assets.update / assets.delete

채팅 기반 파일 업로드(Builder로 드래그)는 파일 & 미디어를 참고하세요.

콘텐츠는 여러 로케일로 번역할 수 있습니다. 각 로케일은 proyecta.content.locales를 통해 관리되는 레코드입니다.

await proyecta.content.locales.create({
/* code, name, etc. */
});
for await (const locale of proyecta.content.locales.list()) {
console.log(locale);
}

항목을 가져올 때 특정 로케일의 번역을 요청할 수 있습니다. 더 넓은 i18n 관련 내용은 국제화를 참고하세요.

릴리스는 동시에 게시되거나 게시 취소될 항목의 묶음입니다. 마케팅 런칭, 신제품 페이지, FAQ 갱신 등 협업이 필요한 콘텐츠 배포를 스테이징하고, 모든 변경 사항을 원자적으로 전환할 수 있습니다.

참고: 시간 예약 자동 게시 기능은 아직 구현되지 않았습니다. scheduled_at 날짜가 설정된 릴리스는 scheduled 상태로 진입하지만, releases.publish()를 통해 수동으로 게시해야 합니다. 지정된 시간에 자동으로 게시되는 기능은 곧 제공될 예정입니다.

// Create a release (optionally with a target date)
const release = await proyecta.content.releases.create({
name: 'Monday launch',
scheduled_at: '2024-01-08T09:00:00Z',
});
// Manually publish a release when ready
await proyecta.content.releases.publish({ releaseId: release.id });
// Browse releases
for await (const r of proyecta.content.releases.list()) {
console.log(r);
}

릴리스 일정을 변경하려면 삭제 후 새로 생성하세요. update endpoint는 제공되지 않습니다.

자주 쓰는 패턴 (AI에게 맡겨보세요)

섹션 제목: “자주 쓰는 패턴 (AI에게 맡겨보세요)”
  • "Proyecta Content API를 사용해 블로그를 만들어줘. 'Blog Post' 컬렉션에 title, slug, excerpt, body (rich text), coverImage (asset), author 필드를 추가하고, /blog와 /blog/[slug] 경로에 공개 페이지를 만들어줘."
  • "Proyecta Content에 FAQ 컬렉션을 만들어줘. FAQ를 추가/편집할 수 있는 관리자 페이지와 공개 /faq 페이지를 만들어줘."
  • "영어와 스페인어 로케일을 사용해 Proyecta Content로 다국어 랜딩 페이지를 구성해줘."
  • "블로그 포스트 세 개를 담은 릴리스를 만들고, 준비되면 수동으로 게시할 수 있게 해줘."
사용 사례사용할 것
에디토리얼 콘텐츠 (포스트, FAQ, 마케팅 카피) — 게시/초안 상태, 예약, 로컬라이제이션 필요Content API
앱 데이터 (사용자, 주문, 항목) — 쿼리 속도, 트랜잭션, 실시간 처리 필요Database
코드 내 정적 에셋프로젝트의 public/ 디렉터리
사용자가 업로드한 파일파일 & 미디어
  • 리치 텍스트 항목 편집기 — Content 패널에서 rich_text 필드를 위한 완전한 WYSIWYG 편집 기능
  • 콘텐츠 변경 사항 라이브 미리보기 — 앱과 연동하여 실시간으로 확인
  • 콘텐츠 역할 — 개발자 권한과 편집자 권한 분리