EtznabAI (the OpenClaw agent + FacebookAgent CLI) is the brain: drafts, voice, approve, reject, audit. It never posts by chatting. It runs the CLI.
The CLI can talk to two pipes. They are not interchangeable while our Meta app is unpublished.
App ID 1034423049482698. Still unpublished. Owned by the Etznabai portfolio.
Useful for
- Legal home of the app: this site, privacy, deletion, terms, icon.
- Reading Page and Instagram history we already admin (voice / personality sync).
- Tokens, testers, system user, Business Suite assignment.
- A future day when the app is verified and Ir en vivo — then Graph can post in public too.
Pros
- First party. No extra vendor on the caption.
- No Buffer channel cap or Buffer rate limit.
- Same app for Facebook and Instagram if Meta ever lets it go live.
Cons
- While unpublished, Graph posts are visible only to people with an app role. Followers do not see them. That is not a bug.
- Going live needs Meta business verification (EIN / business papers we do not have).
- We maintain tokens. Meta can change Graph at any time.
Official Meta partner. Already live. We use the GraphQL API, not Buffer MCP.
Useful for
- Public posts followers can actually see.
- Facebook Pages + Instagram Business we connected in Buffer.
- The live path of
publish-post --confirmtoday. - Queue / schedule if we ever want a time instead of share-now.
Pros
- Public reach without verifying Etznabai or forming a company.
- API on the Free plan. Fits our CLI and approve gate.
- Karla connects the Pages once with Allow. We do not need her as Meta app admin.
Cons
- Buffer can see every caption and image we send. They hold Page publish access.
- Free = 3 channels (Tzolkin FB, TIME FB, @tzolkinlas13lunas). Fourth needs paid.
- If Buffer is down or the channel disconnects, nothing goes out.
- Instagram still needs a public image URL for photo posts.
Hard rules
- 1. Public post → Buffer only Until the EtznabAI Meta app is verified and set to live, every post that followers must see goes through Buffer. Never through Graph.
- 2. Graph is read + identity, not the loudspeaker Use Graph to sync history, match voice, hold the app’s legal URLs, and keep testers. Do not use it to “test if the Page looks public.” It will lie.
-
3. One brain: the CLI
Draft → approve →
publish-post --confirm. No Buffer dashboard drive-by. No Buffer MCP. No pasting into Facebook. The audit log is the proof. - 4. Do not mix the apps Do not connect Buffer using the EtznabAI Meta app. Do not upload fake EIN papers to force Graph live. Do not make Karla a Meta app admin.
-
5. Status before send
statusmust showpublisher=buffer.buffer-statusmust list the target channel. If it saysgraphormock, stop. - 6. Revisit Graph only after verification If we later get a real sole-prop EIN and Ir en vivo, we can choose Graph again for public posts. Until then this page stands.
- 7. Inbox is not the agent yet Direct messages: Graph can do them in theory (Messenger + Instagram Messaging). Same unpublished trap — only app-role people. Public DMs need App Review. Buffer cannot read or reply to DMs at all. Humans use Meta Business Suite / Instagram until we decide to take Graph through review. Comments on posts: Buffer Community (dashboard, not API). Graph can also read/reply to comments; we do not use it for that while unpublished.
Cómo publicamos
Graph (nuestra app Meta) es para la identidad legal y para leer el historial. Mientras la app no esté en vivo, lo que Graph publica no lo ven los seguidores.
Buffer es el altavoz público de hoy. El agente redacta y aprueba; el CLI envía por Buffer.
No mezclar: no conectar Buffer con la app EtznabAI, no publicar por Graph “para probar”, no saltarse el approve. Los DMs los atiende una persona en Meta / Instagram; Buffer no lee ni responde mensajes privados.