Publishers

Bundles & Macro Score

Upload a runtime bundle, pass validation, earn a Macro Score, and connect Stripe before selling paid listings.

Upload protection
Failed security, structure, or runtime checks return 422 and the bundle is not saved. A Macro Score of 0 from errors blocks production uploads.

What Macro validates

The same pipeline runs from the portal wizard and the Publisher API (POST …/listings/validate-bundle and create/patch):

  • Static security / structure scan of the bundle source
  • Headless Chromium render / preview test
  • Presentation-aware soft warnings (content vs styled)
Comment pitfall
Scanners read the full source, including comments. Avoid forbidden literals such as import() even inside comments — they can fail validation.

Macro Score (0–100)

NameTypeDescription
Errors (failed)score 0Upload blocked. Fix structure/security/runtime issues and re-validate.
WarningspenaltyScore drops. Content presentation + hardcoded colors / heavy design groups hurt more.
Passed / skippedfull or slightHealthy checks contribute full credit; skipped checks may apply a small penalty.

Score fields persist on the listing (macro_score, summary, reasons, checks). Buyers see a Macro Score tab (number + short reasons). Publishers see the same score plus the full check breakdown after validate and on listing edit.

Paid listings and Stripe

  1. Connect Stripe in the portal

    Open Payouts and complete Stripe Connect until status is active.

  2. Price the listing

    Paid offers without an active Connect account are rejected with 400 STRIPE_REQUIRED.

  3. Keep Connect healthy

    Disconnecting Stripe unpublishes paid listings. Reconnect before selling again.

Automation

Use publisher API tokens (pt_…) against https://api.macrocontent.dev/publisher/v1 to validate and patch listings. See Publisher API and Authentication.

POST/publisher/v1/listings/validate-bundlePublisher

Run the full validator / Macro Score pipeline without persisting a failed bundle.

Also see