№ thread
← Atelier
v0.1.0
Proven
Provenvanilla

bandcamp.com

bandcamp.com Starter. Authored by manual_seed. License: cc-by.

Claim this domain · earn 75% open bounty
live pulse

This Thread is actively running in buyer engines + learning from every session.

engines · 24h
0
0 actions
success rate · 24h
no data yet
last auto-heal
2d ago
1 community patches
pending review
0
all clear
recent activityas of 0s ago
  • 🪡

    4 proven actions captured from real MarStudio runs. Open for community claim.

    2d ago

Forever
Free updatesWhen the author ships a patch, your copy updates automatically. Yours to keep.
1-click
Drift reportsBroken? Hit the report button. Enough reports flag the Thread publicly and alert the author.
Live
Health scorePreflight pass rate shown on every card. You see the real uptime before buying.
Always
Pre-run haltweaver check runs before every recipe — drift detected means zero wasted clicks.
№ 00 — escalation log

Walls
already cracked.

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.

Upload an album trackby MarStudio (seed)
  1. 01
    upload_file (Strategy B — plain input)failed

    Plain CDP setFileInputFiles bounces; Bandcamp uploader validates via its own JS

  2. 02
    upload_file (Strategy A — file-chooser intercept)failed

    Drops CDP websocket on Windows when native dialog opens

  3. 03
    upload_file (Strategy C — drop-event synthesis)failed

    Drop target exists but uploader does not commit dragdrop bytes

  4. 04
    upload_file (Strategy D — label-wrapped hidden input)failed

    No label-wrapped pattern on Bandcamp; standard input only

  5. 05
    start_recording + manual upload + replay_xhrproven

    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.

  6. 06
    eval_js to Plupload internal (uploader.addFile)unstable

    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.

№ 01 — proven actions

Cracked moves.

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.

descriptor
strategy
successes
last used
Navigate to https://auralalchemy.bandcamp.com/admin/edit_album?new=t
navigate
×1
6/14/2026
Navigate to https://auralalchemy.bandcamp.com/
navigate
×1
6/14/2026
Add
cdp
×1
6/14/2026
click_at_coords:(272,29)
cdp_coords
×1
6/14/2026
№ 02 — preflight

Drift detection.

These checks run before every recipe. Any failure halts execution and notifies you.

name
kind
probe
logged_in
dom
[data-user], .user-menu, [aria-label*="account" i]
№ 03 — quirks

Lessons learned.

01

Open bounty. Seeded from real usage by MarStudio (auralalchemy.bandcamp.com). Author can claim and perfect.

02

Bandcamp has NO public REST API for artists — the dashboard is the only way to upload albums, edit metadata, set pricing, manage merch.

03

Every label / indie artist on Bandcamp needs this. Real wall.

04

Album edit URL: /admin/edit_album (artist-subdomain-scoped).

05

Vanilla + jQuery — straightforward CDP clicks/fills, no React/Lexical/Draft quirks.

№ 05 — raw thread

The file.

This is what installs to ~/.webloom/threads/. No magic. Just JSON.

bandcamp.com.thread.json3.7 KB
{
  "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
    }
  ]
}