Content Types
Nibgate supports four content types: Article, Photo, Music, and Video. Each type has a dedicated editor and presentation format.
All content types support free and paid gating. Set the price per post in the admin dashboard or via the package configuration.
Markdown editor, inline images, cover photos.
ArticleMulti-image upload, captions, gallery grid.
PhotoAudio upload, cover art, embedded player.
MusicYouTube URL → embedded player with gating.
VideoArticle
Articles are the primary content type for long-form writing.
Editor: Full-featured Markdown editor with toolbar support for headings, bold, italic, links, lists, blockquotes, and code blocks.
Media: Inline images can be embedded anywhere in the article body. A separate cover photo field controls the hero image shown on the blog homepage and in Explore cards.
Excerpt: A short summary displayed alongside the cover image. Set in the post editor.
import { createGate } from '@nibgate/sdk'
const article = createGate({
id: 'my-article',
type: 'article',
title: 'My Premium Article',
path: '/articles/my-article',
price: '0.01',
access: { humans: 'paid', agents: 'paid' },
unlock: { mode: 'one_time' }
})
article.content()Photo
Photos are gallery-style posts with multiple images.
Editor: Upload one or more images. Each image can have an optional caption.
Layout: Images are displayed in a responsive gallery grid on the blog. The first image serves as the cover.
Paid gating: A paid photo set gates the article body text. The gallery images currently render in full; per-image or count-limited previews are not implemented.
const photoSet = createGate({
id: 'photo-set-1',
type: 'image',
title: 'Photo Collection',
path: '/photos/collection',
price: '0.005',
access: { humans: 'paid', agents: 'paid' },
unlock: { mode: 'one_time' }
})Music
Music posts allow creators to share audio tracks with embedded playback.
Editor: Upload an audio file and optional cover art image.
Player: An audio player is available in the rendering kit, but the default post template does not embed it yet — music posts currently show their body text.
Paid gating: Music gating is not wired into the default template yet — only the article body is gated on paid posts.
const track = createGate({
id: 'track-1',
type: 'music',
title: 'Exclusive Track',
path: '/music/track-1',
price: '0.01',
access: { humans: 'paid', agents: 'paid' },
unlock: { mode: 'one_time' }
})Video
Video posts embed YouTube videos with optional gating.
Editor: Paste a YouTube URL. The system extracts the video ID and generates the embed.
Player: The YouTube iframe player is embedded directly on the post page.
Paid gating: When gated, the video embed is hidden behind an unlock overlay. The video is revealed after payment.
const course = createGate({
id: 'video-1',
type: 'video',
title: 'Premium Video Course',
path: '/videos/course-1',
price: '0.02',
access: { humans: 'paid', agents: 'paid' },
unlock: { mode: 'one_time' }
})Content type comparison
| Aspect | Article | Photo | Music | Video |
|---|---|---|---|---|
| Primary input | Markdown | Image files | Audio file | YouTube URL |
| Cover image | Yes (separate field) | First image | Uploaded art | Auto-generated |
| Inline media | Yes | Captions per image | Cover art | Embed player |
| Preview | Excerpt | Blurred/count-limited thumbnails | Short clip | Overlay |
| Full access | Full article body | Full gallery | Full track | Full video |