Quick overview
Publish exact reviewed Drive images through controlled Facebook and Instagram adapters. Match private and public JPEG bytes, approve caption, accounts and UTC timing, recheck before each send, preserve original IDs and stop ambiguous retries. Dry run is the default.
How it works
- Reads a dedicated Google Sheets queue and one initialized native Data Table pipeline. Validates unique job IDs, explicit rights/public-hosting flags, allowed account IDs and a valid future UTC schedule with an IANA timezone display.
- Reads private Drive metadata and the actual JPEG, verifies the configured parent folder and version, and compares its SHA-256 with the customer-owned immutable public JPEG mirror.
- Requires an allowlisted signed-in n8n reviewer to inspect the actual source and approve the exact content hash, state version, caption, target accounts and UTC time. Dry-run approval is distinct from permission to publish.
- In dry run, rechecks the source and emits a request manifest without a Meta publishing call. Dry-run approval never enables live publication.
- Only in explicitly enabled live mode, verifies the Facebook Page or linked professional Instagram identity, rechecks the image and persists a send-ready intent before each mutation.
- Uses Graph v26.0 Facebook photo publication and Instagram image container/status/media_publish adapters. Instagram may prepare its unpublished container shortly before due; public publication waits for the approved UTC window.
- Stores each original channel ID, then verifies account ownership, caption and provider permalink. A successful channel is not reposted when the other fails.
- Ambiguous provider responses stop the job for explicit original-ID reconciliation; the Google Sheets queue mirrors authoritative Data Table status.
Setup
- Import setup.json, workflow.json and review.json into a compatible n8n project and keep them inactive. Connect Google Sheets OAuth and run the one-time resource creator for a new PublishQueue and initialized native Data Table.
- Copy the reported spreadsheet/table IDs and your own private My Drive source folder into both configurations. Set exact public-media hostnames, numeric Facebook/Instagram account allowlists, the linked Instagram Page map and real reviewer emails.
- Supply an exact-byte immutable publicly reachable HTTPS JPEG mirror; a private Drive/viewer URL is not valid hosting. This package does not upload public copies or change sharing permissions.
- Connect Google Drive OAuth and separate native Meta Authorization Bearer Header Auth credentials. Obtain your own eligible Meta app, Facebook Page/professional Instagram accounts, appropriate permissions and Page access tokens using the Facebook Login route.
- Run the credential-free synthetic demo, then a real-source dry run. Only after your own controlled live account test and explicit authorization should you create a new live job policy, set dryRun=false, enable publishing and approve exact public publication. Keep the minute worker running for due schedules.
Requirements
- Compatible n8n 2.28.6-style native Data Tables, Form Trigger2.6/n8n User Auth and Completion2.5; Google Sheets/Drive OAuth and a private My Drive input folder; exact-byte immutable public HTTPS JPEG hosting; suitable Facebook Page and linked professional Instagram account where used; Meta app, current publishing grants and appropriate Page access tokens; real allowlisted reviewer accounts. V1 accepts single JPEGs within the documented size/dimension policy. No Meta account, token, public hosting or app-review approval is supplied. Only local/pure and strict isolated mock tests were performed; real account eligibility, real posts, Google delivery and Cloud are untested.
Customization
- Configure exact accounts, linked Page mapping, trusted CDN hosts, UTC schedules, IANA display zones, poll and lateness limits, and reviewers. The approved policy includes dry-run mode; changing it cannot turn an old dry-run approval into live permission. Keep fresh private/public byte checks, authenticated exact-version review, per-channel original IDs and persisted send gates intact. Use a new unique job for changed source/caption/targets/time, and target only unresolved channels after independently resolving any uncertain original publication.
Additional info
Includes inactive worker, authenticated review companion, setup and a credential-free synthetic demo. Local fixtures and isolated native mocks cover adapter requests, original-ID reconciliation and repeat handling; real Meta posts, real Google delivery, account eligibility and n8n Cloud were not live-tested. Dry run makes no Meta requests. Public JPEG hosting must remain immutable while Meta fetches it. No video, Reel, Story, carousel, automatic hosting, provider-side scheduling, remote deletion or guaranteed exactly-once/exact-time publication is included.