AM
Personal buildAuto MMO Publisher
Posts domain

Post objects are separated from publish jobs.

This is the right split for a personal publishing system because one content item may be published to several platforms with different states, retries, and errors.

mock schema live
Post composerV1 now writes a post plus fan-out publish jobs straight into Firestore
write path ready
Target accounts
Connect an account for this channel in Settings first.
Media type

Paste a public media URL. The server will create a canonical asset record and link it to the post. For TikTok, keep using URLs on a verified public domain or URL prefix.

Writes the post to Firestore, then creates one publish job per selected account.
Write-path checklistWhat will unlock the real create post flow
next slice
Firestore write routePost creation and job fan-out now run on the server-side admin path
ready
External URL asset pathPosts now treat public media URLs as the primary source and save them into canonical asset records.
ready
Managed asset bucketOptional next step for copying generated media into a cloud bucket that the workers control.
managed bucket ready
Per-platform job fan-outOne post now creates one publish job per selected platform.
live
Queued content samplesPlaceholder records that match the MVP workflow you described
collection: posts
Auto MMO smoke test 2026-08-02T04:53:03.483ZText only
Facebook
Publish atSun 12:05 GMT+7
Media statusText only
Stateready
Smoke test UI composer - Multi-channel V1Text only
Facebook
Publish at2026-08-06T21:45
Media statusText only
Stateready
TikTok smoke 2026-08-03T17:01:16.720Z1 public image
TikTok
Publish atManual smoke test
Media status1 public image
Stateready
TikTok video smoke 2026-08-03 FILE_UPLOAD1 video
TikTok
Publish atManual smoke test 20260803-file-upload
Media status1 video
Stateready
Scheduler smoke testText only
Facebook
Publish at2026-07-30T22:55
Media statusText only
Stateready
TikTok Content Posting API Sandbox Demo1 video
TikTok
Publish at2026-08-05T16:16
Media status1 video
Stateready
Test publish from Auto MMOText only
Facebook
Publish at2026-07-31T10:30
Media statusText only
Stateready
Smoke test Multi-channel V1 — routingText only
Facebook
Publish at2026-08-06T17:00
Media statusText only
Stateready
Scheduler classification smokeText only
Facebook
Publish at2026-08-06T13:34:06Z
Media statusText only
Stateready
Auto MMO scheduler smoke 2026-08-02T04:53:56.407ZText only
Facebook
Publish atSun 11:50 GMT+7
Media statusText only
Stateready
Live scheduler smoke test 2026-07-31Text only
Facebook
Publish at2026-07-31 08:29
Media statusText only
Stateready
Smoke test Multi-channel V1 — scheduled routingText only
Facebook
Publish at2026-08-06T17:00
Media statusText only
Stateready
test url1 image
Facebook
Publish at2026-08-01T01:11
Media status1 image
Stateready
Weekend streetwear drop teaser1 video + 2 stills
FacebookInstagram
Publish atThu 10:30
Media status1 video + 2 stills
Statequeued
Mid-season bundle push3 product photos
FacebookTikTok
Publish atThu 15:00
Media status3 product photos
Stateready
UGC collage for new arrivalsWaiting final edit
Instagram
Publish atFri 09:00
Media statusWaiting final edit
Statewaiting media
Prod scheduler smoke 2026-08-02T04:57:31.736ZText only
Facebook
Publish atSun 12:02 GMT+7
Media statusText only
Stateready
Test url1 image
Facebook
Publish at2026-08-01T02:05
Media status1 image
Stateready
Weekend streetwear drop teaserText only
Facebook
Publish at2026-07-31T11:15
Media statusText only
Stateready
Posts collection blueprintOne content item that can be published to multiple platforms at different times.
seed contract
titleInternal label for the content item.
Typestring
Used byPost creation and scheduling
Statedefined
captionPrimary text body used by the adapters.
Typestring
Used byPost creation and scheduling
Statedefined
platformsTarget platforms such as Facebook, Instagram, TikTok.
Typestring[]
Used byPost creation and scheduling
Statedefined
channelIdThe channel that owns this content item; legacy posts default to channel_default.
Typestring
Used byPost creation and scheduling
Statedefined
targetAccountIdsExact platform_accounts document IDs selected for this post.
Typestring[]
Used byPost creation and scheduling
Statedefined
publishAtThe planned schedule time in UTC.
Typetimestamp
Used byPost creation and scheduling
Statedefined
mediaItemsStorage references and media metadata for upload adapters.
Typeobject[]
Used byPost creation and scheduling
Statedefined
mediaItems[].urlResolved public media URL used by the live platform adapters.
Typestring
Used byPost creation and scheduling
Statedefined
mediaItems[].assetIdOptional link to the canonical assets document for this media item.
Typestring
Used byPost creation and scheduling
Statedefined
mediaItems[].storagePathOptional Firebase Storage path used to mint signed URLs for Facebook and Instagram.
Typestring
Used byPost creation and scheduling
Statedefined
assetIdsOptional convenience list of linked canonical asset ids on the post.
Typestring[]
Used byPost creation and scheduling
Statedefined
statusdraft, ready, queued, or waiting-media.
Typestring
Used byPost creation and scheduling
Statedefined