№ thread
← Atelier
v0.2.0
Proven
Provenvanilla

reddit.com

Reddit Composer Profile (hardened). Authored by reddit_sandbox.py. License: cc-by.

Claim this domain · earn 75% open bounty

Daily Driver Thread — use responsibly

These Threads automate routine activity on your own account: posting, replying, commenting, DMs. Done at human cadence — a few times a day — this is exactly what you already do by hand. The Thread just hands the busywork off.

It is not a bot farm, scraper, fake-engagement tool, or multi-account network. WebLoom will not help you build any of those.

If you push it — 50 posts an hour, follow/unfollow loops, content that looks identical every time — the platform will flag your account, restrict it, or ban it. That risk is yours. We tell you up-front because every platform has tripwires and we will not pretend they don't exist. Full policy →

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.
№ 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
Nombre para mostrar
vision
×2
5/18/2026
Guardar
cdp
×1
5/18/2026
Acerca de la descripción
vision
×1
5/18/2026
Únete a la conversación
vision
×1
5/18/2026
№ 03 — quirks

Lessons learned.

01

New comment composer is Lexical-based contenteditable (shreddit-composer bundle).

02

Use `lexical_set_text` Strategy A — Reddit exposes `__lexicalEditor` on the contenteditable root. Atomic state replacement via setEditorState bypasses DOM/paste/auto-linkifier issues.

03

Submit button selector MUST be scoped to the composer ancestor (not document-wide). A Reddit post page has 22+ `button[type=submit]` elements (upvote/sort/user actions/etc).

04

Composer mount is JIT — click the placeholder, poll for contenteditable up to 5s.

05

AutoMod can silently remove comments after submit. Always re-verify the comment appears for an anonymous viewer before declaring success.

06

Comment composer does NOT have a markdown-toggle in current UI; POST composer does.

№ 05 — raw thread

The file.

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

reddit.com.thread.json2.7 KB
{
  "domain": "reddit.com",
  "name": "Reddit Composer Profile (hardened)",
  "version": "0.2.0",
  "author": "reddit_sandbox.py",
  "license": "cc-by",
  "tier": "starter",
  "framework": "vanilla",
  "frameworks_detected": [],
  "anti_bot_verdict": "normal",
  "default_strategy": "cdp",
  "notes": [
    "New comment composer is Lexical-based contenteditable (shreddit-composer bundle).",
    "Use `lexical_set_text` Strategy A — Reddit exposes `__lexicalEditor` on the contenteditable root. Atomic state replacement via setEditorState bypasses DOM/paste/auto-linkifier issues.",
    "Submit button selector MUST be scoped to the composer ancestor (not document-wide). A Reddit post page has 22+ `button[type=submit]` elements (upvote/sort/user actions/etc).",
    "Composer mount is JIT — click the placeholder, poll for contenteditable up to 5s.",
    "AutoMod can silently remove comments after submit. Always re-verify the comment appears for an anonymous viewer before declaring success.",
    "Comment composer does NOT have a markdown-toggle in current UI; POST composer does."
  ],
  "selectors": {
    "composer_trigger_primary": "shreddit-async-loader[bundlename=\"comment_composer\"]",
    "composer_trigger_alt": "[data-testid=\"comment-submission-form-richtext\"]",
    "contenteditable_aria": "[contenteditable=true][aria-label*=\"comment\" i]",
    "contenteditable_lexical": "[contenteditable=true][data-lexical-editor=true]",
    "submit_button_scoping_ancestor": "form, shreddit-composer, shreddit-async-loader[bundlename=\"comment_composer\"]",
    "submit_button_text_keys": "comment | comentar | post | publicar | submit | reply | responder"
  },
  "quirks": {
    "lexical_editor_exposed_as": "__lexicalEditor on root contenteditable",
    "submit_button_scope_required": "Yes — 22+ button[type=submit] on a logged-in post page",
    "automod_silent_removal": "Common — verify comment is visible from logged-out view post-submit",
    "markdown_toggle_composer_only": "Comment composer has no markdown toggle; rich text only"
  },
  "actions": {
    "submit_comment": {
      "type": "scoped_button_click",
      "scope_selector": "shreddit-async-loader[bundlename=\"comment_composer\"], shreddit-composer",
      "match_by": "text",
      "text_keys": [
        "comment",
        "comentar",
        "post",
        "publicar",
        "reply",
        "responder"
      ]
    }
  },
  "lexical_compatible": true,
  "validated_at": 1779099334,
  "validated_by": "reddit_sandbox.py against live tab",
  "sample_post_url": "https://www.reddit.com/r/n8n/comments/1tgbomu/looking_for_tools_to_enrich_3800_licensed/",
  "proven_actions": [
    {
      "descriptor": "Nombre para mostrar",
      "strategy": "vision",
      "successes": 2,
      "last_at": 1779094734
    },
    {
      "descriptor": "Guardar",
      "strategy": "cdp",
      "successes": 1,
      "last_at": 1779094658
    },
    {
      "descriptor": "Acerca de la descripción",
      "strategy": "vision",
      "successes": 1,
      "last_at": 1779094900
    },
    {
      "descriptor": "Únete a la conversación",
      "strategy": "vision",
      "successes": 1,
      "last_at": 1779098100
    }
  ]
}