bandcamp.com Starter. Authored by manual_seed. License: cc-by.
This Thread is actively running in buyer engines + learning from every session.
4 proven actions captured from real MarStudio runs. Open for community claim.
2d ago
Site-specific knowledge. If your AI hits this exact action and fails, here is the proven chain — what failed, in what order, and what finally worked. Authored from real RE work on this site.
Plain CDP setFileInputFiles bounces; Bandcamp uploader validates via its own JS
Drops CDP websocket on Windows when native dialog opens
Drop target exists but uploader does not commit dragdrop bytes
No label-wrapped pattern on Bandcamp; standard input only
PROVEN PATH. Capture multipart shape once (boundary + CSRF + chunk-id), replay with new file bytes forever. Bandcamp does NOT rotate per-request anti-replay headers, so replay holds.
Works on the old album-edit page but the new dashboard wraps the instance — selector is brittle
For Bandcamp uploads, skip DOM strategies entirely. Use the XHR capture-and-replay pattern from day one. Five minutes of manual seed once = infinite replays after. The "uncrackable wall" framing is wrong — the wall is just DOM-shaped, not network-shaped.
Each row is a real action successfully driven through WebLoom on this site — recorded automatically when an author ran the engine. Strategy tells the engine which click path works here.
These checks run before every recipe. Any failure halts execution and notifies you.
Open bounty. Seeded from real usage by MarStudio (auralalchemy.bandcamp.com). Author can claim and perfect.
Bandcamp has NO public REST API for artists — the dashboard is the only way to upload albums, edit metadata, set pricing, manage merch.
Every label / indie artist on Bandcamp needs this. Real wall.
Album edit URL: /admin/edit_album (artist-subdomain-scoped).
Vanilla + jQuery — straightforward CDP clicks/fills, no React/Lexical/Draft quirks.
This is what installs to ~/.webloom/threads/. No magic. Just JSON.
{
"domain": "bandcamp.com",
"name": "bandcamp.com Starter",
"version": "0.1.0",
"author": "manual_seed",
"license": "cc-by",
"tier": "starter",
"source_url": "https://bandcamp.com",
"framework": "vanilla",
"frameworks_detected": [
"vanilla",
"jquery"
],
"anti_bot_verdict": "normal",
"anti_bot_signals": [],
"default_strategy": "cdp",
"category_hint": "music",
"use_cases": [
"Upload and publish an album",
"Edit album metadata, tracks, pricing",
"Manage merch + supporter tiers"
],
"notes": [
"Open bounty. Seeded from real usage by MarStudio (auralalchemy.bandcamp.com). Author can claim and perfect.",
"Bandcamp has NO public REST API for artists — the dashboard is the only way to upload albums, edit metadata, set pricing, manage merch.",
"Every label / indie artist on Bandcamp needs this. Real wall.",
"Album edit URL: /admin/edit_album (artist-subdomain-scoped).",
"Vanilla + jQuery — straightforward CDP clicks/fills, no React/Lexical/Draft quirks."
],
"quirks": {
"react_controlled_inputs": "use react_force_change escape hatch if normal fill fails",
"radix_triggers": "Radix dropdowns listen for mousedown + click — engine handles via Stage 1 actionability"
},
"preflight": [
{
"name": "logged_in",
"kind": "dom",
"probe": "[data-user], .user-menu, [aria-label*=\"account\" i]",
"expected": "present"
}
],
"proven_actions": [
{
"descriptor": "Navigate to https://auralalchemy.bandcamp.com/admin/edit_album?new=t",
"kind": "navigate",
"strategy": "navigate",
"selector_pattern": "https://auralalchemy.bandcamp.com/admin/edit_album?new=t",
"successes": 1,
"last_at": 1781457955
},
{
"descriptor": "Navigate to https://auralalchemy.bandcamp.com/",
"kind": "navigate",
"strategy": "navigate",
"selector_pattern": "https://auralalchemy.bandcamp.com/",
"successes": 1,
"last_at": 1781458007
},
{
"descriptor": "Add",
"kind": "click",
"strategy": "cdp",
"selector_pattern": "",
"successes": 1,
"last_at": 1781458138
},
{
"descriptor": "click_at_coords:(272,29)",
"kind": "click",
"strategy": "cdp_coords",
"selector_pattern": "",
"successes": 1,
"last_at": 1781458600
}
],
"states": [],
"pacing": {
"profile": "human",
"signals": {}
},
"created_at": 1781458611,
"created_by": "live_usage_seed",
"authored_by": [
"MarStudio (seed)"
],
"open_for_claim": true,
"patch_log": [
{
"ts": 1781458611,
"kind": "seed_from_live_usage",
"descriptor": "4 proven actions captured from real MarStudio runs. Open for community claim."
}
],
"escalation_log": [
{
"action": "Upload an album track",
"tried": [
{
"strategy": "upload_file (Strategy B — plain input)",
"outcome": "failed",
"notes": "Plain CDP setFileInputFiles bounces; Bandcamp uploader validates via its own JS"
},
{
"strategy": "upload_file (Strategy A — file-chooser intercept)",
"outcome": "failed",
"notes": "Drops CDP websocket on Windows when native dialog opens"
},
{
"strategy": "upload_file (Strategy C — drop-event synthesis)",
"outcome": "failed",
"notes": "Drop target exists but uploader does not commit dragdrop bytes"
},
{
"strategy": "upload_file (Strategy D — label-wrapped hidden input)",
"outcome": "failed",
"notes": "No label-wrapped pattern on Bandcamp; standard input only"
},
{
"strategy": "start_recording + manual upload + replay_xhr",
"outcome": "proven",
"notes": "PROVEN PATH. Capture multipart shape once (boundary + CSRF + chunk-id), replay with new file bytes forever. Bandcamp does NOT rotate per-request anti-replay headers, so replay holds."
},
{
"strategy": "eval_js to Plupload internal (uploader.addFile)",
"outcome": "unstable",
"notes": "Works on the old album-edit page but the new dashboard wraps the instance — selector is brittle"
}
],
"lesson": "For Bandcamp uploads, skip DOM strategies entirely. Use the XHR capture-and-replay pattern from day one. Five minutes of manual seed once = infinite replays after. The \"uncrackable wall\" framing is wrong — the wall is just DOM-shaped, not network-shaped.",
"by": "MarStudio (seed)",
"last_verified_at": 1781466313
}
]
}