{"id":"31d513d0-07a2-4e70-b703-8a36f04cad39","entityType":"agent","slug":"clawhub-alexbloch-ia-twitter-account-operations","name":"X / Twitter Account Operations","canonicalUrl":"https://www.xpersona.co/agent/clawhub-alexbloch-ia-twitter-account-operations","canonicalPath":"/agent/clawhub-alexbloch-ia-twitter-account-operations","generatedAt":"2026-10-11T07:43:21.814Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T04:37:17.426Z","emptyReason":null},"description":"Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\". Skill: X / Twitter Account Operations Owner: alexbloch-ia Summary: Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\". Tags: account-safety:1.0.2, agent:1.0.2, automation:1.0.2, browser-automation:1.0.2, cron:1.0.2, doctrine:1.0.2, growth:1.0.2, latest:1.1.0, openclaw:1.0.2, operations:1.0","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s179c74ca8kjff2gapygs9y13d86yr3z:twitter-account-operations","sourceUrl":"https://clawhub.ai/alexbloch-ia/twitter-account-operations","homepage":"https://clawhub.ai/alexbloch-ia/skills/twitter-account-operations","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/alexbloch-ia/twitter-account-operations","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/alexbloch-ia/skills/twitter-account-operations","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigg"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:37:17.426Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:37:17.426Z","emptyReason":null},"stars":null,"forks":null,"downloads":1157,"packageName":null,"latestVersion":"1.1.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:37:17.358Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T04:37:17.426Z","lastCrawledAt":"2026-10-11T04:37:17.358Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T04:37:17.358Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.0","createdAt":"2026-09-30T08:54:09.880Z","changelog":"Security: artifact is SKILL.md only, scope section first (owned accounts, human review, stop on platform defenses, AI disclosure), timezone placeholder.","fileCount":3,"zipByteSize":8855},{"version":"1.0.2","createdAt":"2026-07-16T15:03:27.739Z","changelog":"v1.0.2 — SKILL.md et README.md strictement identiques a la 1.0.1 (SHA-256 verifie). Cette version ne corrige que des canaux de release. 13 dist-tags crees par erreur restaient figes sur la 1.0.0, servant le contenu anterieur a la reecriture de doctrine. Ils pointent desormais tous vers le contenu courant. skill-card.md n'est pas repris: le CLI le traite comme un artefact generable et le retire a chaque publication (stripGeneratedSkillCards). L'ancienne carte decrivait encore la doctrine pre-reecriture. Les dist-tags ne sont pas supprimables (ni CLI, ni API, ni interface web); les repointer est le seul levier disponible.","fileCount":4,"zipByteSize":10830},{"version":"1.0.1","createdAt":"2026-05-18T14:59:58.870Z","changelog":"v1.1.0 — Non-breaking additions on top of the v1.0.0 doctrine. Added: - Quick config (YAML) block in Section 0 — drop-in config.yaml for agents, including a schedule.windows block for cron timing. - Compatibility table in Section 0 — install paths for Claude Code, OpenClaw, ClawHub, Cursor / Copilot CLI, and generic LLM agents. - Section 7 — First-run checklist (7 items before enabling any cron) + a bash one-liner to init memory files. - Section 8 — Reply skeletons: 3 drop-in templates (Answer-first, Empathy + redirect, Polite correction) with \"what to never paste verbatim\" guardrails. - Section 9 — FAQ (OpenClaw requirement, multi-account, X API rate limits, threads vs single tweets, X Premium/Blue, suspension handling). - init-memory.sh shipped with the companion GitHub repo (idempotent memory-dir bootstrap). Unchanged: Sections 1-6 (the core doctrine) are byte-identical to v1.0.0. Existing crons keep working without modification. Full changelog: https://github.com/AlexBloch-IA/twitter-account-operations/blob/main/CHANGELOG.md","fileCount":4,"zipByteSize":10894},{"version":"1.0.0","createdAt":"2026-05-18T14:41:57.247Z","changelog":"Initial release. - Three-role mental model (post / engage / stealth) for any X account. - Human-like browser discipline: right page first, let UI load, read before clicking. - Full cron-by-cron playbook: notifications, keyword monitor (morning/midday/evening), reply pass, original posts (morning/noon/evening), thread generator, result publish, daily metrics recap. - Strict reply qualification — no impulse posting, no generic CTAs. - Recovery playbook for every common failure mode (browser down, frozen, composer stuck, page unusable). - Explicit anti-patterns to avoid.","fileCount":3,"zipByteSize":6494}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s179c74ca8kjff2gapygs9y13d86yr3z:twitter-account-operations","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T07:43:21.809Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alexbloch-ia-twitter-account-operations/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T04:37:17.426Z","emptyReason":null},"readme":"Skill: X / Twitter Account Operations\n\nOwner: alexbloch-ia\n\nSummary: Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\".\n\nTags: account-safety:1.0.2, agent:1.0.2, automation:1.0.2, browser-automation:1.0.2, cron:1.0.2, doctrine:1.0.2, growth:1.0.2, latest:1.1.0, openclaw:1.0.2, operations:1.0.2, playbook:1.0.2, social-media:1.0.2, twitter:1.0.2, x:1.0.2\n\nVersion history:\n\nv1.1.0 | 2026-09-30T08:54:09.880Z | user\n\nSecurity: artifact is SKILL.md only, scope section first (owned accounts, human review, stop on platform defenses, AI disclosure), timezone placeholder.\n\nv1.0.2 | 2026-07-16T15:03:27.739Z | user\n\nv1.0.2 — SKILL.md et README.md strictement identiques a la 1.0.1 (SHA-256 verifie). Cette version ne corrige que des canaux de release.\n\n13 dist-tags crees par erreur restaient figes sur la 1.0.0, servant le contenu anterieur a la reecriture de doctrine. Ils pointent desormais tous vers le contenu courant.\n\nskill-card.md n'est pas repris: le CLI le traite comme un artefact generable et le retire a chaque publication (stripGeneratedSkillCards). L'ancienne carte decrivait encore la doctrine pre-reecriture.\n\nLes dist-tags ne sont pas supprimables (ni CLI, ni API, ni interface web); les repointer est le seul levier disponible.\n\nv1.0.1 | 2026-05-18T14:59:58.870Z | user\n\nv1.1.0 — Non-breaking additions on top of the v1.0.0 doctrine.\n\nAdded:\n- Quick config (YAML) block in Section 0 — drop-in config.yaml for agents, including a schedule.windows block for cron timing.\n- Compatibility table in Section 0 — install paths for Claude Code, OpenClaw, ClawHub, Cursor / Copilot CLI, and generic LLM agents.\n- Section 7 — First-run checklist (7 items before enabling any cron) + a bash one-liner to init memory files.\n- Section 8 — Reply skeletons: 3 drop-in templates (Answer-first, Empathy + redirect, Polite correction) with \"what to never paste verbatim\" guardrails.\n- Section 9 — FAQ (OpenClaw requirement, multi-account, X API rate limits, threads vs single tweets, X Premium/Blue, suspension handling).\n- init-memory.sh shipped with the companion GitHub repo (idempotent memory-dir bootstrap).\n\nUnchanged: Sections 1-6 (the core doctrine) are byte-identical to v1.0.0. Existing crons keep working without modification.\n\nFull changelog: https://github.com/AlexBloch-IA/twitter-account-operations/blob/main/CHANGELOG.md\n\nv1.0.0 | 2026-05-18T14:41:57.247Z | user\n\nInitial release.\n\n- Three-role mental model (post / engage / stealth) for any X account.\n- Human-like browser discipline: right page first, let UI load, read before clicking.\n- Full cron-by-cron playbook: notifications, keyword monitor (morning/midday/evening),\n  reply pass, original posts (morning/noon/evening), thread generator, result\n  publish, daily metrics recap.\n- Strict reply qualification — no impulse posting, no generic CTAs.\n- Recovery playbook for every common failure mode (browser down, frozen, composer\n  stuck, page unusable).\n- Explicit anti-patterns to avoid.\n\nArchive index:\n\nArchive v1.1.0: 3 files, 8855 bytes\n\nFiles: skill-card.md (2163b), SKILL.md (17739b), _meta.json (145b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: twitter-account-operations\ndescription: Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\".\n---\n\n# X / Twitter Account Operations\n\nThis skill is the operating doctrine for X/Twitter automation runs on a brand, professional or personal account.\n\n## Scope and preconditions (read first)\n\n| Rule | Detail |\n|---|---|\n| Accounts | Only accounts you own or are explicitly authorized to operate. Named in `<X_HANDLE>`. Never any other account |\n| Activation | Only for a named account with an approved schedule. Read-only runs (weekly planning, keyword monitor, metrics recap) never post, like, or follow |\n| Human review | Required before any post touching health, legal, finance, politics, a named person, a client result, or a correction of someone. Draft locally, send to the operator, publish only after approval |\n| Platform defenses | CAPTCHA, verification challenge, \"unusual activity\", lock, or rate-limit notice → stop the run, report, hand over to a human. Never work around it |\n| AI disclosure | If anyone asks whether the account or a reply is automated or AI-assisted, answer truthfully. Follow X's automation rules and label the account as automated where they require it |\n| Data | Reads public posts and your own notifications only. Logs keep post/reply text and URLs, not profiles of other users. Delete log entries older than your retention period (default suggestion: 90 days) |\n\n**The goal is not to click fast. The goal is to operate the browser deliberately: stable session, correct context, useful action, no spam, no reputational risk.**\n\nDrop-in for any niche (legal, medical, software, finance, creator, ecommerce). Replace the placeholders in section 0 with your own values.\n\n---\n\n## 0. Configure for your brand\n\nBefore running anything, fill these placeholders in your local copy or your agent's memory:\n\n| Placeholder | Example | Your value |\n|---|---|---|\n| `<BRAND_NAME>` | \"Acme Studio\" | — |\n| `<BRAND_DOMAIN>` | \"acme.studio\" | — |\n| `<X_HANDLE>` | \"@AcmeStudio\" | — |\n| `<BROWSER_PROFILE>` | \"x-live\" | — |\n| `<BROWSER_PORT>` | \"9222\" | — |\n| `<NICHE_KEYWORDS>` | \"bookkeeping OR invoicing\" | — |\n| `<WORKSPACE_DIR>` | \"~/.openclaw/workspace/twitter-<brand>\" | — |\n| `<TIMEZONE>` | IANA name of your audience's timezone | — |\n\nAll shell snippets below assume an [OpenClaw](https://openclaw.ai) browser CLI bound by CDP, but the doctrine works with any browser-automation stack (Playwright, Puppeteer, Chrome MCP). Swap the CLI calls for your own.\n\n### Quick config (copy-paste YAML)\n\nIf your agent reads config from YAML, drop this in `<WORKSPACE_DIR>/config.yaml`:\n\n```yaml\nbrand:\n  name: <BRAND_NAME>\n  domain: <BRAND_DOMAIN>\n\nx:\n  handle: <X_HANDLE>                 # e.g. \"@AcmeStudio\"\n  browser_profile: <BROWSER_PROFILE> # e.g. \"x-live\"\n  browser_port: <BROWSER_PORT>       # e.g. 9222\n\ndiscovery:\n  niche_keywords: <NICHE_KEYWORDS>   # e.g. \"bookkeeping OR invoicing\"\n\nworkspace:\n  dir: <WORKSPACE_DIR>               # e.g. \"~/.openclaw/workspace/twitter-acme\"\n\nalerts:\n  channel: telegram | slack | discord\n  webhook: <YOUR_WEBHOOK_URL>\n\nschedule:\n  timezone: <TIMEZONE>               # required, no default; every window below is relative to it\n  windows:\n    morning_post:   \"09:00\"\n    noon_post:      \"12:30\"\n    evening_post:   \"18:00\"\n    reply_passes:   [\"11:00\", \"15:00\", \"19:30\"]\n    metrics_recap:  \"21:30\"\n```\n\n---\n\n## 1. Browser architecture\n\n### Physical profile\n\nThe active browser profile is:\n\n- `<BROWSER_PROFILE>` (CDP direct profile attached to `http://127.0.0.1:<BROWSER_PORT>`)\n\nUse it through the OpenClaw browser CLI when the cron has no browser tool:\n\n```bash\nopenclaw browser --browser-profile <BROWSER_PROFILE> status\nopenclaw browser --browser-profile <BROWSER_PROFILE> tabs\nopenclaw browser --browser-profile <BROWSER_PROFILE> open https://x.com/notifications\nopenclaw browser --browser-profile <BROWSER_PROFILE> snapshot --limit 160\nopenclaw browser --browser-profile <BROWSER_PROFILE> click <ref>\nopenclaw browser --browser-profile <BROWSER_PROFILE> type <ref> \"text\"\nopenclaw browser --browser-profile <BROWSER_PROFILE> press Enter\n```\n\nThe profiles `tw-post`, `tw-engage`, and `tw-maintain` below are **operating roles**, not necessarily separate physical profiles. With one physical profile, keep the same separation by workflow, tab discipline, and resting page.\n\n### Role: `tw-post`\n\nMain account cockpit. Use for direct account action.\n\nUse for:\n- original posts\n- threads\n- replies sent from the account\n- notifications\n- DMs if enabled\n- profile checks\n- metrics visible on profile or analytics\n- result posts\n\nDefault page: `https://x.com/notifications`\n\nMental model: act as the account. Protect it. Do not clutter it.\n\n### Role: `tw-engage`\n\nSearch and discovery radar. Use to find what deserves action.\n\nUse for:\n- keyword searches\n- live searches\n- monitoring public conversations\n- finding potential replies\n- competitor observation\n- news or trend discovery\n\nDefault page:\n`https://x.com/search?q=<NICHE_KEYWORDS_URL_ENCODED>&f=live`\n\nMental model: discover, qualify, decide. Do not post impulsively from discovery.\n\n### Role: `tw-maintain`\n\nQuiet maintenance bay. Use for low-noise maintenance.\n\nUse for:\n- following cleanup\n- list or account curation\n- quiet profile review\n- non-public maintenance\n\nDefault page: `https://x.com/home`\n\nMental model: maintain quietly. No noisy engagement.\n\n### Operational law\n\n- `tw-post` = act as the account\n- `tw-engage` = discover what to react to\n- `tw-maintain` = maintain quietly\n- stability matters more than speed\n\nNever collapse all workflows into chaotic browsing.\n\n---\n\n## 2. Deliberate browser behavior\n\n### Open the right page first\n\nDo not begin from a random existing tab.\n\nExamples:\n- notifications check → `https://x.com/notifications`\n- keyword monitor → live search URL\n- reply pass → search or candidate conversation first, then account action\n- original post → clean composer flow\n- metrics recap → profile or analytics\n- result publish → site result page first, then clean X composer\n\n### Let the page load\n\nAfter opening a page:\n- wait for visible content\n- confirm the session is logged in\n- confirm the UI is interactive\n- only then act\n\nNever click or type into half-loaded pages.\n\n### Read before acting\n\nFirst real action is observation.\n\nBefore any public action:\n- read the page\n- understand the thread or notification\n- check whether the brand can add real value\n- check reputational risk\n\n### Click carefully\n\nClick once. Then verify.\n\nAfter each click, confirm:\n- the expected panel opened\n- the expected thread loaded\n- the composer is active if needed\n- no wrong account or wrong tab is active\n\nNo stacked clicks. No impatient double-clicking.\n\n### Type carefully\n\nBefore submitting:\n- focus the field\n- paste or type once\n- verify the full text appeared\n- verify spacing, links, and media\n- verify the tone is brand-safe\n\n### Keep one task per tab\n\nEach tab needs one purpose.\n\nWhen done:\n- close extra tabs\n- close stale composers\n- return to a resting page\n\nSafe resting page: `https://x.com/notifications`\n\n### Protect the account\n\nNever publish just because a cron fired.\n\nIf the slot is weak:\n- use a stronger fallback\n- draft locally\n- or do nothing\n\nQuality protects the brand.\n\n---\n\n## 3. Cron-by-cron guide\n\n### Weekly Planning\n\nRole: no browser required first. Use `tw-engage` only if checking live topics.\n\nGoal: plan a credible week of content.\n\nInteraction style:\n1. Read local memory, post log, reply log, ideas, learnings.\n2. Use your site pages as source priority.\n3. If browsing X, use search/discovery discipline.\n4. Produce a plan, not spam.\n\nAvoid:\n- inventing performance data\n- planning too many posts\n- weak angles\n\n### Notifications Check\n\nRole: `tw-post`\n\nFirst page: `https://x.com/notifications`\n\nGoal: detect mentions, questions, useful replies, high-signal followers.\n\nInteraction style:\n1. Open notifications.\n2. Wait until feed is usable.\n3. Read before acting.\n4. Reply only if useful, safe, and on-topic.\n5. Like only when appropriate.\n6. Inspect profiles before follow-back.\n\nAvoid:\n- replying to everything\n- generic filler\n- expert-grade advice on a precise personal case\n- escalating polemics\n\n### Keyword Monitor (morning / midday / evening)\n\nRole: `tw-engage`\n\nFirst page: live search URL with brand keywords.\n\nGoal: identify qualified public conversations.\n\nInteraction style:\n1. Open live search.\n2. Scan newest relevant posts.\n3. Open promising items only.\n4. Evaluate freshness, source, relevance, and fit.\n5. Capture candidates.\n6. Do not force action if nothing is strong.\n\nAvoid:\n- treating stale content as urgent\n- replying to trolls\n- posting from raw impulse\n- using `tw-post` for casual discovery unless only one physical profile exists\n\n### Reply Pass (midday / afternoon / evening)\n\nRole: discovery in `tw-engage`, public action in `tw-post`.\n\nFirst page: candidate conversation or live search.\n\nGoal: send at most 2 useful replies per run.\n\nInteraction style:\n1. Review candidate conversations.\n2. Read full visible context.\n3. Draft concise, useful, prudent reply.\n4. Check: no promise, no exact advice, no aggressive CTA.\n5. Publish only if value is clear.\n6. Log the reply.\n\nAvoid:\n- generic replies\n- repeating the same CTA\n- giving a private consultation in public\n- engaging hostile threads\n\n### Original Post — Morning\n\nRole: `tw-post`\n\nFirst page: clean composer flow.\n\nGoal: publish one practical, answer-first post.\n\nInteraction style:\n1. Read post log and ideas first.\n2. Choose a fresh topic.\n3. Draft locally before composer.\n4. Open composer only when copy is ready.\n5. Paste once.\n6. Verify final text.\n7. Publish.\n8. Confirm the post went live.\n9. Update post log.\n\nAvoid:\n- duplicate topics\n- weak filler\n- posting without final verification\n\n### Original Post — Noon\n\nRole: `tw-post`\n\nGoal: publish a sober news / myth-vs-reality / threshold / deadline post.\n\nInteraction style:\n- same as morning\n- verify any factual claim before posting\n- if the source is weak, do not publish\n\nAvoid:\n- sensationalism\n- uncertain claims\n- clickbait\n\n### Original Post — Evening\n\nRole: `tw-post`\n\nGoal: publish a practical case study, common mistake, or field-specific tip.\n\nInteraction style:\n- draft locally\n- anonymize everything\n- avoid identifiable client/customer facts\n- publish only if useful\n\nAvoid:\n- exposing client/case details\n- implying guaranteed results\n- emotional pressure tactics\n\n### Thread Generator (Tue / Fri)\n\nRole: `tw-post`\n\nFirst page: clean composer/thread flow.\n\nGoal: publish one pedagogical thread from existing site content.\n\nInteraction style:\n1. Select a source page or article.\n2. Draft full thread locally.\n3. One idea per tweet.\n4. Verify prudence and readability.\n5. Open composer.\n6. Build thread carefully.\n7. Check order before publishing.\n8. Publish once.\n9. Confirm live thread.\n10. Update post log.\n\nAvoid:\n- building directly in browser without local fallback\n- losing thread text\n- publishing if composer is unstable\n\n### Result / Win Publish\n\nRole: `tw-post`\n\nGoal: publish a short, sober, anonymized post if a new result page exists on `<BRAND_DOMAIN>`.\n\nInteraction style:\n1. Check the site first.\n2. Confirm the result is public.\n3. Draft a cautious post.\n4. Do not add private details.\n5. Publish only if the result is new and appropriate.\n\nAvoid:\n- duplicating old results\n- overclaiming\n- promising the same outcome to others\n\n### Daily Metrics Recap\n\nRole: `tw-post` if metrics require profile or analytics.\n\nFirst page: profile, then analytics only if usable.\n\nGoal: capture real daily observations and recommendations.\n\nInteraction style:\n1. Review post log and reply log.\n2. Open profile if needed.\n3. Record visible metrics only.\n4. If analytics is broken, say so.\n5. Do not invent numbers.\n\nAvoid:\n- fake metrics\n- strategy claims unsupported by visible data\n\n---\n\n## 4. Recovery and failure handling\n\n### Browser down\n\n1. Restart only the affected profile.\n2. Reopen its default page.\n3. Confirm logged-in state.\n4. Confirm UI interactivity.\n5. Resume only after checks pass.\n\n### Browser frozen\n\n1. Reload expected page once.\n2. If still broken, restart browser profile.\n3. Reopen default page.\n4. Check interactivity.\n5. If still broken, report exact blocker.\n\n### `tw-post` / account cockpit unstable\n\nTreat as critical.\n\nDo not post, reply, DM, like, or follow until stable.\n\nRecovery:\n1. Stop public action.\n2. Close stale composer if possible.\n3. Restart browser profile if needed.\n4. Open notifications.\n5. Confirm simple navigation works.\n6. Continue only if stable.\n\n### Too many tabs\n\n1. List tabs.\n2. Keep the necessary working tab.\n3. Close duplicate or stale tabs.\n4. Return to resting page.\n\n### Page loaded but unusable\n\n1. Verify failure is real.\n2. Refresh once.\n3. If still broken, record blocker.\n4. Use fallback if available.\n5. Never hallucinate state.\n\n### Composer stuck\n\n1. Stop adding inputs.\n2. Inspect once.\n3. Close composer cleanly if possible.\n4. Retry one clean time only.\n5. If still broken, save locally and abort.\n\n### Cron cannot safely complete\n\n1. Stop.\n2. Preserve browser stability.\n3. Report exact blocker.\n4. Do not fake completion.\n\n---\n\n## 5. Anti-patterns\n\nNever:\n- mix all workflows chaotically\n- guess without reading the UI\n- leave cluttered tabs\n- force posts when the slot is weak\n- reply generically\n- use noisy engagement during maintenance\n- fire actions without verifying the result\n- publish expert-grade advice on a specific personal case\n- promise a result\n- denigrate anyone\n- post at night (off-brand windows)\n- invent analytics\n\n---\n\n## 6. Final doctrine\n\nChoose the correct role.\nOpen the correct page.\nLet the UI load.\nRead before acting.\nClick once.\nVerify the result.\nRecover cleanly when broken.\nLeave the browser cleaner than you found it.\n\n`tw-post` = act as the account.\n`tw-engage` = discover what to react to.\n`tw-maintain` = maintain quietly.\n\n**Stability matters more than speed.**\n\n---\n\n## 7. First-run checklist\n\nBefore enabling any cron, run through this checklist:\n\n- [ ] Section 0 placeholders filled in your local copy / agent memory.\n- [ ] X account profile bio is brand-aligned but not aggressively promotional.\n- [ ] Browser profile launched at `http://127.0.0.1:<BROWSER_PORT>` and logged in.\n- [ ] Loading `https://x.com/notifications` from your profile renders the feed (= session OK).\n- [ ] `<WORKSPACE_DIR>/memory/` directory exists with the memory files used by your crons (post log, reply log, ideas, learnings, recaps).\n- [ ] Alert channel (Telegram / Slack / Discord) webhook tested with a \"hello\" message.\n- [ ] At least 1 week of manual posting before letting automation drive the account — establishes a baseline tone the drafts can match.\n- [ ] Human reviewer named for sensitive posts (see Scope), and the account labelled as automated where X requires it.\n\nA bash one-liner to init the memory files:\n\n```bash\nmkdir -p \"<WORKSPACE_DIR>/memory\" && cd \"$_\" && touch x-recaps.md x-post-log.md x-reply-log.md x-ideas.md x-learnings.md x-metrics-log.md\n```\n\n---\n\n## 8. Reply skeletons (drop-in templates)\n\nThese are *skeletons*, not finished replies — fill the brackets, then humanize.\n\n### Skeleton A — Answer-first (most replies)\n\n```\n[Direct answer in 1 sentence, no hedging].\n\n[1-2 sentences of reasoning or the underlying rule].\n\n[Optional: 1 concrete next step the OP can take themselves].\n```\n\n### Skeleton B — Empathy + redirect (sensitive topic)\n\n```\nThat's a tough spot.\n\n[1 sentence that validates without overclaiming \"I know what you're going through\"].\n\nThe general framework here is [...]. A specialist in [...] can review your specific situation.\n```\n\n### Skeleton C — Correction (politely)\n\n```\nSmall precision: [the corrected fact, sourced if possible].\n\n[Why it matters in 1 sentence].\n\n(Not blaming OP — common confusion).\n```\n\n### What to never paste verbatim\n\n- Anything with `[bracket]` placeholders still in it (final read-through is mandatory).\n- The exact same skeleton more than twice in a 7-day window — vary the structure.\n\n---\n\n## 9. FAQ\n\n**Q: Do I need OpenClaw to use this skill?**\nA: No. OpenClaw browser CLI is the example stack — the doctrine works with Playwright, Puppeteer, Chrome MCP, or any CDP-capable tool. Swap the CLI calls.\n\n**Q: Can I use this skill for multiple X accounts?**\nA: Yes, for accounts you own or are authorized to operate — clone the workspace dir per account. Each account gets its own `memory/` and its own browser profile. Use a different `<BROWSER_PORT>` per account so they don't collide.\n\n**Q: How does this interact with X API rate limits?**\nA: The skill is browser-driven, not API-driven — you're not consuming X API quota. You are, however, subject to X's behavioral throttling on the UI side, The caps in this doctrine are editorial limits, not a way around that throttling: if X throttles or challenges the session, stop and hand over to a human.\n\n**Q: Should I post threads or single tweets?**\nA: Default to single tweets. Run a thread once per week max (Tue or Fri) when you have actual depth worth a thread. Threads-for-the-sake-of-threads get under-engaged.\n\n**Q: What about X Premium / Blue / verification?**\nA: Orthogonal. The doctrine doesn't change. Verified accounts get slightly more leeway on rate limits but also more visibility for any misstep — so the discipline matters more, not less.\n\n**Q: What if X bans/suspends my account?**\nA: Stop everything. Do not appeal automatically. Manual review only. Document the suspension in `x-learnings.md` with the exact last 5 actions before suspension.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7f6shzecv3qv3wrr074s49f986ybe1\",\n  \"slug\": \"twitter-account-operations\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1790758449880\n}\n\nFile v1.1.0:skill-card.md\n\n## Description:\n\nGuides scheduled posting, replies, monitoring, and recovery for an X account the operator owns or is authorized to run.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[alexbloch-ia](https://clawhub.ai/user/alexbloch-ia)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nAccount owners and authorized operators use this skill to plan posts, review notifications and public conversations, publish useful content, and track results through scheduled agent workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Scheduled actions may publish publicly from a logged-in account without adequate oversight.\n\nMitigation: Limit use to owned or explicitly authorized accounts; configure the account, schedule, retention, and human approval rules before enabling automation.\n\nRisk: Sensitive or inaccurate posts and replies could mislead readers or harm reputations.\n\nMitigation: Require operator approval for health, legal, financial, political, client-result, named-person, and correction content; verify claims before publishing.\n\nRisk: Platform challenges or rate limits could indicate that continued automation is unsafe.\n\nMitigation: Stop the run on CAPTCHA, verification challenges, account locks, or rate-limit notices and hand control to a human.\n\n## Reference(s):\n\n- [X / Twitter Account Operations on ClawHub](https://clawhub.ai/alexbloch-ia/skills/twitter-account-operations)\n- [OpenClaw](https://openclaw.ai)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Configuration instructions, Shell commands]\n\n**Output Format:** [Markdown guidance with YAML configuration and shell examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes posting and reply workflows, review checkpoints, and recovery procedures.]\n\n## Skill Version(s):\n\n1.1.0 (source: server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.2: 4 files, 10830 bytes\n\nFiles: README.md (4259b), skill-card.md (2404b), SKILL.md (17130b), _meta.json (145b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: twitter-account-operations\ndescription: Operating doctrine for X/Twitter account automation — stable Chrome sessions, role separation (post / engage / stealth), human-like interaction, careful posting, reply discipline, recovery patterns. Use this for any scheduled X activity (cron, agent, recurring task) where account safety and long-term reputation matter more than raw output.\n---\n\n# X / Twitter Account Operations\n\nThis skill is the operating doctrine for every X/Twitter automation run on a brand, professional or personal account.\n\n**The goal is not to click fast. The goal is to operate Chrome like a careful human operator: stable browser, correct context, useful action, no spam, no reputational risk.**\n\nDrop-in for any niche (legal, medical, software, finance, creator, ecommerce). Replace the placeholders in section 0 with your own values.\n\n---\n\n## 0. Configure for your brand\n\nBefore running anything, fill these placeholders in your local copy or your agent's memory:\n\n| Placeholder | Example | Your value |\n|---|---|---|\n| `<BRAND_NAME>` | \"Acme Studio\" | — |\n| `<BRAND_DOMAIN>` | \"acme.studio\" | — |\n| `<X_HANDLE>` | \"@AcmeStudio\" | — |\n| `<BROWSER_PROFILE>` | \"x-live\" | — |\n| `<BROWSER_PORT>` | \"9222\" | — |\n| `<NICHE_KEYWORDS>` | \"retrait permis OR contester amende\" | — |\n| `<WORKSPACE_DIR>` | \"~/.openclaw/workspace/twitter-<brand>\" | — |\n\nAll shell snippets below assume an [OpenClaw](https://openclaw.ai) browser CLI bound by CDP, but the doctrine works with any browser-automation stack (Playwright, Puppeteer, Chrome MCP). Swap the CLI calls for your own.\n\n### Quick config (copy-paste YAML)\n\nIf your agent reads config from YAML, drop this in `<WORKSPACE_DIR>/config.yaml`:\n\n```yaml\nbrand:\n  name: <BRAND_NAME>\n  domain: <BRAND_DOMAIN>\n\nx:\n  handle: <X_HANDLE>                 # e.g. \"@AcmeStudio\"\n  browser_profile: <BROWSER_PROFILE> # e.g. \"x-live\"\n  browser_port: <BROWSER_PORT>       # e.g. 9222\n\ndiscovery:\n  niche_keywords: <NICHE_KEYWORDS>   # e.g. \"retrait permis OR contester amende\"\n\nworkspace:\n  dir: <WORKSPACE_DIR>               # e.g. \"~/.openclaw/workspace/twitter-acme\"\n\nalerts:\n  channel: telegram | slack | discord\n  webhook: <YOUR_WEBHOOK_URL>\n\nschedule:\n  timezone: Europe/Paris             # everything else is relative to this\n  windows:\n    morning_post:   \"09:00\"\n    noon_post:      \"12:30\"\n    evening_post:   \"18:00\"\n    reply_passes:   [\"11:00\", \"15:00\", \"19:30\"]\n    metrics_recap:  \"21:30\"\n```\n\n### Compatibility\n\nThe skill is markdown — it works wherever an agent reads `SKILL.md`:\n\n| Stack | Skill install path |\n|---|---|\n| [Claude Code](https://claude.ai/code) | `~/.claude/skills/twitter-account-operations/` |\n| [OpenClaw](https://openclaw.ai) | `~/.openclaw/skills/twitter-account-operations/` |\n| ClawHub-published | one-click install via [clawhub.ai](https://clawhub.ai/alexbloch-ia/twitter-account-operations) |\n| Cursor / Copilot CLI | drop `SKILL.md` into your project's `.cursorrules` or `AGENTS.md` |\n| Any LLM agent reading markdown rules | concatenate `SKILL.md` into your system prompt |\n\n---\n\n## 1. Browser architecture\n\n### Physical profile\n\nThe active browser profile is:\n\n- `<BROWSER_PROFILE>` (CDP direct profile attached to `http://127.0.0.1:<BROWSER_PORT>`)\n\nUse it through the OpenClaw browser CLI when the cron has no browser tool:\n\n```bash\nopenclaw browser --browser-profile <BROWSER_PROFILE> status\nopenclaw browser --browser-profile <BROWSER_PROFILE> tabs\nopenclaw browser --browser-profile <BROWSER_PROFILE> open https://x.com/notifications\nopenclaw browser --browser-profile <BROWSER_PROFILE> snapshot --limit 160\nopenclaw browser --browser-profile <BROWSER_PROFILE> click <ref>\nopenclaw browser --browser-profile <BROWSER_PROFILE> type <ref> \"text\"\nopenclaw browser --browser-profile <BROWSER_PROFILE> press Enter\n```\n\nThe profiles `tw-post`, `tw-engage`, and `tw-stealth` below are **operating roles**, not necessarily separate physical profiles. With one physical profile, keep the same separation by workflow, tab discipline, and resting page.\n\n### Role: `tw-post`\n\nMain account cockpit. Use for direct account action.\n\nUse for:\n- original posts\n- threads\n- replies sent from the account\n- notifications\n- DMs if enabled\n- profile checks\n- metrics visible on profile or analytics\n- result posts\n\nDefault page: `https://x.com/notifications`\n\nMental model: act as the account. Protect it. Do not clutter it.\n\n### Role: `tw-engage`\n\nSearch and discovery radar. Use to find what deserves action.\n\nUse for:\n- keyword searches\n- live searches\n- monitoring public conversations\n- finding potential replies\n- competitor observation\n- news or trend discovery\n\nDefault page:\n`https://x.com/search?q=<NICHE_KEYWORDS_URL_ENCODED>&f=live`\n\nMental model: discover, qualify, decide. Do not post impulsively from discovery.\n\n### Role: `tw-stealth`\n\nQuiet maintenance bay. Use for low-noise maintenance.\n\nUse for:\n- following cleanup\n- list or account curation\n- quiet profile review\n- non-public maintenance\n\nDefault page: `https://x.com/home`\n\nMental model: maintain quietly. No noisy engagement.\n\n### Operational law\n\n- `tw-post` = act as the account\n- `tw-engage` = discover what to react to\n- `tw-stealth` = maintain quietly\n- stability matters more than speed\n\nNever collapse all workflows into chaotic browsing.\n\n---\n\n## 2. Human-like browser behavior\n\n### Open the right page first\n\nDo not begin from a random existing tab.\n\nExamples:\n- notifications check → `https://x.com/notifications`\n- keyword monitor → live search URL\n- reply pass → search or candidate conversation first, then account action\n- original post → clean composer flow\n- metrics recap → profile or analytics\n- result publish → site result page first, then clean X composer\n\n### Let the page load\n\nAfter opening a page:\n- wait for visible content\n- confirm the session is logged in\n- confirm the UI is interactive\n- only then act\n\nNever click or type into half-loaded pages.\n\n### Read before acting\n\nFirst real action is observation.\n\nBefore any public action:\n- read the page\n- understand the thread or notification\n- check whether the brand can add real value\n- check reputational risk\n\n### Click carefully\n\nClick once. Then verify.\n\nAfter each click, confirm:\n- the expected panel opened\n- the expected thread loaded\n- the composer is active if needed\n- no wrong account or wrong tab is active\n\nNo stacked clicks. No impatient double-clicking.\n\n### Type carefully\n\nBefore submitting:\n- focus the field\n- paste or type once\n- verify the full text appeared\n- verify spacing, links, and media\n- verify the tone is brand-safe\n\n### Keep one task per tab\n\nEach tab needs one purpose.\n\nWhen done:\n- close extra tabs\n- close stale composers\n- return to a resting page\n\nSafe resting page: `https://x.com/notifications`\n\n### Protect the account\n\nNever publish just because a cron fired.\n\nIf the slot is weak:\n- use a stronger fallback\n- draft locally\n- or do nothing\n\nQuality protects the brand.\n\n---\n\n## 3. Cron-by-cron guide\n\n### Weekly Planning\n\nRole: no browser required first. Use `tw-engage` only if checking live topics.\n\nGoal: plan a credible week of content.\n\nInteraction style:\n1. Read local memory, post log, reply log, ideas, learnings.\n2. Use your site pages as source priority.\n3. If browsing X, use search/discovery discipline.\n4. Produce a plan, not spam.\n\nAvoid:\n- inventing performance data\n- planning too many posts\n- weak angles\n\n### Notifications Check\n\nRole: `tw-post`\n\nFirst page: `https://x.com/notifications`\n\nGoal: detect mentions, questions, useful replies, high-signal followers.\n\nInteraction style:\n1. Open notifications.\n2. Wait until feed is usable.\n3. Read before acting.\n4. Reply only if useful, safe, and on-topic.\n5. Like only when appropriate.\n6. Inspect profiles before follow-back.\n\nAvoid:\n- replying to everything\n- generic filler\n- expert-grade advice on a precise personal case\n- escalating polemics\n\n### Keyword Monitor (morning / midday / evening)\n\nRole: `tw-engage`\n\nFirst page: live search URL with brand keywords.\n\nGoal: identify qualified public conversations.\n\nInteraction style:\n1. Open live search.\n2. Scan newest relevant posts.\n3. Open promising items only.\n4. Evaluate freshness, source, relevance, and fit.\n5. Capture candidates.\n6. Do not force action if nothing is strong.\n\nAvoid:\n- treating stale content as urgent\n- replying to trolls\n- posting from raw impulse\n- using `tw-post` for casual discovery unless only one physical profile exists\n\n### Reply Pass (midday / afternoon / evening)\n\nRole: discovery in `tw-engage`, public action in `tw-post`.\n\nFirst page: candidate conversation or live search.\n\nGoal: send at most 2 useful replies per run.\n\nInteraction style:\n1. Review candidate conversations.\n2. Read full visible context.\n3. Draft concise, useful, prudent reply.\n4. Check: no promise, no exact advice, no aggressive CTA.\n5. Publish only if value is clear.\n6. Log the reply.\n\nAvoid:\n- generic replies\n- repeating the same CTA\n- giving a private consultation in public\n- engaging hostile threads\n\n### Original Post — Morning\n\nRole: `tw-post`\n\nFirst page: clean composer flow.\n\nGoal: publish one practical, answer-first post.\n\nInteraction style:\n1. Read post log and ideas first.\n2. Choose a fresh topic.\n3. Draft locally before composer.\n4. Open composer only when copy is ready.\n5. Paste once.\n6. Verify final text.\n7. Publish.\n8. Confirm the post went live.\n9. Update post log.\n\nAvoid:\n- duplicate topics\n- weak filler\n- posting without final verification\n\n### Original Post — Noon\n\nRole: `tw-post`\n\nGoal: publish a sober news / myth-vs-reality / threshold / deadline post.\n\nInteraction style:\n- same as morning\n- verify any factual claim before posting\n- if the source is weak, do not publish\n\nAvoid:\n- sensationalism\n- uncertain claims\n- clickbait\n\n### Original Post — Evening\n\nRole: `tw-post`\n\nGoal: publish a practical case study, common mistake, or field-specific tip.\n\nInteraction style:\n- draft locally\n- anonymize everything\n- avoid identifiable client/customer facts\n- publish only if useful\n\nAvoid:\n- exposing client/case details\n- implying guaranteed results\n- emotional pressure tactics\n\n### Thread Generator (Tue / Fri)\n\nRole: `tw-post`\n\nFirst page: clean composer/thread flow.\n\nGoal: publish one pedagogical thread from existing site content.\n\nInteraction style:\n1. Select a source page or article.\n2. Draft full thread locally.\n3. One idea per tweet.\n4. Verify prudence and readability.\n5. Open composer.\n6. Build thread carefully.\n7. Check order before publishing.\n8. Publish once.\n9. Confirm live thread.\n10. Update post log.\n\nAvoid:\n- building directly in browser without local fallback\n- losing thread text\n- publishing if composer is unstable\n\n### Result / Win Publish\n\nRole: `tw-post`\n\nGoal: publish a short, sober, anonymized post if a new result page exists on `<BRAND_DOMAIN>`.\n\nInteraction style:\n1. Check the site first.\n2. Confirm the result is public.\n3. Draft a cautious post.\n4. Do not add private details.\n5. Publish only if the result is new and appropriate.\n\nAvoid:\n- duplicating old results\n- overclaiming\n- promising the same outcome to others\n\n### Daily Metrics Recap\n\nRole: `tw-post` if metrics require profile or analytics.\n\nFirst page: profile, then analytics only if usable.\n\nGoal: capture real daily observations and recommendations.\n\nInteraction style:\n1. Review post log and reply log.\n2. Open profile if needed.\n3. Record visible metrics only.\n4. If analytics is broken, say so.\n5. Do not invent numbers.\n\nAvoid:\n- fake metrics\n- strategy claims unsupported by visible data\n\n---\n\n## 4. Recovery and failure handling\n\n### Browser down\n\n1. Restart only the affected profile.\n2. Reopen its default page.\n3. Confirm logged-in state.\n4. Confirm UI interactivity.\n5. Resume only after checks pass.\n\n### Browser frozen\n\n1. Reload expected page once.\n2. If still broken, restart browser profile.\n3. Reopen default page.\n4. Check interactivity.\n5. If still broken, report exact blocker.\n\n### `tw-post` / account cockpit unstable\n\nTreat as critical.\n\nDo not post, reply, DM, like, or follow until stable.\n\nRecovery:\n1. Stop public action.\n2. Close stale composer if possible.\n3. Restart browser profile if needed.\n4. Open notifications.\n5. Confirm simple navigation works.\n6. Continue only if stable.\n\n### Too many tabs\n\n1. List tabs.\n2. Keep the necessary working tab.\n3. Close duplicate or stale tabs.\n4. Return to resting page.\n\n### Page loaded but unusable\n\n1. Verify failure is real.\n2. Refresh once.\n3. If still broken, record blocker.\n4. Use fallback if available.\n5. Never hallucinate state.\n\n### Composer stuck\n\n1. Stop adding inputs.\n2. Inspect once.\n3. Close composer cleanly if possible.\n4. Retry one clean time only.\n5. If still broken, save locally and abort.\n\n### Cron cannot safely complete\n\n1. Stop.\n2. Preserve browser stability.\n3. Report exact blocker.\n4. Do not fake completion.\n\n---\n\n## 5. Anti-patterns\n\nNever:\n- mix all workflows chaotically\n- guess without reading the UI\n- leave cluttered tabs\n- force posts when the slot is weak\n- reply generically\n- use noisy engagement during maintenance\n- act like a script\n- publish expert-grade advice on a specific personal case\n- promise a result\n- denigrate anyone\n- post at night (off-brand windows)\n- invent analytics\n\n---\n\n## 6. Final doctrine\n\nChoose the correct role.\nOpen the correct page.\nLet the UI load.\nRead before acting.\nClick once.\nVerify the result.\nRecover cleanly when broken.\nLeave the browser cleaner than you found it.\n\n`tw-post` = act as the account.\n`tw-engage` = discover what to react to.\n`tw-stealth` = maintain quietly.\n\n**Stability matters more than speed.**\n\n---\n\n## 7. First-run checklist\n\nBefore enabling any cron, run through this checklist:\n\n- [ ] Section 0 placeholders filled in your local copy / agent memory.\n- [ ] X account profile bio is brand-aligned but not aggressively promotional.\n- [ ] Browser profile launched at `http://127.0.0.1:<BROWSER_PORT>` and logged in.\n- [ ] Loading `https://x.com/notifications` from your profile renders the feed (= session OK).\n- [ ] `<WORKSPACE_DIR>/memory/` directory exists with the memory files used by your crons (post log, reply log, ideas, learnings, recaps).\n- [ ] Alert channel (Telegram / Slack / Discord) webhook tested with a \"hello\" message.\n- [ ] At least 1 week of manual posting before letting automation drive the account — establishes a baseline tone and avoids day-1 algorithmic flags.\n\nA bash one-liner to init the memory files:\n\n```bash\nmkdir -p \"<WORKSPACE_DIR>/memory\" && cd \"$_\" && touch x-recaps.md x-post-log.md x-reply-log.md x-ideas.md x-learnings.md x-metrics-log.md\n```\n\n(The GitHub repo ships an `init-memory.sh` script that does the same interactively.)\n\n---\n\n## 8. Reply skeletons (drop-in templates)\n\nThese are *skeletons*, not finished replies — fill the brackets, then humanize.\n\n### Skeleton A — Answer-first (most replies)\n\n```\n[Direct answer in 1 sentence, no hedging].\n\n[1-2 sentences of reasoning or the underlying rule].\n\n[Optional: 1 concrete next step the OP can take themselves].\n```\n\n### Skeleton B — Empathy + redirect (sensitive topic)\n\n```\nThat's a tough spot.\n\n[1 sentence that validates without overclaiming \"I know what you're going through\"].\n\nThe general framework here is [...]. A specialist in [...] can review your specific situation.\n```\n\n### Skeleton C — Correction (politely)\n\n```\nSmall precision: [the corrected fact, sourced if possible].\n\n[Why it matters in 1 sentence].\n\n(Not blaming OP — common confusion).\n```\n\n### What to never paste verbatim\n\n- Anything with `[bracket]` placeholders still in it (final read-through is mandatory).\n- The exact same skeleton more than twice in a 7-day window — vary the structure.\n\n---\n\n## 9. FAQ\n\n**Q: Do I need OpenClaw to use this skill?**\nA: No. OpenClaw browser CLI is the example stack — the doctrine works with Playwright, Puppeteer, Chrome MCP, or any CDP-capable tool. Swap the CLI calls.\n\n**Q: Can I use this skill for multiple X accounts?**\nA: Yes — clone the workspace dir per account. Each account gets its own `memory/` and its own browser profile. Use a different `<BROWSER_PORT>` per account so they don't collide.\n\n**Q: How does this interact with X API rate limits?**\nA: The skill is browser-driven, not API-driven — you're not consuming X API quota. You are, however, subject to X's behavioral throttling on the UI side, which is exactly why the doctrine caps actions per role and per minute.\n\n**Q: Should I post threads or single tweets?**\nA: Default to single tweets. Run a thread once per week max (Tue or Fri) when you have actual depth worth a thread. Threads-for-the-sake-of-threads get under-engaged.\n\n**Q: What about X Premium / Blue / verification?**\nA: Orthogonal. The doctrine doesn't change. Verified accounts get slightly more leeway on rate limits but also more visibility for any misstep — so the discipline matters more, not less.\n\n**Q: What if X bans/suspends my account?**\nA: Stop everything. Do not appeal automatically. Manual review only. Document the suspension in `x-learnings.md` with the exact last 5 actions before suspension.\n\nFile v1.0.2:README.md\n\n# X / Twitter Account Operations\n\n> Operating doctrine for X / Twitter automation — stable Chrome sessions, role separation, careful posting, reply discipline, recovery patterns.\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-blue.svg)](https://opensource.org/licenses/MIT-0)\n[![ClawHub](https://img.shields.io/badge/ClawHub-Published-orange)](https://clawhub.ai/alexbloch-ia/twitter-account-operations)\n[![Version](https://img.shields.io/badge/version-1.1.0-green)](#changelog)\n\nA Claude Code / OpenClaw skill for running X brand accounts safely. Battle-tested in a regulated-field operation, ported to be domain-agnostic.\n\n**Why most X automation looks robotic and gets throttled**: it treats the browser like an API. This doctrine doesn't.\n\n---\n\n## What's in the box\n\n- **3-role mental model** for any X account (`tw-post` / `tw-engage` / `tw-stealth`)\n- **Human-like browser discipline**: open the right page first, let the UI load, read before clicking, click once and verify\n- **Full cron-by-cron playbook**: weekly planning, notifications check, keyword monitor (morning/midday/evening), reply pass, original posts (morning/noon/evening), thread generator, result publish, daily metrics recap\n- **Strict reply qualification** — no impulse posting, no generic CTAs, no expert-grade advice in public\n- **Full recovery playbook**: browser down, browser frozen, account cockpit unstable, too many tabs, composer stuck, page unusable\n- **Explicit anti-patterns** to avoid\n\n---\n\n## Install\n\n### Via ClawHub (recommended)\n\nThe skill is published on ClawHub — install in one click from your agent:\n\n👉 **<https://clawhub.ai/alexbloch-ia/twitter-account-operations>**\n\n### Via this repository (manual)\n\nClone and run the install script — it copies `SKILL.md` into your local skills directory.\n\n```bash\ngit clone https://github.com/AlexBloch-IA/twitter-account-operations.git\ncd twitter-account-operations\n./install.sh\n```\n\nThe script detects which agent stack you have and copies the skill there:\n\n- `~/.claude/skills/twitter-account-operations/` (Claude Code)\n- `~/.openclaw/skills/twitter-account-operations/` (OpenClaw)\n- Both if both are present.\n\n### Manual copy\n\n```bash\nmkdir -p ~/.claude/skills/twitter-account-operations\ncp SKILL.md ~/.claude/skills/twitter-account-operations/\n```\n\n---\n\n## Quick start\n\n1. Open `SKILL.md` and fill the placeholders in **Section 0** (brand, domain, handle, browser profile, port, niche keywords, workspace dir).\n2. Wire your crons to follow the doctrine (right page first, read before acting, verify after each action).\n3. **Always have a local draft fallback** — never compose directly in the browser without backup.\n\nShell snippets in the skill use the [OpenClaw](https://openclaw.ai) browser CLI as an example automation stack. Swap them for Playwright, Puppeteer, Chrome MCP, or any CDP-capable tool you prefer — the doctrine is stack-agnostic.\n\n---\n\n## Who is this for\n\nAny niche where the brand needs to be a *background* signal behind genuinely useful posts:\n\n- **Legal services** (origin of the doctrine — works under strict bar association rules)\n- **Medical / health** practitioners with public-content strategies\n- **Financial advisors** subject to compliance constraints\n- **SaaS / B2B founders** doing community-led growth\n- **Creators / agencies** managing brand accounts on behalf of clients\n\nAnywhere account safety > raw reach.\n\n---\n\n## Repository structure\n\n```\ntwitter-account-operations/\n├── SKILL.md         # the skill (full doctrine)\n├── README.md        # this file\n├── LICENSE          # MIT-0\n├── install.sh       # auto-install into ~/.claude/skills or ~/.openclaw/skills\n└── CHANGELOG.md     # version history\n```\n\n---\n\n## Companion skill\n\nFor Reddit, see **[reddit-account-operations](https://github.com/AlexBloch-IA/reddit-account-operations)** — same doctrine, ported to Reddit with karma-phased posting and sub-state tracking.\n\n---\n\n## License\n\nReleased under **MIT-0** (MIT No Attribution). Use, fork, adapt, redistribute. No attribution required.\n\n---\n\n## Author\n\n[Alexandre Bloch](https://github.com/AlexBloch-IA) — founder of [OpenClaw](https://openclaw.ai).\nPublished on [ClawHub](https://clawhub.ai/alexbloch-ia).\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7f6shzecv3qv3wrr074s49f986ybe1\",\n  \"slug\": \"twitter-account-operations\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1784214207739\n}\n\nFile v1.0.2:skill-card.md\n\n## Description:\n\nOperating doctrine for X/Twitter account automation with stable Chrome sessions, role separation, human-like interaction, careful posting, reply discipline, and recovery patterns.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[alexbloch-ia](https://clawhub.ai/user/alexbloch-ia)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal operators, developers, and agents managing X/Twitter brand accounts use this skill to plan posts, monitor keywords, qualify replies, recap metrics, and recover browser sessions with human review and reputation controls.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The README's manual GitHub install path can execute a mutable remote install script.\n\nMitigation: Install through ClawHub or manually copy the reviewed SKILL.md; inspect and pin the repository before using the GitHub ./install.sh path.\n\nRisk: Browser-driven account operations can publish, reply, like, follow, or otherwise affect a public X account.\n\nMitigation: Enable the skill only for accounts you control, keep clear schedules and workspace logs, and require human review for sensitive or high-risk posts.\n\nRisk: Automated social posting can produce generic, unsupported, or reputationally unsafe content if a cron forces action.\n\nMitigation: Use local drafts, verify factual claims before posting, skip weak slots, and follow the skill's reply qualification and recovery checkpoints.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/alexbloch-ia/skills/twitter-account-operations)\n- [OpenClaw](https://openclaw.ai)\n- [Claude Code](https://claude.ai/code)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown instructions with YAML configuration and shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes role-based browser operating guidance, cron routines, checklists, reply skeletons, recovery steps, and local draft and logging expectations.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.1: 4 files, 10894 bytes\n\nFiles: README.md (4259b), skill-card.md (2780b), SKILL.md (17130b), _meta.json (145b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: twitter-account-operations\ndescription: Operating doctrine for X/Twitter account automation — stable Chrome sessions, role separation (post / engage / stealth), human-like interaction, careful posting, reply discipline, recovery patterns. Use this for any scheduled X activity (cron, agent, recurring task) where account safety and long-term reputation matter more than raw output.\n---\n\n# X / Twitter Account Operations\n\nThis skill is the operating doctrine for every X/Twitter automation run on a brand, professional or personal account.\n\n**The goal is not to click fast. The goal is to operate Chrome like a careful human operator: stable browser, correct context, useful action, no spam, no reputational risk.**\n\nDrop-in for any niche (legal, medical, software, finance, creator, ecommerce). Replace the placeholders in section 0 with your own values.\n\n---\n\n## 0. Configure for your brand\n\nBefore running anything, fill these placeholders in your local copy or your agent's memory:\n\n| Placeholder | Example | Your value |\n|---|---|---|\n| `<BRAND_NAME>` | \"Acme Studio\" | — |\n| `<BRAND_DOMAIN>` | \"acme.studio\" | — |\n| `<X_HANDLE>` | \"@AcmeStudio\" | — |\n| `<BROWSER_PROFILE>` | \"x-live\" | — |\n| `<BROWSER_PORT>` | \"9222\" | — |\n| `<NICHE_KEYWORDS>` | \"retrait permis OR contester amende\" | — |\n| `<WORKSPACE_DIR>` | \"~/.openclaw/workspace/twitter-<brand>\" | — |\n\nAll shell snippets below assume an [OpenClaw](https://openclaw.ai) browser CLI bound by CDP, but the doctrine works with any browser-automation stack (Playwright, Puppeteer, Chrome MCP). Swap the CLI calls for your own.\n\n### Quick config (copy-paste YAML)\n\nIf your agent reads config from YAML, drop this in `<WORKSPACE_DIR>/config.yaml`:\n\n```yaml\nbrand:\n  name: <BRAND_NAME>\n  domain: <BRAND_DOMAIN>\n\nx:\n  handle: <X_HANDLE>                 # e.g. \"@AcmeStudio\"\n  browser_profile: <BROWSER_PROFILE> # e.g. \"x-live\"\n  browser_port: <BROWSER_PORT>       # e.g. 9222\n\ndiscovery:\n  niche_keywords: <NICHE_KEYWORDS>   # e.g. \"retrait permis OR contester amende\"\n\nworkspace:\n  dir: <WORKSPACE_DIR>               # e.g. \"~/.openclaw/workspace/twitter-acme\"\n\nalerts:\n  channel: telegram | slack | discord\n  webhook: <YOUR_WEBHOOK_URL>\n\nschedule:\n  timezone: Europe/Paris             # everything else is relative to this\n  windows:\n    morning_post:   \"09:00\"\n    noon_post:      \"12:30\"\n    evening_post:   \"18:00\"\n    reply_passes:   [\"11:00\", \"15:00\", \"19:30\"]\n    metrics_recap:  \"21:30\"\n```\n\n### Compatibility\n\nThe skill is markdown — it works wherever an agent reads `SKILL.md`:\n\n| Stack | Skill install path |\n|---|---|\n| [Claude Code](https://claude.ai/code) | `~/.claude/skills/twitter-account-operations/` |\n| [OpenClaw](https://openclaw.ai) | `~/.openclaw/skills/twitter-account-operations/` |\n| ClawHub-published | one-click install via [clawhub.ai](https://clawhub.ai/alexbloch-ia/twitter-account-operations) |\n| Cursor / Copilot CLI | drop `SKILL.md` into your project's `.cursorrules` or `AGENTS.md` |\n| Any LLM agent reading markdown rules | concatenate `SKILL.md` into your system prompt |\n\n---\n\n## 1. Browser architecture\n\n### Physical profile\n\nThe active browser profile is:\n\n- `<BROWSER_PROFILE>` (CDP direct profile attached to `http://127.0.0.1:<BROWSER_PORT>`)\n\nUse it through the OpenClaw browser CLI when the cron has no browser tool:\n\n```bash\nopenclaw browser --browser-profile <BROWSER_PROFILE> status\nopenclaw browser --browser-profile <BROWSER_PROFILE> tabs\nopenclaw browser --browser-profile <BROWSER_PROFILE> open https://x.com/notifications\nopenclaw browser --browser-profile <BROWSER_PROFILE> snapshot --limit 160\nopenclaw browser --browser-profile <BROWSER_PROFILE> click <ref>\nopenclaw browser --browser-profile <BROWSER_PROFILE> type <ref> \"text\"\nopenclaw browser --browser-profile <BROWSER_PROFILE> press Enter\n```\n\nThe profiles `tw-post`, `tw-engage`, and `tw-stealth` below are **operating roles**, not necessarily separate physical profiles. With one physical profile, keep the same separation by workflow, tab discipline, and resting page.\n\n### Role: `tw-post`\n\nMain account cockpit. Use for direct account action.\n\nUse for:\n- original posts\n- threads\n- replies sent from the account\n- notifications\n- DMs if enabled\n- profile checks\n- metrics visible on profile or analytics\n- result posts\n\nDefault page: `https://x.com/notifications`\n\nMental model: act as the account. Protect it. Do not clutter it.\n\n### Role: `tw-engage`\n\nSearch and discovery radar. Use to find what deserves action.\n\nUse for:\n- keyword searches\n- live searches\n- monitoring public conversations\n- finding potential replies\n- competitor observation\n- news or trend discovery\n\nDefault page:\n`https://x.com/search?q=<NICHE_KEYWORDS_URL_ENCODED>&f=live`\n\nMental model: discover, qualify, decide. Do not post impulsively from discovery.\n\n### Role: `tw-stealth`\n\nQuiet maintenance bay. Use for low-noise maintenance.\n\nUse for:\n- following cleanup\n- list or account curation\n- quiet profile review\n- non-public maintenance\n\nDefault page: `https://x.com/home`\n\nMental model: maintain quietly. No noisy engagement.\n\n### Operational law\n\n- `tw-post` = act as the account\n- `tw-engage` = discover what to react to\n- `tw-stealth` = maintain quietly\n- stability matters more than speed\n\nNever collapse all workflows into chaotic browsing.\n\n---\n\n## 2. Human-like browser behavior\n\n### Open the right page first\n\nDo not begin from a random existing tab.\n\nExamples:\n- notifications check → `https://x.com/notifications`\n- keyword monitor → live search URL\n- reply pass → search or candidate conversation first, then account action\n- original post → clean composer flow\n- metrics recap → profile or analytics\n- result publish → site result page first, then clean X composer\n\n### Let the page load\n\nAfter opening a page:\n- wait for visible content\n- confirm the session is logged in\n- confirm the UI is interactive\n- only then act\n\nNever click or type into half-loaded pages.\n\n### Read before acting\n\nFirst real action is observation.\n\nBefore any public action:\n- read the page\n- understand the thread or notification\n- check whether the brand can add real value\n- check reputational risk\n\n### Click carefully\n\nClick once. Then verify.\n\nAfter each click, confirm:\n- the expected panel opened\n- the expected thread loaded\n- the composer is active if needed\n- no wrong account or wrong tab is active\n\nNo stacked clicks. No impatient double-clicking.\n\n### Type carefully\n\nBefore submitting:\n- focus the field\n- paste or type once\n- verify the full text appeared\n- verify spacing, links, and media\n- verify the tone is brand-safe\n\n### Keep one task per tab\n\nEach tab needs one purpose.\n\nWhen done:\n- close extra tabs\n- close stale composers\n- return to a resting page\n\nSafe resting page: `https://x.com/notifications`\n\n### Protect the account\n\nNever publish just because a cron fired.\n\nIf the slot is weak:\n- use a stronger fallback\n- draft locally\n- or do nothing\n\nQuality protects the brand.\n\n---\n\n## 3. Cron-by-cron guide\n\n### Weekly Planning\n\nRole: no browser required first. Use `tw-engage` only if checking live topics.\n\nGoal: plan a credible week of content.\n\nInteraction style:\n1. Read local memory, post log, reply log, ideas, learnings.\n2. Use your site pages as source priority.\n3. If browsing X, use search/discovery discipline.\n4. Produce a plan, not spam.\n\nAvoid:\n- inventing performance data\n- planning too many posts\n- weak angles\n\n### Notifications Check\n\nRole: `tw-post`\n\nFirst page: `https://x.com/notifications`\n\nGoal: detect mentions, questions, useful replies, high-signal followers.\n\nInteraction style:\n1. Open notifications.\n2. Wait until feed is usable.\n3. Read before acting.\n4. Reply only if useful, safe, and on-topic.\n5. Like only when appropriate.\n6. Inspect profiles before follow-back.\n\nAvoid:\n- replying to everything\n- generic filler\n- expert-grade advice on a precise personal case\n- escalating polemics\n\n### Keyword Monitor (morning / midday / evening)\n\nRole: `tw-engage`\n\nFirst page: live search URL with brand keywords.\n\nGoal: identify qualified public conversations.\n\nInteraction style:\n1. Open live search.\n2. Scan newest relevant posts.\n3. Open promising items only.\n4. Evaluate freshness, source, relevance, and fit.\n5. Capture candidates.\n6. Do not force action if nothing is strong.\n\nAvoid:\n- treating stale content as urgent\n- replying to trolls\n- posting from raw impulse\n- using `tw-post` for casual discovery unless only one physical profile exists\n\n### Reply Pass (midday / afternoon / evening)\n\nRole: discovery in `tw-engage`, public action in `tw-post`.\n\nFirst page: candidate conversation or live search.\n\nGoal: send at most 2 useful replies per run.\n\nInteraction style:\n1. Review candidate conversations.\n2. Read full visible context.\n3. Draft concise, useful, prudent reply.\n4. Check: no promise, no exact advice, no aggressive CTA.\n5. Publish only if value is clear.\n6. Log the reply.\n\nAvoid:\n- generic replies\n- repeating the same CTA\n- giving a private consultation in public\n- engaging hostile threads\n\n### Original Post — Morning\n\nRole: `tw-post`\n\nFirst page: clean composer flow.\n\nGoal: publish one practical, answer-first post.\n\nInteraction style:\n1. Read post log and ideas first.\n2. Choose a fresh topic.\n3. Draft locally before composer.\n4. Open composer only when copy is ready.\n5. Paste once.\n6. Verify final text.\n7. Publish.\n8. Confirm the post went live.\n9. Update post log.\n\nAvoid:\n- duplicate topics\n- weak filler\n- posting without final verification\n\n### Original Post — Noon\n\nRole: `tw-post`\n\nGoal: publish a sober news / myth-vs-reality / threshold / deadline post.\n\nInteraction style:\n- same as morning\n- verify any factual claim before posting\n- if the source is weak, do not publish\n\nAvoid:\n- sensationalism\n- uncertain claims\n- clickbait\n\n### Original Post — Evening\n\nRole: `tw-post`\n\nGoal: publish a practical case study, common mistake, or field-specific tip.\n\nInteraction style:\n- draft locally\n- anonymize everything\n- avoid identifiable client/customer facts\n- publish only if useful\n\nAvoid:\n- exposing client/case details\n- implying guaranteed results\n- emotional pressure tactics\n\n### Thread Generator (Tue / Fri)\n\nRole: `tw-post`\n\nFirst page: clean composer/thread flow.\n\nGoal: publish one pedagogical thread from existing site content.\n\nInteraction style:\n1. Select a source page or article.\n2. Draft full thread locally.\n3. One idea per tweet.\n4. Verify prudence and readability.\n5. Open composer.\n6. Build thread carefully.\n7. Check order before publishing.\n8. Publish once.\n9. Confirm live thread.\n10. Update post log.\n\nAvoid:\n- building directly in browser without local fallback\n- losing thread text\n- publishing if composer is unstable\n\n### Result / Win Publish\n\nRole: `tw-post`\n\nGoal: publish a short, sober, anonymized post if a new result page exists on `<BRAND_DOMAIN>`.\n\nInteraction style:\n1. Check the site first.\n2. Confirm the result is public.\n3. Draft a cautious post.\n4. Do not add private details.\n5. Publish only if the result is new and appropriate.\n\nAvoid:\n- duplicating old results\n- overclaiming\n- promising the same outcome to others\n\n### Daily Metrics Recap\n\nRole: `tw-post` if metrics require profile or analytics.\n\nFirst page: profile, then analytics only if usable.\n\nGoal: capture real daily observations and recommendations.\n\nInteraction style:\n1. Review post log and reply log.\n2. Open profile if needed.\n3. Record visible metrics only.\n4. If analytics is broken, say so.\n5. Do not invent numbers.\n\nAvoid:\n- fake metrics\n- strategy claims unsupported by visible data\n\n---\n\n## 4. Recovery and failure handling\n\n### Browser down\n\n1. Restart only the affected profile.\n2. Reopen its default page.\n3. Confirm logged-in state.\n4. Confirm UI interactivity.\n5. Resume only after checks pass.\n\n### Browser frozen\n\n1. Reload expected page once.\n2. If still broken, restart browser profile.\n3. Reopen default page.\n4. Check interactivity.\n5. If still broken, report exact blocker.\n\n### `tw-post` / account cockpit unstable\n\nTreat as critical.\n\nDo not post, reply, DM, like, or follow until stable.\n\nRecovery:\n1. Stop public action.\n2. Close stale composer if possible.\n3. Restart browser profile if needed.\n4. Open notifications.\n5. Confirm simple navigation works.\n6. Continue only if stable.\n\n### Too many tabs\n\n1. List tabs.\n2. Keep the necessary working tab.\n3. Close duplicate or stale tabs.\n4. Return to resting page.\n\n### Page loaded but unusable\n\n1. Verify failure is real.\n2. Refresh once.\n3. If still broken, record blocker.\n4. Use fallback if available.\n5. Never hallucinate state.\n\n### Composer stuck\n\n1. Stop adding inputs.\n2. Inspect once.\n3. Close composer cleanly if possible.\n4. Retry one clean time only.\n5. If still broken, save locally and abort.\n\n### Cron cannot safely complete\n\n1. Stop.\n2. Preserve browser stability.\n3. Report exact blocker.\n4. Do not fake completion.\n\n---\n\n## 5. Anti-patterns\n\nNever:\n- mix all workflows chaotically\n- guess without reading the UI\n- leave cluttered tabs\n- force posts when the slot is weak\n- reply generically\n- use noisy engagement during maintenance\n- act like a script\n- publish expert-grade advice on a specific personal case\n- promise a result\n- denigrate anyone\n- post at night (off-brand windows)\n- invent analytics\n\n---\n\n## 6. Final doctrine\n\nChoose the correct role.\nOpen the correct page.\nLet the UI load.\nRead before acting.\nClick once.\nVerify the result.\nRecover cleanly when broken.\nLeave the browser cleaner than you found it.\n\n`tw-post` = act as the account.\n`tw-engage` = discover what to react to.\n`tw-stealth` = maintain quietly.\n\n**Stability matters more than speed.**\n\n---\n\n## 7. First-run checklist\n\nBefore enabling any cron, run through this checklist:\n\n- [ ] Section 0 placeholders filled in your local copy / agent memory.\n- [ ] X account profile bio is brand-aligned but not aggressively promotional.\n- [ ] Browser profile launched at `http://127.0.0.1:<BROWSER_PORT>` and logged in.\n- [ ] Loading `https://x.com/notifications` from your profile renders the feed (= session OK).\n- [ ] `<WORKSPACE_DIR>/memory/` directory exists with the memory files used by your crons (post log, reply log, ideas, learnings, recaps).\n- [ ] Alert channel (Telegram / Slack / Discord) webhook tested with a \"hello\" message.\n- [ ] At least 1 week of manual posting before letting automation drive the account — establishes a baseline tone and avoids day-1 algorithmic flags.\n\nA bash one-liner to init the memory files:\n\n```bash\nmkdir -p \"<WORKSPACE_DIR>/memory\" && cd \"$_\" && touch x-recaps.md x-post-log.md x-reply-log.md x-ideas.md x-learnings.md x-metrics-log.md\n```\n\n(The GitHub repo ships an `init-memory.sh` script that does the same interactively.)\n\n---\n\n## 8. Reply skeletons (drop-in templates)\n\nThese are *skeletons*, not finished replies — fill the brackets, then humanize.\n\n### Skeleton A — Answer-first (most replies)\n\n```\n[Direct answer in 1 sentence, no hedging].\n\n[1-2 sentences of reasoning or the underlying rule].\n\n[Optional: 1 concrete next step the OP can take themselves].\n```\n\n### Skeleton B — Empathy + redirect (sensitive topic)\n\n```\nThat's a tough spot.\n\n[1 sentence that validates without overclaiming \"I know what you're going through\"].\n\nThe general framework here is [...]. A specialist in [...] can review your specific situation.\n```\n\n### Skeleton C — Correction (politely)\n\n```\nSmall precision: [the corrected fact, sourced if possible].\n\n[Why it matters in 1 sentence].\n\n(Not blaming OP — common confusion).\n```\n\n### What to never paste verbatim\n\n- Anything with `[bracket]` placeholders still in it (final read-through is mandatory).\n- The exact same skeleton more than twice in a 7-day window — vary the structure.\n\n---\n\n## 9. FAQ\n\n**Q: Do I need OpenClaw to use this skill?**\nA: No. OpenClaw browser CLI is the example stack — the doctrine works with Playwright, Puppeteer, Chrome MCP, or any CDP-capable tool. Swap the CLI calls.\n\n**Q: Can I use this skill for multiple X accounts?**\nA: Yes — clone the workspace dir per account. Each account gets its own `memory/` and its own browser profile. Use a different `<BROWSER_PORT>` per account so they don't collide.\n\n**Q: How does this interact with X API rate limits?**\nA: The skill is browser-driven, not API-driven — you're not consuming X API quota. You are, however, subject to X's behavioral throttling on the UI side, which is exactly why the doctrine caps actions per role and per minute.\n\n**Q: Should I post threads or single tweets?**\nA: Default to single tweets. Run a thread once per week max (Tue or Fri) when you have actual depth worth a thread. Threads-for-the-sake-of-threads get under-engaged.\n\n**Q: What about X Premium / Blue / verification?**\nA: Orthogonal. The doctrine doesn't change. Verified accounts get slightly more leeway on rate limits but also more visibility for any misstep — so the discipline matters more, not less.\n\n**Q: What if X bans/suspends my account?**\nA: Stop everything. Do not appeal automatically. Manual review only. Document the suspension in `x-learnings.md` with the exact last 5 actions before suspension.\n\nFile v1.0.1:README.md\n\n# X / Twitter Account Operations\n\n> Operating doctrine for X / Twitter automation — stable Chrome sessions, role separation, careful posting, reply discipline, recovery patterns.\n\n[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-blue.svg)](https://opensource.org/licenses/MIT-0)\n[![ClawHub](https://img.shields.io/badge/ClawHub-Published-orange)](https://clawhub.ai/alexbloch-ia/twitter-account-operations)\n[![Version](https://img.shields.io/badge/version-1.1.0-green)](#changelog)\n\nA Claude Code / OpenClaw skill for running X brand accounts safely. Battle-tested in a regulated-field operation, ported to be domain-agnostic.\n\n**Why most X automation looks robotic and gets throttled**: it treats the browser like an API. This doctrine doesn't.\n\n---\n\n## What's in the box\n\n- **3-role mental model** for any X account (`tw-post` / `tw-engage` / `tw-stealth`)\n- **Human-like browser discipline**: open the right page first, let the UI load, read before clicking, click once and verify\n- **Full cron-by-cron playbook**: weekly planning, notifications check, keyword monitor (morning/midday/evening), reply pass, original posts (morning/noon/evening), thread generator, result publish, daily metrics recap\n- **Strict reply qualification** — no impulse posting, no generic CTAs, no expert-grade advice in public\n- **Full recovery playbook**: browser down, browser frozen, account cockpit unstable, too many tabs, composer stuck, page unusable\n- **Explicit anti-patterns** to avoid\n\n---\n\n## Install\n\n### Via ClawHub (recommended)\n\nThe skill is published on ClawHub — install in one click from your agent:\n\n👉 **<https://clawhub.ai/alexbloch-ia/twitter-account-operations>**\n\n### Via this repository (manual)\n\nClone and run the install script — it copies `SKILL.md` into your local skills directory.\n\n```bash\ngit clone https://github.com/AlexBloch-IA/twitter-account-operations.git\ncd twitter-account-operations\n./install.sh\n```\n\nThe script detects which agent stack you have and copies the skill there:\n\n- `~/.claude/skills/twitter-account-operations/` (Claude Code)\n- `~/.openclaw/skills/twitter-account-operations/` (OpenClaw)\n- Both if both are present.\n\n### Manual copy\n\n```bash\nmkdir -p ~/.claude/skills/twitter-account-operations\ncp SKILL.md ~/.claude/skills/twitter-account-operations/\n```\n\n---\n\n## Quick start\n\n1. Open `SKILL.md` and fill the placeholders in **Section 0** (brand, domain, handle, browser profile, port, niche keywords, workspace dir).\n2. Wire your crons to follow the doctrine (right page first, read before acting, verify after each action).\n3. **Always have a local draft fallback** — never compose directly in the browser without backup.\n\nShell snippets in the skill use the [OpenClaw](https://openclaw.ai) browser CLI as an example automation stack. Swap them for Playwright, Puppeteer, Chrome MCP, or any CDP-capable tool you prefer — the doctrine is stack-agnostic.\n\n---\n\n## Who is this for\n\nAny niche where the brand needs to be a *background* signal behind genuinely useful posts:\n\n- **Legal services** (origin of the doctrine — works under strict bar association rules)\n- **Medical / health** practitioners with public-content strategies\n- **Financial advisors** subject to compliance constraints\n- **SaaS / B2B founders** doing community-led growth\n- **Creators / agencies** managing brand accounts on behalf of clients\n\nAnywhere account safety > raw reach.\n\n---\n\n## Repository structure\n\n```\ntwitter-account-operations/\n├── SKILL.md         # the skill (full doctrine)\n├── README.md        # this file\n├── LICENSE          # MIT-0\n├── install.sh       # auto-install into ~/.claude/skills or ~/.openclaw/skills\n└── CHANGELOG.md     # version history\n```\n\n---\n\n## Companion skill\n\nFor Reddit, see **[reddit-account-operations](https://github.com/AlexBloch-IA/reddit-account-operations)** — same doctrine, ported to Reddit with karma-phased posting and sub-state tracking.\n\n---\n\n## License\n\nReleased under **MIT-0** (MIT No Attribution). Use, fork, adapt, redistribute. No attribution required.\n\n---\n\n## Author\n\n[Alexandre Bloch](https://github.com/AlexBloch-IA) — founder of [OpenClaw](https://openclaw.ai).\nPublished on [ClawHub](https://clawhub.ai/alexbloch-ia).\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7f6shzecv3qv3wrr074s49f986ybe1\",\n  \"slug\": \"twitter-account-operations\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1779116398870\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nOperating doctrine for X/Twitter account automation: stable Chrome sessions, role separation, human-like interaction, careful posting, reply discipline, and recovery patterns for scheduled account activity. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[alexbloch-ia](https://clawhub.ai/user/alexbloch-ia) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, developers, and account operators use this skill to guide scheduled X/Twitter posting, engagement, monitoring, metrics review, and recovery workflows while reducing account-safety and reputational risk. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can guide an agent operating a real X/Twitter account, where posts, replies, likes, follows, or DMs may create reputational, compliance, or platform-policy exposure. <br>\nMitigation: Keep human review for public actions, use the role separation and read-before-acting checks, and stop rather than publish when the account cockpit or source evidence is uncertain. <br>\nRisk: Browser profiles, account sessions, and webhook URLs used by scheduled automation may be sensitive. <br>\nMitigation: Use a dedicated browser profile, protect webhook URLs and local workspace files, and limit access to account automation credentials. <br>\nRisk: Scheduled automation may conflict with X/Twitter platform rules, legal obligations, or brand policy if it runs without supervision. <br>\nMitigation: Confirm scheduled activity against current platform rules and organizational policy before enabling cron jobs, and keep manual review for suspensions or other account enforcement events. <br>\n\n\n## Reference(s): <br>\n- [ClawHub listing](https://clawhub.ai/alexbloch-ia/twitter-account-operations) <br>\n- [Publisher profile](https://clawhub.ai/user/alexbloch-ia) <br>\n- [OpenClaw](https://openclaw.ai) <br>\n- [Claude Code](https://claude.ai/code) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, markdown, shell commands, configuration] <br>\n**Output Format:** [Markdown guidance with YAML configuration examples and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Includes placeholder-based account, browser, schedule, workspace, and webhook settings for local adaptation.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release metadata; release changelog text mentions v1.1.0) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.0: 3 files, 6494 bytes\n\nFiles: README.md (2006b), SKILL.md (12166b), _meta.json (145b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: twitter-account-operations\ndescription: Operating doctrine for X/Twitter account automation — stable Chrome sessions, role separation (post / engage / stealth), human-like interaction, careful posting, reply discipline, recovery patterns. Use this for any scheduled X activity (cron, agent, recurring task) where account safety and long-term reputation matter more than raw output.\n---\n\n# X / Twitter Account Operations\n\nThis skill is the operating doctrine for every X/Twitter automation run on a brand, professional or personal account.\n\n**The goal is not to click fast. The goal is to operate Chrome like a careful human operator: stable browser, correct context, useful action, no spam, no reputational risk.**\n\nDrop-in for any niche (legal, medical, software, finance, creator, ecommerce). Replace the placeholders in section 0 with your own values.\n\n---\n\n## 0. Configure for your brand\n\nBefore running anything, fill these placeholders in your local copy or your agent's memory:\n\n| Placeholder | Example | Your value |\n|---|---|---|\n| `<BRAND_NAME>` | \"Acme Studio\" | — |\n| `<BRAND_DOMAIN>` | \"acme.studio\" | — |\n| `<X_HANDLE>` | \"@AcmeStudio\" | — |\n| `<BROWSER_PROFILE>` | \"x-live\" | — |\n| `<BROWSER_PORT>` | \"9222\" | — |\n| `<NICHE_KEYWORDS>` | \"retrait permis OR contester amende\" | — |\n| `<WORKSPACE_DIR>` | \"~/.openclaw/workspace/twitter-<brand>\" | — |\n\nAll shell snippets below assume an [OpenClaw](https://openclaw.ai) browser CLI bound by CDP, but the doctrine works with any browser-automation stack (Playwright, Puppeteer, Chrome MCP). Swap the CLI calls for your own.\n\n---\n\n## 1. Browser architecture\n\n### Physical profile\n\nThe active browser profile is:\n\n- `<BROWSER_PROFILE>` (CDP direct profile attached to `http://127.0.0.1:<BROWSER_PORT>`)\n\nUse it through the OpenClaw browser CLI when the cron has no browser tool:\n\n```bash\nopenclaw browser --browser-profile <BROWSER_PROFILE> status\nopenclaw browser --browser-profile <BROWSER_PROFILE> tabs\nopenclaw browser --browser-profile <BROWSER_PROFILE> open https://x.com/notifications\nopenclaw browser --browser-profile <BROWSER_PROFILE> snapshot --limit 160\nopenclaw browser --browser-profile <BROWSER_PROFILE> click <ref>\nopenclaw browser --browser-profile <BROWSER_PROFILE> type <ref> \"text\"\nopenclaw browser --browser-profile <BROWSER_PROFILE> press Enter\n```\n\nThe profiles `tw-post`, `tw-engage`, and `tw-stealth` below are **operating roles**, not necessarily separate physical profiles. With one physical profile, keep the same separation by workflow, tab discipline, and resting page.\n\n### Role: `tw-post`\n\nMain account cockpit. Use for direct account action.\n\nUse for:\n- original posts\n- threads\n- replies sent from the account\n- notifications\n- DMs if enabled\n- profile checks\n- metrics visible on profile or analytics\n- result posts\n\nDefault page: `https://x.com/notifications`\n\nMental model: act as the account. Protect it. Do not clutter it.\n\n### Role: `tw-engage`\n\nSearch and discovery radar. Use to find what deserves action.\n\nUse for:\n- keyword searches\n- live searches\n- monitoring public conversations\n- finding potential replies\n- competitor observation\n- news or trend discovery\n\nDefault page:\n`https://x.com/search?q=<NICHE_KEYWORDS_URL_ENCODED>&f=live`\n\nMental model: discover, qualify, decide. Do not post impulsively from discovery.\n\n### Role: `tw-stealth`\n\nQuiet maintenance bay. Use for low-noise maintenance.\n\nUse for:\n- following cleanup\n- list or account curation\n- quiet profile review\n- non-public maintenance\n\nDefault page: `https://x.com/home`\n\nMental model: maintain quietly. No noisy engagement.\n\n### Operational law\n\n- `tw-post` = act as the account\n- `tw-engage` = discover what to react to\n- `tw-stealth` = maintain quietly\n- stability matters more than speed\n\nNever collapse all workflows into chaotic browsing.\n\n---\n\n## 2. Human-like browser behavior\n\n### Open the right page first\n\nDo not begin from a random existing tab.\n\nExamples:\n- notifications check → `https://x.com/notifications`\n- keyword monitor → live search URL\n- reply pass → search or candidate conversation first, then account action\n- original post → clean composer flow\n- metrics recap → profile or analytics\n- result publish → site result page first, then clean X composer\n\n### Let the page load\n\nAfter opening a page:\n- wait for visible content\n- confirm the session is logged in\n- confirm the UI is interactive\n- only then act\n\nNever click or type into half-loaded pages.\n\n### Read before acting\n\nFirst real action is observation.\n\nBefore any public action:\n- read the page\n- understand the thread or notification\n- check whether the brand can add real value\n- check reputational risk\n\n### Click carefully\n\nClick once. Then verify.\n\nAfter each click, confirm:\n- the expected panel opened\n- the expected thread loaded\n- the composer is active if needed\n- no wrong account or wrong tab is active\n\nNo stacked clicks. No impatient double-clicking.\n\n### Type carefully\n\nBefore submitting:\n- focus the field\n- paste or type once\n- verify the full text appeared\n- verify spacing, links, and media\n- verify the tone is brand-safe\n\n### Keep one task per tab\n\nEach tab needs one purpose.\n\nWhen done:\n- close extra tabs\n- close stale composers\n- return to a resting page\n\nSafe resting page: `https://x.com/notifications`\n\n### Protect the account\n\nNever publish just because a cron fired.\n\nIf the slot is weak:\n- use a stronger fallback\n- draft locally\n- or do nothing\n\nQuality protects the brand.\n\n---\n\n## 3. Cron-by-cron guide\n\n### Weekly Planning\n\nRole: no browser required first. Use `tw-engage` only if checking live topics.\n\nGoal: plan a credible week of content.\n\nInteraction style:\n1. Read local memory, post log, reply log, ideas, learnings.\n2. Use your site pages as source priority.\n3. If browsing X, use search/discovery discipline.\n4. Produce a plan, not spam.\n\nAvoid:\n- inventing performance data\n- planning too many posts\n- weak angles\n\n### Notifications Check\n\nRole: `tw-post`\n\nFirst page: `https://x.com/notifications`\n\nGoal: detect mentions, questions, useful replies, high-signal followers.\n\nInteraction style:\n1. Open notifications.\n2. Wait until feed is usable.\n3. Read before acting.\n4. Reply only if useful, safe, and on-topic.\n5. Like only when appropriate.\n6. Inspect profiles before follow-back.\n\nAvoid:\n- replying to everything\n- generic filler\n- expert-grade advice on a precise personal case\n- escalating polemics\n\n### Keyword Monitor (morning / midday / evening)\n\nRole: `tw-engage`\n\nFirst page: live search URL with brand keywords.\n\nGoal: identify qualified public conversations.\n\nInteraction style:\n1. Open live search.\n2. Scan newest relevant posts.\n3. Open promising items only.\n4. Evaluate freshness, source, relevance, and fit.\n5. Capture candidates.\n6. Do not force action if nothing is strong.\n\nAvoid:\n- treating stale content as urgent\n- replying to trolls\n- posting from raw impulse\n- using `tw-post` for casual discovery unless only one physical profile exists\n\n### Reply Pass (midday / afternoon / evening)\n\nRole: discovery in `tw-engage`, public action in `tw-post`.\n\nFirst page: candidate conversation or live search.\n\nGoal: send at most 2 useful replies per run.\n\nInteraction style:\n1. Review candidate conversations.\n2. Read full visible context.\n3. Draft concise, useful, prudent reply.\n4. Check: no promise, no exact advice, no aggressive CTA.\n5. Publish only if value is clear.\n6. Log the reply.\n\nAvoid:\n- generic replies\n- repeating the same CTA\n- giving a private consultation in public\n- engaging hostile threads\n\n### Original Post — Morning\n\nRole: `tw-post`\n\nFirst page: clean composer flow.\n\nGoal: publish one practical, answer-first post.\n\nInteraction style:\n1. Read post log and ideas first.\n2. Choose a fresh topic.\n3. Draft locally before composer.\n4. Open composer only when copy is ready.\n5. Paste once.\n6. Verify final text.\n7. Publish.\n8. Confirm the post went live.\n9. Update post log.\n\nAvoid:\n- duplicate topics\n- weak filler\n- posting without final verification\n\n### Original Post — Noon\n\nRole: `tw-post`\n\nGoal: publish a sober news / myth-vs-reality / threshold / deadline post.\n\nInteraction style:\n- same as morning\n- verify any factual claim before posting\n- if the source is weak, do not publish\n\nAvoid:\n- sensationalism\n- uncertain claims\n- clickbait\n\n### Original Post — Evening\n\nRole: `tw-post`\n\nGoal: publish a practical case study, common mistake, or field-specific tip.\n\nInteraction style:\n- draft locally\n- anonymize everything\n- avoid identifiable client/customer facts\n- publish only if useful\n\nAvoid:\n- exposing client/case details\n- implying guaranteed results\n- emotional pressure tactics\n\n### Thread Generator (Tue / Fri)\n\nRole: `tw-post`\n\nFirst page: clean composer/thread flow.\n\nGoal: publish one pedagogical thread from existing site content.\n\nInteraction style:\n1. Select a source page or article.\n2. Draft full thread locally.\n3. One idea per tweet.\n4. Verify prudence and readability.\n5. Open composer.\n6. Build thread carefully.\n7. Check order before publishing.\n8. Publish once.\n9. Confirm live thread.\n10. Update post log.\n\nAvoid:\n- building directly in browser without local fallback\n- losing thread text\n- publishing if composer is unstable\n\n### Result / Win Publish\n\nRole: `tw-post`\n\nGoal: publish a short, sober, anonymized post if a new result page exists on `<BRAND_DOMAIN>`.\n\nInteraction style:\n1. Check the site first.\n2. Confirm the result is public.\n3. Draft a cautious post.\n4. Do not add private details.\n5. Publish only if the result is new and appropriate.\n\nAvoid:\n- duplicating old results\n- overclaiming\n- promising the same outcome to others\n\n### Daily Metrics Recap\n\nRole: `tw-post` if metrics require profile or analytics.\n\nFirst page: profile, then analytics only if usable.\n\nGoal: capture real daily observations and recommendations.\n\nInteraction style:\n1. Review post log and reply log.\n2. Open profile if needed.\n3. Record visible metrics only.\n4. If analytics is broken, say so.\n5. Do not invent numbers.\n\nAvoid:\n- fake metrics\n- strategy claims unsupported by visible data\n\n---\n\n## 4. Recovery and failure handling\n\n### Browser down\n\n1. Restart only the affected profile.\n2. Reopen its default page.\n3. Confirm logged-in state.\n4. Confirm UI interactivity.\n5. Resume only after checks pass.\n\n### Browser frozen\n\n1. Reload expected page once.\n2. If still broken, restart browser profile.\n3. Reopen default page.\n4. Check interactivity.\n5. If still broken, report exact blocker.\n\n### `tw-post` / account cockpit unstable\n\nTreat as critical.\n\nDo not post, reply, DM, like, or follow until stable.\n\nRecovery:\n1. Stop public action.\n2. Close stale composer if possible.\n3. Restart browser profile if needed.\n4. Open notifications.\n5. Confirm simple navigation works.\n6. Continue only if stable.\n\n### Too many tabs\n\n1. List tabs.\n2. Keep the necessary working tab.\n3. Close duplicate or stale tabs.\n4. Return to resting page.\n\n### Page loaded but unusable\n\n1. Verify failure is real.\n2. Refresh once.\n3. If still broken, record blocker.\n4. Use fallback if available.\n5. Never hallucinate state.\n\n### Composer stuck\n\n1. Stop adding inputs.\n2. Inspect once.\n3. Close composer cleanly if possible.\n4. Retry one clean time only.\n5. If still broken, save locally and abort.\n\n### Cron cannot safely complete\n\n1. Stop.\n2. Preserve browser stability.\n3. Report exact blocker.\n4. Do not fake completion.\n\n---\n\n## 5. Anti-patterns\n\nNever:\n- mix all workflows chaotically\n- guess without reading the UI\n- leave cluttered tabs\n- force posts when the slot is weak\n- reply generically\n- use noisy engagement during maintenance\n- act like a script\n- publish expert-grade advice on a specific personal case\n- promise a result\n- denigrate anyone\n- post at night (off-brand windows)\n- invent analytics\n\n---\n\n## 6. Final doctrine\n\nChoose the correct role.\nOpen the correct page.\nLet the UI load.\nRead before acting.\nClick once.\nVerify the result.\nRecover cleanly when broken.\nLeave the browser cleaner than you found it.\n\n`tw-post` = act as the account.\n`tw-engage` = discover what to react to.\n`tw-stealth` = maintain quietly.\n\n**Stability matters more than speed.**\n\nFile v1.0.0:README.md\n\n# X / Twitter Account Operations\n\nAn operating doctrine for X/Twitter automation runs (cron, agent, recurring task) that prioritizes account safety and long-term reputation over raw output.\n\n## What this skill gives you\n\n- A 3-role mental model for any X account (post / engage / stealth)\n- Human-like browser discipline (open the right page, let it load, read before clicking)\n- A cron-by-cron playbook: notifications, keyword monitor, reply pass, original posts, threads, result publish, daily metrics\n- Strict reply qualification (no impulse posting, no generic CTAs)\n- Recovery patterns for every common failure mode (browser down, composer stuck, page unusable)\n- Explicit anti-patterns to avoid\n\n## How to use it\n\n1. **Install the skill** in your agent / Claude Code / OpenClaw workspace.\n2. **Fill the placeholders** in section 0 of `SKILL.md` (brand, domain, handle, browser profile, port, keywords, workspace dir).\n3. **Wire your crons** to follow the doctrine (right page first, read before acting, verify after each action).\n4. **Always have a local draft fallback** — never compose directly in the browser without backup.\n\n## Domain-agnostic\n\nThe doctrine was extracted from a brand-safe operation in a regulated field. It applies as-is to any niche where account safety and credibility matter more than reach: legal, medical, financial, SaaS, creator economy.\n\n## Requirements\n\n- Any browser automation stack with CDP access (OpenClaw, Playwright, Puppeteer, Chrome MCP). Shell snippets in the skill use the OpenClaw CLI — swap them if you use a different stack.\n- A memory location for stateful tracking (post log, reply log, ideas, learnings).\n- An alert channel (Telegram / Slack / Discord) for run recaps.\n\n## Pairs well with\n\n- `reddit-account-operations` — same doctrine, ported to Reddit.\n\n## License\n\nMIT-0 (No Attribution) — use, fork, adapt, redistribute, no attribution required.\n\n## Source\n\nOriginally developed at [openclaw.ai](https://openclaw.ai). Published on ClawHub.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7f6shzecv3qv3wrr074s49f986ybe1\",\n  \"slug\": \"twitter-account-operations\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779115317247\n}","readmeExcerpt":"Skill: X / Twitter Account Operations Owner: alexbloch-ia Summary: Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\". Tags: account-safety:1.0.2, agent:1.0.2, automation:1.0.2, browser-automation:1.0.2, cron:1.0.2, doctrine:1.0.2, growth:1.0.2, latest:1.1.0, openclaw:1.0.2, operations:1.0","codeSnippets":[],"executableExamples":[{"language":"yaml","snippet":"brand:\n  name: <BRAND_NAME>\n  domain: <BRAND_DOMAIN>\n\nx:\n  handle: <X_HANDLE>                 # e.g. \"@AcmeStudio\"\n  browser_profile: <BROWSER_PROFILE> # e.g. \"x-live\"\n  browser_port: <BROWSER_PORT>       # e.g. 9222\n\ndiscovery:\n  niche_keywords: <NICHE_KEYWORDS>   # e.g. \"bookkeeping OR invoicing\"\n\nworkspace:\n  dir: <WORKSPACE_DIR>               # e.g. \"~/.openclaw/workspace/twitter-acme\"\n\nalerts:\n  channel: telegram | slack | discord\n  webhook: <YOUR_WEBHOOK_URL>\n\nschedule:\n  timezone: <TIMEZONE>               # required, no default; every window below is relative to it\n  windows:\n    morning_post:   \"09:00\"\n    noon_post:      \"12:30\"\n    evening_post:   \"18:00\"\n    reply_passes:   [\"11:00\", \"15:00\", \"19:30\"]\n    metrics_recap:  \"21:30\""},{"language":"bash","snippet":"openclaw browser --browser-profile <BROWSER_PROFILE> status\nopenclaw browser --browser-profile <BROWSER_PROFILE> tabs\nopenclaw browser --browser-profile <BROWSER_PROFILE> open https://x.com/notifications\nopenclaw browser --browser-profile <BROWSER_PROFILE> snapshot --limit 160\nopenclaw browser --browser-profile <BROWSER_PROFILE> click <ref>\nopenclaw browser --browser-profile <BROWSER_PROFILE> type <ref> \"text\"\nopenclaw browser --browser-profile <BROWSER_PROFILE> press Enter"},{"language":"bash","snippet":"mkdir -p \"<WORKSPACE_DIR>/memory\" && cd \"$_\" && touch x-recaps.md x-post-log.md x-reply-log.md x-ideas.md x-learnings.md x-metrics-log.md"},{"language":"text","snippet":"[Direct answer in 1 sentence, no hedging].\n\n[1-2 sentences of reasoning or the underlying rule].\n\n[Optional: 1 concrete next step the OP can take themselves]."},{"language":"text","snippet":"That's a tough spot.\n\n[1 sentence that validates without overclaiming \"I know what you're going through\"].\n\nThe general framework here is [...]. A specialist in [...] can review your specific situation."},{"language":"text","snippet":"Small precision: [the corrected fact, sourced if possible].\n\n[Why it matters in 1 sentence].\n\n(Not blaming OP — common confusion)."}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: twitter-account-operations\ndescription: Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\".\n---\n\n# X / Twitter Account Operations\n\nThis skill is the operating doctrine for X/Twitter automation runs on a brand, professional or personal account.\n\n## Scope and preconditions (read first)\n\n| Rule | Detail |\n|---|---|\n| Accounts | Only accounts you own or are explicitly authorized to operate. Named in `<X_HANDLE>`. Never any other account |\n| Activation | Only for a named account with an approved schedule. Read-only runs (weekly planning, keyword monitor, metrics recap) never post, like, or follow |\n| Human review | Required before any post touching health, legal, finance, politics, a named person, a client result, or a correction of someone. Draft locally, send to the operator, publish only after approval |\n| Platform defenses | CAPTCHA, verification challenge, \"unusual activity\", lock, or rate-limit notice → stop the run, report, hand over to a human. Never work around it |\n| AI disclosure | If anyone asks whether the account or a reply is automated or AI-assisted, answer truthfully. Follow X's automation rules and label the account as automated where they require it |\n| Data | Reads public posts and your own notifications only. Logs keep post/reply text and URLs, not profiles of other users. Delete log entries older than your retention period (default suggestion: 90 days) |\n\n**The goal is not to click fast. The goal is to operate the browser deliberately: stable session, correct context, useful action, no spam, no reputational risk.**\n\nDrop-in for any niche (legal, medical, software, finance, creator, ecommerce). Replace the placeholders in section 0 with your own values.\n\n---\n\n## 0. Configure for your brand\n\nBefore running anything, fill these placeholders in your local copy or your agent's memory:\n\n| Placeholder | Example | Your value |\n|---|---|---|\n| `<BRAND_NAME>` | \"Acme Studio\" | — |\n| `<BRAND_DOMAIN>` | \"acme.studio\" | — |\n| `<X_HANDLE>` | \"@AcmeStudio\" | — |\n| `<BROWSER_PROFILE>` | \"x-live\" | — |\n| `<BROWSER_PORT>` | \"9222\" | — |\n| `<NICHE_KEYWORDS>` | \"bookkeeping OR invoicing\" | — |\n| `<WORKSPACE_DIR>` | \"~/.openclaw/workspace/twitter-<brand>\" | — |\n| `<TIMEZONE>` | IANA name of your audience's timezone | — |\n\nAll shell snippets below assume an [OpenClaw](https://openclaw.ai) browser CLI bound by CDP, but the doctrine works with any browser-automation stack (Playwright, Puppeteer, Chrome MCP). Swap the CLI calls for your own.\n\n### Quick config (copy-paste YAML)\n\nIf your agent reads config from YAML, drop this in `<WORKSPACE_DIR>/config.yaml`:\n\n```yaml\nbrand:\n  name: <BRAND_NAME>\n  domain: <BRAND_DOMAIN>\n\nx:\n  handle: <X_HANDLE>                 # e.g. \"@AcmeStudio\"\n  browser_profile: <BROWSER_PROFILE> # e.g. \"x-live\"\n  browser_port: <BROWSER_PORT>       # e.g. 9222\n\ndiscovery:\n  niche_keywords: <NICHE_"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7f6shzecv3qv3wrr074s49f986ybe1\",\n  \"slug\": \"twitter-account-operations\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1790758449880\n}"},{"path":"skill-card.md","content":"## Description:\n\nGuides scheduled posting, replies, monitoring, and recovery for an X account the operator owns or is authorized to run.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[alexbloch-ia](https://clawhub.ai/user/alexbloch-ia)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nAccount owners and authorized operators use this skill to plan posts, review notifications and public conversations, publish useful content, and track results through scheduled agent workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Scheduled actions may publish publicly from a logged-in account without adequate oversight.\n\nMitigation: Limit use to owned or explicitly authorized accounts; configure the account, schedule, retention, and human approval rules before enabling automation.\n\nRisk: Sensitive or inaccurate posts and replies could mislead readers or harm reputations.\n\nMitigation: Require operator approval for health, legal, financial, political, client-result, named-person, and correction content; verify claims before publishing.\n\nRisk: Platform challenges or rate limits could indicate that continued automation is unsafe.\n\nMitigation: Stop the run on CAPTCHA, verification challenges, account locks, or rate-limit notices and hand control to a human.\n\n## Reference(s):\n\n- [X / Twitter Account Operations on ClawHub](https://clawhub.ai/alexbloch-ia/skills/twitter-account-operations)\n- [OpenClaw](https://openclaw.ai)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Configuration instructions, Shell commands]\n\n**Output Format:** [Markdown guidance with YAML configuration and shell examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes posting and reply workflows, review checkpoints, and recovery procedures.]\n\n## Skill Version(s):\n\n1.1.0 (source: server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\". Skill: X / Twitter Account Operations Owner: alexbloch-ia Summary: Run scheduled X/Twitter work on an account you own — role separation, careful posting, reply limits, recovery. Use when an agent or cron posts or replies. Trigger on \"twitter cron\". Tags: account-safety:1.0.2, agent:1.0.2, automation:1.0.2, browser-automation:1.0.2, cron:1.0.2, doctrine:1.0.2, growth:1.0.2, latest:1.1.0, openclaw:1.0.2, operations:1.0","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1393,"uniquenessScore":55,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T04:37:17.426Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T04:37:17.426Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T07:43:21.814Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}