Skip to Sidebar Skip to Content

Internal editorial helper

Editorial workspace

Internal festival moderation guide for ownership, updates, and next editions.

Manual review only Tag-based workflow No private request data

Overview

How the moderation layer works

Manual review

Social Swing reviews all ownership, update, and next-edition requests manually.

Tag visibility

Internal tags control which public badges, claim links, update links, and editorial indicators appear.

No automation

This page does not verify, publish, duplicate, or change festival listings automatically.

Ghost Admin first

Use Ghost Admin, Deftform review, and the tag states below as the operational source of truth.

Asset moderation

Moderated organizer media

Organizers can submit logos, cover images, posters, and schedule PDFs, but Social Swing editors review every asset manually before anything becomes public.

Asset requests

Organizer uploads create request and asset metadata rows for editorial review. The asset itself is not published automatically.

D1 metadata tracking

D1 tracks asset type, filename, review status, safe organizer notes, and internal review notes. Private file URLs stay editorial-only.

Approved is not applied

Approved means the editor accepts the asset. Applied means the editor has manually added it to Ghost or the public listing.

Manual publication only

No asset is public until an editor manually applies it in Ghost. There is no automatic Ghost mutation in this workflow.

Lifecycle

Asset review states

  • submitted
  • under_review
  • approved
  • applied

rejected

Use rejected when the asset should not be used or needs replacement. Add a safe organizer-visible note when helpful.

archived

Use archived for outdated, superseded, or closed asset records that should stay out of active review.

Separate from request status

Request status and asset status are separate. One request can contain multiple assets, and one asset can be approved while another is rejected.

No automatic status sync

Do not automatically change request status just because an asset status changed. Close each review intentionally.

Asset types

Supported asset metadata

logo Logo
cover_image Cover image
poster Poster
schedule_pdf Schedule PDF
other Other file

Asset review checklist

Before changing asset status

  • Is the asset relevant to the festival?
  • Does it match the correct edition or year?
  • Is image quality good enough?
  • Is the file type supported?
  • Is the organizer verified or connected?
  • Should this be approved, rejected, or applied?
  • Has Ghost been updated manually before marking applied?

CLI reference

Organizer asset commands

List submitted assets

node scripts/organizer-assets.js list --remote --status submitted --limit 20

Group by request

node scripts/organizer-assets.js list --remote --group-by-request --limit 50

Summary

node scripts/organizer-assets.js summary --remote

Show one asset with source

node scripts/organizer-assets.js show --remote --id <asset_id> --show-source

Update status

node scripts/organizer-assets.js update --remote \
  --id <asset_id> \
  --status under_review \
  --visible-note "Social Swing is reviewing this asset." \
  --internal-note "Checking quality and edition match." \
  --reviewed-by "Juan Carlos"

Mark applied

node scripts/organizer-assets.js update --remote \
  --id <asset_id> \
  --status applied \
  --visible-note "This asset has been applied to the listing." \
  --internal-note "Applied manually in Ghost." \
  --reviewed-by "Juan Carlos"

Operations

Operational dashboard

Run these checks to understand what needs editorial attention before changing anything.

Integrity status

Checks data consistency across organizer relationships, requests, and assets. Use it to find orphan assets, invalid statuses, and duplicate active relationships.

  • PASS
  • WARN
  • FAIL

PASS means no errors. WARN means review the queue. FAIL means investigate before changing data.

SS_WRANGLER_COMMAND="npx wrangler@4.92.0" node scripts/integrity-audit.js --remote

Stale queue status

Checks operational backlog: stale submitted items, stale under-review items, and approved items that have not been applied yet.

  • Stale submitted and under-review requests
  • Stale submitted and under-review assets
  • Approved-not-applied items
SS_WRANGLER_COMMAND="npx wrangler@4.92.0" node scripts/stale-queue-report.js --remote

Request moderation queue

Submitted means received but not reviewed. Under review means an editor is checking. Needs more information means the organizer should provide more context.

node scripts/organizer-requests.js list --remote --status submitted --limit 20
node scripts/organizer-requests.js list --remote --status under_review --limit 20

Asset moderation queue

Use these commands to review media backlog. Approved assets are not live; applied assets have been manually applied to Ghost.

node scripts/organizer-assets.js list --remote --status submitted --limit 20
node scripts/organizer-assets.js list --remote --group-by-request --limit 50
node scripts/organizer-assets.js summary --remote

Relationship health

Use strict integrity mode to catch verified relationships without identity, duplicate active relationships, pending claims, and other relationship warnings.

  • Verified organizer relationships
  • Pending claims
  • Duplicate active relationship warnings
  • Missing organizer identity warnings
SS_WRANGLER_COMMAND="npx wrangler@4.92.0" node scripts/integrity-audit.js --remote --strict

Privacy reminders

  • No source_url in organizer UI
  • No storage_key exposure
  • No payload_json exposure
  • No automatic Ghost mutation
  • Approved does not mean applied
  • CLI remains the action layer

Ghost Admin shortcuts

Quick Ghost Admin searches

Use these tag searches in Ghost Admin to review current moderation states.

Moderation workflow

Common review outcomes

Approved claim

Verify the organizer relationship, update ownership tags, and enable updates only when appropriate.

Rejected claim

Keep the listing unverified and remove exposed claim access if the request looks suspicious.

Approved update

Apply listing changes manually, then clear the review-needed tag.

Rejected update

Leave the listing unchanged and close the review note internally.

Next edition accepted

Create or update the future edition manually after duplicate checks.

Duplicate edition

Merge notes into the existing edition instead of creating a second listing.

Suspicious organizer

Do not verify; consider disabling editing while Social Swing reviews the case.

Editing disabled

Use the editing-disabled tag to temporarily suppress claim, update, and edition CTAs.

Tag operations

Tag transition matrix

Situation Tags to add/remove
Approved claim Remove unclaimed; add verified; optionally add allow updates. #ss-status-unclaimed #ss-status-verified #ss-allow-updates
Rejected claim Keep unclaimed; remove allow claim or add editing disabled if needed. #ss-status-unclaimed #ss-allow-claim #ss-editing-disabled
Approved update Apply changes manually; remove update review needed. #ss-update-review-needed
Rejected update Do not change public content; remove update review needed when review is closed. #ss-update-review-needed
Next edition accepted Create or update the future edition manually; do not duplicate automatically.
Duplicate edition Use the existing edition listing; merge notes manually.
Partner upgrade Add partner featured; keep verification as a separate decision. #ss-partner-featured
Temporary editing lock Add editing disabled; remove it when requests can reopen. #ss-editing-disabled

Editorial states

Recommended editorial states

Curated + unclaimed #ss-source-curated + #ss-status-unclaimed
Verified + updates enabled #ss-status-verified + #ss-allow-updates
Verified hidden #ss-status-verified + #ss-verified-hidden
Partner featured #ss-partner-featured
Editing disabled #ss-editing-disabled

Review hygiene

Moderation checklist

  • Official website checked
  • Instagram checked
  • Organizer identity checked
  • Duplicate edition checked
  • Dates verified
  • Registration verified