Skip to Content
Content Types

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.

Article

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

AspectArticlePhotoMusicVideo
Primary inputMarkdownImage filesAudio fileYouTube URL
Cover imageYes (separate field)First imageUploaded artAuto-generated
Inline mediaYesCaptions per imageCover artEmbed player
PreviewExcerptBlurred/count-limited thumbnailsShort clipOverlay
Full accessFull article bodyFull galleryFull trackFull video

Next reads

Last updated on