Antidetect profile YAML — validate templates, batch-render Multilogin profile/create JSON. CLI: profile-factory.
Project description
profile-yaml-factory
Antidetect profile YAML templates — validate blueprints and batch-render Multilogin profile/create JSON from one CLI.
pip install profile-yaml-factory
profile-factory validate examples/templates/ecommerce-us.yaml
CLI: profile-factory · Python 3.10+ · optional [mlx] for Launcher helpers
Partner (optional): Batch
profile/createfor MLX folders? Multilogin X ·SAAS50/MIN50on eligible new purchases.validate/renderwork offline without an account. Affiliate disclosure · Multilogin promo codes.
Antidetect profile YAML templates — validate blueprints and batch-render Multilogin profile/create JSON from one CLI.
YAML templates for browser profiles with Pydantic validation, JSON Schema export, and MLX-ready JSON output.
Define reusable profile blueprints (proxy, timezone, language, screen, tags) and render them to POST /profile/create payloads for Multilogin or similar antidetect workflows.
Problem
Hand-rolling MLX profile/create JSON does not scale across folders, locales, and proxy lanes. Copy-paste errors in timezone, screen size, or proxy fields cause failed creates and incoherent fingerprints. Teams need validated YAML blueprints that render to identical API payloads every time.
Install
pip install profile-yaml-factory
# MLX profile create helper
pip install profile-yaml-factory[mlx]
Quick start
profile-factory validate examples/templates/ecommerce-us.yaml \
--vars name=demo,folder_id=YOUR-FOLDER,country=US,timezone=America/New_York,proxy=socks5://u:p@1.2.3.4:1080
profile-factory render examples/templates/ecommerce-us.yaml \
--vars name=demo,folder_id=YOUR-FOLDER,country=US,timezone=America/New_York,proxy=socks5://u:p@1.2.3.4:1080 \
-o demo.json
Lint the rendered fingerprint with fingerprint-coherence before mlx-create.
CLI
# Export JSON Schema
profile-factory schema
profile-factory schema -o profile-template.schema.json
# Validate (templates with {{ }} need --vars)
profile-factory validate examples/templates/ecommerce-us.yaml \
--vars name=shop-us,folder_id=YOUR-FOLDER,country=US,timezone=America/New_York,proxy=socks5://u:p@1.2.3.4:1080
# Render with variables
profile-factory render examples/templates/ecommerce-us.yaml \
--vars name=shop-us,folder_id=YOUR-FOLDER,country=US,timezone=America/New_York,proxy=socks5://u:p@1.2.3.4:1080 \
-o rendered/shop-us.json
# Batch render directory (writes manifest.json with checksums)
profile-factory batch examples/templates/ -o rendered/ \
--vars name=batch-1,folder_id=YOUR-FOLDER,country=US,timezone=America/New_York,proxy=socks5://u:p@1.2.3.4:1080
# Create MLX profile (requires MLX_TOKEN)
export MLX_TOKEN=your_bearer_token
profile-factory mlx-create --input rendered/shop-us.json
# Batch create from manifest.json (after profile-factory batch)
profile-factory mlx-create --input rendered/ --folder-id YOUR-FOLDER --rate-limit 2
# Validate payloads only (no API token required)
profile-factory mlx-create --input rendered/ --dry-run
Strict mode
--strict is on by default for validate, render, and batch:
- Unknown keys in
--varsraise an error (use--no-strictfor legacy/extra keys). - Unknown fields in YAML are rejected by the Pydantic schema (
extra=forbid).
Template authoring guide
1. Start from an example
Copy a template from examples/templates/ (10 bundled verticals):
| Template | Vertical | Typical use |
|---|---|---|
ecommerce-us.yaml |
US retail | Storefront browsing QA |
social-uk.yaml |
UK social | Feed and engagement checks |
ads-manager.yaml |
Ads (multi) | Meta/Google Ads manager review |
qa-checkout.yaml |
Checkout | Cart and coupon regression (Linux) |
maps-research.yaml |
Maps (DE) | Local SERP research (de-DE) |
tiktok-mobile.yaml |
Mobile short-form | Android viewport web QA |
meta-ads-us.yaml |
Meta Ads (US) | Campaign and creative diagnostics |
amazon-seller-eu.yaml |
Amazon Seller EU | Listing and inventory QA (de-DE) |
google-maps-local.yaml |
Google Maps (US) | Local listing spot checks |
stripe-checkout-qa.yaml |
Stripe Checkout | Payment element regression (Linux) |
Templates organize locale, screen, proxy, and tags for authorized QA and research workflows. They are not designed to circumvent platform terms of service, bot detection, or account policies — automate only where you have permission.
2. Required YAML fields
| Field | Required | Description |
|---|---|---|
name |
yes | Profile display name (often {{ name }}) |
timezone |
yes | IANA timezone — use {{ timezone }} or a literal |
language |
yes | BCP-47 locale (e.g. en-US) |
screen |
yes | width / height in pixels |
proxy |
no | Proxy URL string {{ proxy }} or structured block |
notes |
no | Free-text workflow notes |
tags |
no | String list for organization |
folder_id |
no | MLX folder UUID |
browser_type |
no | mimic (default) or stealthfox |
os_type |
no | windows (default), macos, linux, android |
Validate against the machine-readable schema:
profile-factory schema -o profile-template.schema.json
3. Template variables
Use {{ variable }} placeholders in YAML strings. Pass values via --vars key=value,....
Semantic variables (validated when present):
| Variable | Validation | Example |
|---|---|---|
{{ country }} |
ISO-3166 alpha-2 | US, GB, DE |
{{ timezone }} |
IANA timezone id | America/New_York |
{{ proxy }} |
Proxy URL or host:port[:user:pass] |
socks5://u:p@1.2.3.4:1080 |
Common workflow variables:
| Variable | Description |
|---|---|
{{ name }} |
Rendered profile name |
{{ folder_id }} |
MLX folder UUID |
When proxy is a single string placeholder, it is parsed into type, host, port, and optional credentials before validation.
4. Example snippet
name: "{{ name }}"
folder_id: "{{ folder_id }}"
timezone: "{{ timezone }}"
language: en-US
screen:
width: 1920
height: 1080
proxy: "{{ proxy }}"
tags:
- ecommerce
- "{{ country }}"
profile-factory render my-template.yaml \
--vars name=shop-1,folder_id=uuid,country=US,timezone=America/New_York,proxy=socks5://u:p@10.0.0.1:1080 \
-o out/shop-1.json
5. Batch output manifest
profile-factory batch renders every *.yaml / *.yml in a directory and writes manifest.json:
{
"version": 1,
"generated_at": "2026-06-11T12:00:00+00:00",
"count": 10,
"profiles": [
{"file": "ecommerce-us.json", "sha256": "…", "bytes": 1234}
]
}
Use checksums to verify artifacts in CI or before uploading to MLX.
When hand-rolled profile/create JSON fails at scale
Teams outgrow copy-paste MLX payloads when folders, locales, and proxy lanes multiply. Typical failure modes:
| Symptom | Likely cause | Fix with profile-factory |
|---|---|---|
| API 400 on create | Wrong folder_id, malformed proxy, invalid timezone |
validate + mlx-create --dry-run before network |
| Profiles “work” but sites block | UA/screen/timezone drift in JSON | Render → fingerprint-coherence audit |
| Slow or rate-limited batch | Unthrottled parallel creates | batch manifest + mlx-create --rate-limit 2 |
| Competitor export gaps | Missing fields after migration | antidetect-import gap report → fill template vars |
Recommended production pipeline:
proxy-lane check proxies.txt -o lanes.json # pick clean exits
profile-factory batch examples/templates/ -o out/ \
--vars name=shop,folder_id=FOLDER,country=US,timezone=America/New_York,proxy=socks5://...
fp-coherence audit out/ecommerce-us.json --strict # lint rendered fingerprint
profile-factory mlx-create --input out/ --dry-run # schema check
export MLX_TOKEN=...
profile-factory mlx-create --input out/ --rate-limit 2
cdp-probe mlx --profile-id NEW_UUID --url https://example.com # post-create exposure check
Coupon hub: Multilogin promo codes — guides for SAAS50 / MIN50, pricing comparisons, and workflow playbooks.
Batch-create partner note: After batch + mlx-create, profiles run on Multilogin X. Code SAAS50 (browser) — confirm vendor terms before checkout. Coupons: profile-factory --show-deal.
Templates organize authorized QA and research workflows — not circumvention of platform terms.
Python API
from profile_yaml_factory import render_template, validate_template_file
variables = {
"name": "shop",
"folder_id": "...",
"country": "US",
"timezone": "America/New_York",
"proxy": "socks5://u:p@1.2.3.4:1080",
}
template = validate_template_file("examples/templates/ecommerce-us.yaml", variables=variables)
payload = render_template("examples/templates/ecommerce-us.yaml", variables=variables)
MLX integration
mlx-create posts rendered JSON to https://api.multilogin.com/profile/create with your bearer token (MLX_TOKEN or --token). This uses the public HTTP API directly — not an official Multilogin SDK.
| Flag | Default | Description |
|---|---|---|
--input |
required | Single .json or batch directory / manifest.json |
--folder-id |
MLX_FOLDER_ID |
Override folder_id on every payload |
--rate-limit |
2 |
Max create requests per second (batch) |
--dry-run |
off | Validate payloads only |
--no-progress |
off | Disable rich progress bar |
Batch mode reads manifest.json from profile-factory batch. Partial failures are reported in failed_profiles; exit code is non-zero if any profile failed.
Limitations
- Offline by default —
validate,render, andbatchdo not call MLX;mlx-createrequiresMLX_TOKENand network. - Template variables —
{{ name }},{{ proxy }}, etc. must be supplied via--vars; unknown keys fail in strict mode. - Not a fingerprint generator — templates organize locale, screen, and proxy; use fingerprint-coherence to audit signal coherence.
- Single vendor target — payloads target MLX
profile/create; other antidetect APIs may need field mapping.
Production
Lint templates with fingerprint-coherence, assign proxies via proxy-lane-checker, then profile-factory mlx-create batch manifests. After competitor import, use antidetect-import gap reports before create.
Partner note (affiliate): If you are standardizing Multilogin X profile/create at folder scale (not one-off JSON edits), isolated profiles with matched proxy + fingerprint often outperform ad-hoc API payloads. Eligible new browser purchases may accept code SAAS50 at multilogin.com — verify current terms before checkout. Full disclosure: docs/AFFILIATE.md. Deals hub: anti-detect.github.io. Coupon details only via profile-factory --show-deal (never printed by default).
FAQ: docs/FAQ.md — Multilogin YAML templates, batch mlx-create, antidetect profile variables.
Development
cd profile-yaml-factory
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check .
python -m build
Related tools (on PyPI)
| Package | CLI | Role |
|---|---|---|
| playwright-cdp-probe | cdp-probe |
CDP / WebDriver exposure score |
| cookie-jar-bridge | cookie-bridge |
Netscape ↔ Playwright cookies |
| proxy-lane-checker | proxy-lane |
Proxy TCP / HTTP / geo / DNSBL |
| fingerprint-coherence | fp-coherence |
UA / screen / timezone lint |
Toolkit pipeline: proxy-lane check → fp-coherence audit → automate → cdp-probe run → cookie-bridge validate
License
MIT
Production antidetect (partner): Multilogin X · Code SAAS50 (-50% browser) · MIN50 (-50% cloud phone)
Affiliate disclosure — we may earn a commission; offers change on the vendor site. More scripts: @Multilogin_Scripts_Bot · Multilogin promo codes
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file profile_yaml_factory-0.3.6.tar.gz.
File metadata
- Download URL: profile_yaml_factory-0.3.6.tar.gz
- Upload date:
- Size: 25.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
127e441c24562634c62dffd41672b4a9b9bdc5e923908ead7f9d9c025968a767
|
|
| MD5 |
b08e3092cd5d01628b57f58b7caef7a6
|
|
| BLAKE2b-256 |
cd9e2b8b5f204fc162be7f417eeae46b89b207a1a68a16ce50814d5842e5f6f6
|
File details
Details for the file profile_yaml_factory-0.3.6-py3-none-any.whl.
File metadata
- Download URL: profile_yaml_factory-0.3.6-py3-none-any.whl
- Upload date:
- Size: 23.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aa4fade9f5b999f5c47cb601513f7301e98763bce44b69a94c9efab473b55e7
|
|
| MD5 |
6cf969d37669eaa6523b6bf727c556de
|
|
| BLAKE2b-256 |
0c92e17619a5b30957674473889da6b9fc44f9e1407b84cf505a32ca1d697792
|