Katzca/AutoSocial
Local dashboard for TikTok / IG / YouTube — persistent sessions, queues, schedule, FFmpeg uniquify.
Open playbook →Full operational reference for browser-first social publishing, stealth browser patterns, marketing agent skills, B2B outreach, and low-code ops. Own-content publishing only. Conservative pacing. No platform API abuse.
Local dashboard for TikTok / IG / YouTube — persistent sessions, queues, schedule, FFmpeg uniquify.
Open playbook →Feed / Carousel / Reels via Playwright + cookies + Patchright. Cron queues.
Open playbook →Hardened Chromium for Playwright — geoip, humanize, FPJS fixes, Xvfb headed mode.
Stealth guide →JSON-stdout agent-friendly posts, AI images, analytics. Non-zero exit codes.
CLI section →7 disciplines, quality gates SHIP/FIX/BLOCK, HOT/WARM/COLD memory, truth registries.
Skills →Fastest path for agent marketing: CRO, copy, SEO, ads, email, growth.
Skills →Self-hosted AI sales agent: discover → qualify → email from your mailbox. Zero social ToS surface.
Outreach stack →DocTypes → auto UI, REST, reports, RBAC. Backend for multi-account CRM / content calendar.
Framework →Subpath apps that wire 5+ tools into functional orchestrators — not just notes.
AutoSocial + IG + Cloak + FFmpeg + Aaron + simplified-cli
CloakBrowser + Xvfb + proxy/geoip + profiles + FPJS
MultiPost + Corey + warm-up + L1–L3 + canary
CLI images + FFmpeg + captions + queue + QA
OpenOutreach + Aaron + Frappe + social handoff
ServerRouter + Dispatcher + Hybrid pipeline + gates
Aliases: /run/publisher/ · /run/stealth/ · /run/growth/ · /run/content/ · /run/outreach/ · /run/ops/
How to run several social ops in parallel without burning accounts. One account → one IP forever when live.
1) Draft captions (Aaron/Corey skills) · 2) Uniquify video (yt-dlp + FFmpeg / Apex) · 3) Queue AutoSocial · 4) Schedule windows · 5) Shadowban canary next day
1) One profile dir per account · 2) Cookie inject before nav · 3) Residential proxy match geo · 4) Poisson delays · 5) Quarantine on checkpoint
1) Warm feed scroll · 2) Bounded engage · 3) No ban-loop retries · 4) L1 reduce / L2 re-export cookies / L3 48h halt
1) simplified-cli JSON jobs · 2) marketing skills for copy · 3) Playwright only for own posts · 4) Log every exit code
passive_only: true).
| Slot | Task | Tool | Notes |
|---|---|---|---|
| 09:00 | Session health | persistent profiles / cookies | refresh_silently ~45m on engage |
| 10:00 | Draft + score | Aaron/Corey skills | Virality ≥ 60 before publish if using growth gates |
| 11:30 | Queue publish | AutoSocial / auto-instagram | Own media only; human delays |
| 14:00 | Light engage | Playwright + stealth | PhasedGrowth caps if account < 21 days |
| 18:00 | Analytics + notes | simplified-cli / CRM | Three-state: PASS | FAIL | INCONCLUSIVE |
Use cautiously. Align with platform ToS and local law. This hub is a technical reference, not a green light for abuse.
Local dashboard for TikTok / Instagram / YouTube with persistent Playwright sessions, queues, scheduling, yt-dlp + FFmpeg video uniquification.
.profiles/.geoip).git clone https://github.com/Katzca/AutoSocial.git cd AutoSocial # install deps per README (node/python) # start dashboard, then login once per account # sessions → .profiles/ # example FFmpeg uniquify (own content) ffmpeg -i input.mp4 -vf "scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,eq=brightness=0.01:contrast=1.02" \ -c:v libx264 -preset fast -crf 20 -c:a aac -ar 48000 -shortest out_unique.mp4
Using AutoSocial patterns: prepare a queue of N own-content videos for TikTok+IG.
- Ensure .profiles/{account} exists and is healthy
- Uniquify each video with FFmpeg (H.264, ar 48000)
- Schedule with ≥45m spacing
- Abort on checkpoint/shadowban signals
- Report PASS/FAIL/INCONCLUSIVE per account
Focused Instagram publisher (Feed / Carousel / Reels) using Playwright + imported cookies + Patchright (stealth Chromium). Queue support via cron.
git clone https://github.com/xtea/auto-instagram.git cd auto-instagram # import cookies → run CLI (see repo commands) # add residential proxy + human delays
Publish one Reel from ./content/reel-01 using auto-instagram patterns. - Load cookies for account X - Residential proxy + geo match - Human delays between UI steps (Bezier clicks if available) - Own content only; log final URL or FAIL reason - Exit non-zero on challenge/checkpoint
Bulk operations across 50+ global platforms including Twitter/X, Facebook, LinkedIn, YouTube.
Adapt this caption pack for MultiPost across X, LinkedIn, and Instagram. - Keep one core claim; platform-native length - No banned claims; attach UTM tags - Output a table: platform | caption | CTA | hashtags
Stronger stealth Chromium for Playwright. Pair with anti-detect profile tools (self-hosted AdsPower-class) for one-account-one-profile isolation.
pip install -U cloakbrowser # Python npm install cloakbrowser@latest # JavaScript docker pull cloakhq/cloakbrowser:latest # system deps only — do NOT need: playwright install chromium playwright install-deps chromium
import { launch } from 'cloakbrowser';
const browser = await launch();
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();
const browser = await launch({
proxy: 'http://user:pass@residential-proxy:port',
geoip: true, // match timezone + locale to proxy IP
headless: false, // some sites detect headless even with C++ patches
humanize: true, // human-like mouse, keyboard, scroll
});
browser = launch(
proxy="http://your-residential-proxy:port", # residential IP — datacenter often blocked by reputation
geoip=True, # matches timezone + locale to proxy exit IP
headless=False, # headed mode
humanize=True, # human-like behavior
)
# Prefer SOCKS5 when supported (raw TCP, fewer HTTP CONNECT / HTTP2 issues)
browser = launch(
proxy="socks5://user:pass@proxy:1080",
geoip=True,
headless=False,
humanize=True,
)
Operational tips for stable publishing automation under anti-bot pressure.
# Install Xvfb (virtual framebuffer) sudo apt install xvfb # Start virtual display Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99
from cloakbrowser import launch
# Headed mode + residential proxy for maximum stealth
browser = launch(headless=False, proxy="http://your-residential-proxy:port")
page = browser.new_page()
page.goto("https://heavily-protected-site.com") # better odds vs DataDome etc.
browser.close()
from cloakbrowser import launch_persistent_context
# First run: warm up with --disable-http2 (fresh sessions sometimes challenged over HTTP/2)
ctx = launch_persistent_context("./profile", args=["--disable-http2"])
page = ctx.new_page()
page.goto("https://example.com") # warms up cookies
ctx.close()
# Future runs — no --disable-http2 needed
ctx = launch_persistent_context("./profile")
page = ctx.new_page()
page.goto("https://example.com") # passes with saved cookies
import { launchPersistentContext } from 'cloakbrowser';
// First run: warm up with --disable-http2
let ctx = await launchPersistentContext({ userDataDir: './profile', args: ['--disable-http2'] });
let page = await ctx.newPage();
await page.goto('https://example.com');
await ctx.close();
// Future runs
ctx = await launchPersistentContext({ userDataDir: './profile' });
from cloakbrowser import launch_persistent_context
ctx = launch_persistent_context("./my-profile", headless=False)
# If still flagged, raise storage quota (see CloakBrowser storage quota docs)
# Bad — sends CDP commands, reCAPTCHA detects this
page.wait_for_timeout(3000)
# Good — invisible to the browser
import time
time.sleep(3)
# Prefer type() over fill()
page.type("#email", "user@example.com", delay=50)
// Bad — CDP await page.waitForTimeout(3000); // Good await new Promise(r => setTimeout(r, 3000));
page.evaluate() before reCAPTCHA fires.Most blocks come from missing residential proxy, geoip, or headed mode — not pure fingerprint magic.
Some sites detect headless even with C++ patches. Use Xvfb + headed mode + residential proxy (see above).
| Detection | Cause | Fix |
|---|---|---|
| nodriver / bad bot | Stale binary/wrapper, missing FPJS patches, poor proxy reputation | Upgrade Pro binary (150.0.7871.114.3+), residential + geoip=True, config below |
| Browser tampering | Noise injection detected by ML | --fingerprint-noise=false |
| Browser tampering (fonts) | Font metrics ≠ spoofed Windows platform | --fingerprint-windows-font-metrics (Chromium 148+; Windows fonts installed) |
| Virtual machine | Screen dimensions ≠ viewport | --fingerprint-screen-width/height matching viewport |
browser = launch(
headless=False,
proxy="http://user:pass@residential-proxy:port",
geoip=True,
args=[
"--fingerprint-noise=false", # prevents tampering detection
"--fingerprint-windows-font-metrics", # align font metrics — 148+ binary, needs Windows fonts
],
)
const browser = await launch({
headless: false,
proxy: 'http://user:pass@residential-proxy:port',
geoip: true,
args: [
'--fingerprint-noise=false',
'--fingerprint-windows-font-metrics',
],
});
Warm cookies once with --disable-http2, then reuse persistent profile. For ephemeral: launch(args=["--disable-http2"]) forces HTTP/1.1 — only when required.
# Upgrade pip install -U cloakbrowser npm install cloakbrowser@latest docker pull cloakhq/cloakbrowser:latest # Preview channel export CLOAKBROWSER_RELEASE_CHANNEL=preview # or per launch: release_channel="preview" / releaseChannel: 'preview' # Pin binary version (Free example) export CLOAKBROWSER_VERSION=146.0.7680.177.5 # Downgrade wrapper pip install cloakbrowser==0.3.21 npm install cloakbrowser@0.3.21 docker pull cloakhq/cloakbrowser:0.3.21 # Custom binary export CLOAKBROWSER_BINARY_PATH=/path/to/your/chrome # macOS Gatekeeper / “App is damaged” xattr -cr ~/.cloakbrowser/chromium-*/Chromium.app
# Free — pin a public release browser = launch(browser_version="146.0.7680.177.5") # Pro — pin previous Pro version browser = launch(license_key="cb_xxxxxxxx", browser_version="148.0.7778.215.2") # Preview browser = launch(license_key="cb_xxxxxxxx", release_channel="preview")
proxy=.Agent-friendly CLI: JSON stdout + non-zero exits. Perfect for orchestration.
npm install -g simplified-cli export SIMPLIFIED_API_KEY=your_key simplified auth:login # Common commands simplified posts:create simplified ai-image:generate --wait simplified analytics # Orchestration tip: parse JSON stdout; treat non-zero exit as FAIL
Using simplified-cli: 1) Generate an image for campaign C with ai-image:generate --wait 2) Create a post draft with posts:create 3) Return raw JSON + exit code 4) If exit != 0 → FAIL with stderr
Best overall marketing OS for agents: 120 skills across 7 disciplines with deterministic quality gates.
Extremely comprehensive; measurable quality; keyless Tier 1; shared 7-section skill contract; CI-validated validators.
Complex architecture; needs AI coding agent; Governed profile opt-in; some MCP connectors catalogued not auto-registered.
npx skills add aaron-he-zhu/aaron-marketing-skills # Entry points /aaron-marketing:auto /aaron-marketing:seo-geo /aaron-marketing:launch
npx skills add/aaron-marketing:auto — describe goal in natural languageseo-geo, launch, etc.Fastest path for AI agents on marketing tasks. Simpler than Aaron — fewer scoring systems, quicker wins.
product-marketing is the foundation — other skills reference it firstnpx skills add coreyhaines31/marketingskillsWorks with any Agent Skills client; cross-references; full marketing stack; agency-tested.
Not standalone; skills are instructions not scripts; needs product-marketing.md; can overwhelm for one narrow task.
npx skills add coreyhaines31/marketingskills # Fill .agents/product-marketing.md # Then ask NL questions or use /cro /emails /seo-audit
Optimize this landing page for conversions Write a 5-email welcome sequence Run /seo-audit on https://example.com Draft IG captions for a product launch using product-marketing.md
If priority is B2B sales outreach (not social). Autonomous lead discovery + AI email sequences from your own mailbox.
Docker or Python 3.12+ · LLM key · BetterContact Lead Finder · mailbox (Gmail/SMTP) · product + ICP definition
Bayesian loop experimental; freemium self-promo fraction (disable in source); GPLv3; not a social poster
docker run --pull always -it \ -v ~/.openoutreach/data:/app/data \ ghcr.io/eracle/openoutreach:latest # Onboard: product, LLM key, mailbox, BetterContact # Define ICP e.g. "VP Engineering at Series B SaaS" # Monitor: localhost:8000/admin
Metadata-driven full-stack framework (powers ERPNext). Ideal CRM / calendar / permissions layer under the social manager.
True low-code; RBAC admin; auto REST; Report Builder; ERPNext battle-tested (700+ object types)
Steep learning curve; MariaDB-coupled; heavy for simple CRUD
Python · MariaDB/MySQL · Redis · Node.js
SocialAccount, BrowserProfile, ProxyEndpoint, ContentAsset, PublishJob, ScheduleWindow, EngagementTask, IncidentEvent (L1/L2/L3), AuditVerdict
Copy-paste prompts for multi-task social management. Combine with skills above.
You are the social multi-task manager for manager.addict.best. Accounts: [list]. Platforms: IG Reels + TikTok. Constraints: own content only; residential proxies; one profile per account; ≥45m spacing; quarantine on checkpoint/shadowban; three-state report. Plan → uniquify → queue → publish → first_60_minutes checklist.
Using product-marketing context + social skill: Write 5 platform-native captions (IG, X, LinkedIn, TikTok, YT short). Emit SHIP/FIX/BLOCK for each with reasons. No banned claims. Include CTA + 3–8 tags max.
Account hit soft block after Playwright post. Diagnose using CloakBrowser troubleshooting matrix (proxy, geoip, headless, fonts, HTTP/2 warm). Propose minimal fix; do not retry tight-loop; max 3 heal attempts with evidence.
Account age 12 days. Propose PhasedGrowth caps for engage today. Skip parasitic_risk tags. Include warm_up steps and stop conditions (301/308/310 map).
Build a bash/python orchestrator that: - calls simplified-cli for assets - writes queue JSON for AutoSocial/auto-instagram - launches cloakbrowser persistent contexts - logs PASS|FAIL|INCONCLUSIVE per step Never hardcode PASS.
High-signal commands collected from the full reference set.
# --- Publishing stacks --- git clone https://github.com/Katzca/AutoSocial.git git clone https://github.com/xtea/auto-instagram.git git clone https://github.com/cedonulfi/automie.git # --- CloakBrowser --- pip install -U cloakbrowser npm install cloakbrowser@latest docker pull cloakhq/cloakbrowser:latest playwright install-deps chromium sudo apt install xvfb Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99 export CLOAKBROWSER_RELEASE_CHANNEL=preview export CLOAKBROWSER_VERSION=146.0.7680.177.5 xattr -cr ~/.cloakbrowser/chromium-*/Chromium.app # macOS # --- Simplified CLI --- npm install -g simplified-cli export SIMPLIFIED_API_KEY=... simplified auth:login simplified posts:create simplified ai-image:generate --wait simplified analytics # --- Marketing skills --- npx skills add aaron-he-zhu/aaron-marketing-skills npx skills add coreyhaines31/marketingskills # --- OpenOutreach --- docker run --pull always -it -v ~/.openoutreach/data:/app/data \ ghcr.io/eracle/openoutreach:latest # --- FFmpeg uniquify (own media) --- ffmpeg -i in.mp4 -vf "scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920" \ -c:v libx264 -crf 20 -c:a aac -ar 48000 -shortest out.mp4
How pieces fit into one multi-task social manager.
| Layer | Tool | Role |
|---|---|---|
| Strategy / copy | Aaron + Corey skills | Captions, CRO, SEO, quality gates |
| Assets | simplified-cli / FFmpeg / Apex | Images, uniquify, edit |
| Publish runtime | AutoSocial + auto-instagram | Queues, sessions, platform UI |
| Browser core | CloakBrowser / Patchright | Stealth Chromium |
| Bulk assist | MultiPost | 50+ platform drafts |
| B2B off-social | OpenOutreach | Email leads, no social ToS |
| Ops CRM | Frappe DocTypes | Accounts, jobs, incidents |
Static reference app on contabo-149 with Caddy automatic HTTPS.
| Item | Value |
|---|---|
| Domain | manager.addict.best |
| Server | contabo-149 · 149.102.150.185 |
| TLS email | admin@ielts.fast |
| Web root | /var/www/manager.addict.best |
| Caddy site | /etc/caddy/sites/manager.addict.best.caddy |
manager.addict.best {
tls admin@ielts.fast
encode gzip zstd
root * /var/www/manager.addict.best
file_server
try_files {path} /index.html
header {
Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
X-Content-Type-Options "nosniff"
X-Frame-Options "SAMEORIGIN"
Referrer-Policy "strict-origin-when-cross-origin"
-Server
-X-Powered-By
}
log {
output file /var/log/caddy/manager.addict.best.log {
roll_size 10MB
roll_keep 5
}
format json
}
}