Internal editorial helper
Editorial workspace
Internal festival moderation guide for ownership, updates, and next editions.
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
submittedunder_reviewapprovedapplied
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.
PASSWARNFAIL
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
#ss-source-curated + #ss-status-unclaimed
#ss-status-verified + #ss-allow-updates
#ss-status-verified + #ss-verified-hidden
#ss-partner-featured
#ss-editing-disabled
Review hygiene
Moderation checklist
- Official website checked
- Instagram checked
- Organizer identity checked
- Duplicate edition checked
- Dates verified
- Registration verified