Type: Instagram Post
Changes to how this Type behaves are requested through a GitHub Issue and implemented, together with this reference page, through the repository's normal workflow. See /_docs/posts for how Post Types and Content Types work in general, and docs/Internal/type-doc-templates.md for the Post Type Doc template this file follows.
A standalone Post Type for an owner-authored Instagram post imported by an external converter (out of scope for this Type; see /_docs/json-import) — a single image, a carousel of images/videos, or a video/Reel. No PostType inheritance: this Type reuses the ordinary Post/Version/Content Element/Role/Slot/Stage model exactly as every other Type does. An imported Instagram Post normally starts PrePub, same as any other import.
Schema
Slots:
- caption : text | optional | single
- images : image | required | repeatable
- videos : video | required | repeatable
- links : link | optional | repeatable
- attachments : attachment | optional | repeatable
- audios : audio | optional | repeatable
- contacts : contact | optional | repeatable
- geospatials : geospatial | optional | repeatable
- timelines : timeline | optional | repeatable
caption is this Type's one featured Text role. images/videos together are the required Media Slot — at least one Image or Video is required (combined, not one of each); every other kind is a wildcard slot (the same "any role of this kind" meaning as Article's own images/videos rows — see /_docs/posts) and fully optional. Accessibility text, location, credits, and any other available source fact live in the relevant existing Content Element or in this Version's own source-provenance metadata (see docs/Internal/data-model.md's "Source provenance") — not a bespoke Instagram-only field.
Content placement (Full rendering)
caption and the required Media Slot are this Type's own primary content. images/videos are combined into one ordered carousel — Image and Video interleaved by Rank, not grouped by kind or split into separate Posts, so a real carousel's own slide order (including a mixed image/video carousel) is preserved; see "Carousel order," below. Every other eligible Content Element the Post holds (Links, Attachments, Contacts, Geospatial, Timelines) flows into the shared "Additional Information" container, same fixed group order every other Post Type uses — empty groups omitted, Text/Free-form HTML never shown there. Image is the one documented duplication exception: every Image the Post holds also appears in the Additional Information Media group even though it's already shown in the primary carousel.
Carousel order
The Media Slot has no separate ordering field of its own — it reuses each element's existing per-(Role, kind) Rank column, the same mechanism every other repeatable Slot in this codebase already uses. Image and Video are still two separate Content Types with two separate Rank sequences; when a real carousel genuinely interleaves image and video slides, the converter assigns Rank from one shared incrementing counter across both kinds for that Role, and rendering merges the Post's Images and Videos sharing that Role and sorts the combined list by Rank — never splitting one carousel into multiple Posts.
Rendering contracts
Summary (in a list of posts)
Title, the first Image/Video (combined Rank order) as a thumbnail, a short excerpt of caption, published date.
Full (its own page)
The normal compact Post header (title, Published/Updated/Original/History line, Tags), caption (if present) directly below it, then the ordered carousel, then the shared Additional Information container for Links/Attachments/Contacts/Geospatial/Timelines.
Page regions (Full rendering)
- Header — the Hidden/PrePub/Private banner (if applicable), the title, the compact Published/Updated/Original/History metadata line (see /_docs/article's own "Metadata line" for the full item-by-item detail), and a row of Tag links (if the Version has any).
- Introduction —
caption, then the carousel. - Supplementary — the Additional Information container, when eligible content exists.
- Main, Footer — not currently used by Instagram Post.
Responsive order: Header, Introduction, Supplementary — unchanged across viewport sizes (no reading-column primary presentation).
Public metadata exposure
Title, type, Stage, Category, published/updated timestamps, Version ordinal, Tags (as JSON-LD keywords), every Content Element the Post holds, and this Version's own source-provenance facts (platform, source account identity, stable source-post ID, canonical URL, original publish timestamp, converter provenance, checksum — see docs/Internal/data-model.md's "Source provenance") are all exposed via the Metadata page, JSON-LD export, and native JSON export, same as every Type.
Admin editor
Every Content Element section is available here, same as every Type. caption is this Type's one standard Text role; at least one Image or Video is required — the Admin editor does not block a save with none, but publishing rejects it with an actionable error until at least one is added. Any Image/Video you add is shown in the carousel, in Rank order; anything else you add is still saved and shown in the Additional Information container afterward. Any element can also be referenced inline in a text block via content references, e.g. {{role}} or {{link:role}}.