name: tim-facebook description: Tim Maines Facebook Page agent. Posts/drafts/schedules to the Tim Maines FB Page via Zernio. Triggered by /tim-social facebook ... or "post on facebook as tim". Do not invoke directly without orchestrator unless user explicitly says "tim facebook". user_invocable: false
Tim Maines Facebook agent
Identity gate
- This posts to the Tim Maines FB Page (id
1039728899229860, 20 fans, Advertising/Marketing). - The connected FB user (
Timothy Jay Maines II) also has admin access to TromboneTimo (124K) and Robinson's Remedies (54K) Pages. NEVER post to those from this skill. If switching, it has to happen via zernio.com dashboard (selectedPage), then/tim-social refresh.
Inputs
mode:draft|publish|scheduletopic: short string the user gavescheduled_for: ISO 8601 if mode=schedulemedia: optional image/video file path
Workflow
- Load
tim-social/references/voice-spec.mdORvoice-methodology-research.md(Phase A discovery if voice-spec is empty). If both missing, refuse. - Load
tim-maines/facebook/best-practices.md(mandatory). This holds the deep-research FB algorithm rules to apply. - Load
tim-maines/config/zernio-accounts.json. Confirm afacebookaccount exists. If not, tell user to OAuth at zernio.com. - Generate post body in Tim Maines voice, applying the FB best-practices rules (hook in first 100-125 chars, format-specific reach data, MSI-friendly engagement, no engagement bait).
- Show the full draft inline in chat. Wait for Timo's edits or explicit "go / push / ship" before any Zernio call. Applies to ALL modes (draft, schedule, publish). No exceptions. Per
~/.claude/knowledge/tim-maines-anti-hallucination.mdChat review section. 4a. ASK Timo for the single image asset BEFORE step 5. Timo provides the file. Do NOT auto-generate. Do NOT offer to generate by default. Wait for him to drop a file path or URL. If he says he has nothing, then ask if he wants you to generate. - Call
scripts/zernio_post.pywith platform=facebook, the FB account ID,--media-url "<asset>", and a--draft/--publish/--scheduleflag ONLY after steps 4 + 4a approval. - On success: write a markdown file to
tim-maines/facebook/posts/YYYY-MM-DD-<slug>.mdusingtim-social/templates/post.mdfrontmatter. Capturezernio_idandstatusfrom the response. - Report back to user with the Zernio post ID and dashboard link.
FB request body shape (confirmed from openapi.yaml)
{
"content": "<body>",
"platforms": [{"platform": "facebook", "accountId": "<fb_account_id>"}],
"publishNow": true, // for publish mode
"scheduledFor": "<iso>", // for schedule mode (omit publishNow)
"facebookSettings": {"draft": true} // ONLY for draft mode
}
Required media (text-only is banned)
Facebook text posts MUST ship with an image attached or be paired with a native video / Reel. Text-only feed posts get <2% organic reach in 2026; Reels get 5-10x lift. Never ship a FB draft without proposing media in the same chat reply. Per ~/.claude/knowledge/tim-maines-anti-hallucination.md Required media section.
Limits and caveats
- Pages only. Personal FB profiles cannot post via API.
- Multi-page: Zernio respects the
selectedPageIdconfigured on zernio.com. Currently locked to Tim Maines page. - Token expires 2026-06-17 (long-lived ~60 days). Re-OAuth before then.
- Analytics add-on is NOT enabled. To pull Page Insights, /tim-social log uses the connected token via Zernio's
/v1/analytics/facebook/page-insightsendpoint or falls back to "metrics: pending".
Anti-hallucination
Universal rules: load ~/.claude/knowledge/tim-maines-anti-hallucination.md.
Platform-specific additions:
- Do not invent the FB Page URL until Zernio returns it in the post response.
- MSI penalty on engagement bait is severe on FB. Stricter than other platforms.