Meta Museum connects to the Meta Graph API as the Sun & Rain Works Publisher
app. The integration is deliberately supervised: agents may prepare drafts, but
draft artifacts cannot authorize publication and the CLI will not publish
without an exact digest-bound human approval.
Server-only configuration
Keep these values in the local or deployment secret store. Never prefix them
with `NEXT_PUBLIC_` and never place tokens in URLs or logs.
SUN_AND_RAIN_WORKS_PUBLISHER_APP_ID=
SUN_AND_RAIN_WORKS_PUBLISHER_APP_SECRET=
SUN_AND_RAIN_WORKS_PUBLISHER_PAGE_ID=
SUN_AND_RAIN_WORKS_PUBLISHER_PAGE_ACCESS_TOKEN=
META_GRAPH_API_VERSION=v26.0
SUN_AND_RAIN_WORKS_FACEBOOK_PUBLICATION_ENABLED=false
The App ID and App Secret are retained for Meta configuration and future token
maintenance. The current publisher uses only the Page ID and Page access token.
Verify the connection
This performs a read-only identity request and prints no token:
pnpm facebook:page -- verify
Prepare an agent draft
Write the proposed copy to a UTF-8 text file. At least one public HTTPS source is
required. The output path is non-overwriting.
pnpm facebook:page -- draft `
--message-file=storage/facebook/proposed-post.txt `
--link=https://www.metamuseum.org/provenance-research `
--source-url=https://linked.art/model/provenance/ `
--out=artifacts/facebook/draft-2026-08-21.json
Review the complete message, link, sources, and `digestSha256` in the generated
JSON. Drafts always retain `publicationApproved: false`.
Publish after human approval
Publication is a consequential external action. Enable it only for the approved
run, supply the exact reviewed digest, identify the accountable operator, and
use the literal attestation shown below.
$env:SUN_AND_RAIN_WORKS_FACEBOOK_PUBLICATION_ENABLED = "true"
pnpm facebook:page -- publish `
--draft=artifacts/facebook/draft-2026-08-21.json `
--approve-digest=<EXACT_64_CHARACTER_DIGEST> `
--approver-id=<ACCOUNTABLE_OPERATOR_ID> `
--executor-agent-id=agent:clio-social-editor `
--human-attestation=I_APPROVE_PUBLICATION
The command replays the draft digest immediately before posting, sends the token
in the authorization header, and writes a non-overwriting receipt containing the
Meta post ID and approval metadata. It never records the access token.
Keep `SUN_AND_RAIN_WORKS_FACEBOOK_PUBLICATION_ENABLED=false` in durable
configuration. Scheduled agents may generate reviewable drafts; they must not
set the enable flag or fabricate the approval arguments.
Package a measurable campaign
Clio's seven-day launch plan lives at
`content/social/facebook/2026-08-22-first-week-plan.md`. Convert the complete
plan into one immutable review package with:
pnpm facebook:campaign -- `
--plan=content/social/facebook/2026-08-22-first-week-plan.md `
--campaign=facebook_launch_2026_08 `
--candidate-time="10:00 America/Los_Angeles" `
--out=artifacts/facebook/campaign-2026-08-22.json
The packager validates every dated post, source set, editorial purpose, image
format, call to action, and success signal. It adds privacy-safe Facebook
organic UTM parameters to Meta Museum links, creates a digest-bound Page draft
for each day, and binds the complete package to the exact Markdown plan hash.
Both `schedulingAllowed` and `publicationAllowed` remain `false`; this command
does not call Meta or schedule anything. Each post still requires image/rights
review, Clio's advisory copy review, and a separate human approval of its exact
draft digest.
Clio editorial review
Clio is the Meta Museum Cultural Heritage Social Editor, named for the Greek
Muse of history. `pnpm facebook:review` gives Clio a digest-bound draft and an
explicit evidence list. Its review is advisory, cannot approve publication,
and rejects invented source URLs, stealth rewrites, unsafe evidence egress, or
unmetered/truncated provider responses. Pass `--evidence-public-safe` only after
checking the bounded evidence packet contains public-safe material. Model self-
scores are not accepted; independent blinded reviewers score quality. A changed message needs
a new draft digest and human approval; an exact retention preserves the
existing digest approval.
The repeatable held-out trial command is `pnpm facebook:review:trial --
--model=claude-haiku-4-5-20251001 --receipt=<aggregate-receipt.json>
--private-dir=<ignored-private-directory>`. It writes the blinded A/B packet and
randomization key only to the ignored private directory and retains no raw copy
or reviewer identity in the aggregate receipt.
For image-led releases, `publish-photo` sends the digest-bound public image URL
to Meta's native Page photo endpoint and places the approved landing-page URL
in the caption. This avoids immutable link-preview snapshots and records both
the returned photo ID and post ID in the token-free receipt.
First-post release package
The reviewed launch copy lives at
`content/social/facebook/2026-08-21-meta-museum-introduction-photo.txt`. Its landing
page uses the dedicated 2400×1260 digital-cultural-heritage preview at
`public/images/social/meta-museum-provenance-research-og-v4.jpg`. It preserves
the Cleveland Museum of Art's CC0 image of Vincent van Gogh's *Landscape with
Wheelbarrow* (1883) as a faithful digital surrogate whose wheel aligns with the
Meta Museum gear and linked collection graph. Explicit Open Graph/Twitter alt
text and visible post copy retain the source credit. The high-resolution v4
master is designed to remain crisp after social-platform recompression. The current approval artifact is
`artifacts/facebook/draft-2026-08-21-introduction-v4.json`; because artifacts
are local evidence, operators must review the file itself and its exact digest
before approving publication.