№ thread
← Atelier
v1.0.0
Mapped
Mappedvanilla

dev.to

dev.to Thread. Authored by weaver-auto. License: open.

Claim this domain · earn 75% open bounty
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.
№ 02 — preflight

Drift detection.

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

name
kind
probe
input_search-input
selector_exists
#search-input
button_search
button_text
search
button_close
button_text
close
button_jess_lee
button_text
jess lee
button_27_reactions
button_text
27 reactions
button_comments_9_comments
button_text
comments 9 comments
button_francistr_
button_text
francistrᴅᴇᴠ (っ◔◡◔)っ
button_30_reactions
button_text
30 reactions
button_comments_6_comments
button_text
comments 6 comments
button_tim_vu_ina
button_text
tim vučina
button_25_reactions
button_text
25 reactions
button_comments_add_comment
button_text
comments add comment
button_bebechien
button_text
bebechien
button_1_reaction
button_text
1 reaction
button_dennis_traub
button_text
dennis traub
button_comments_12_comments
button_text
comments 12 comments
button_marcosomma
button_text
marcosomma
button_2_reactions
button_text
2 reactions
button_gds_k_s
button_text
gds k s
button_7_reactions
button_text
7 reactions
+ 14 more in full Thread JSON
№ 05 — raw thread

The file.

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

dev.to.thread.json15.2 KB
{
  "domain": "dev.to",
  "name": "dev.to Thread",
  "version": "1.0.0",
  "author": "weaver-auto",
  "license": "open",
  "created_at": 1779180458,
  "seed_url": "https://dev.to/",
  "anti_bot": {
    "verdict": "normal",
    "signals": [],
    "page": {
      "title": "DEV Community",
      "url": "https://dev.to/",
      "bodyLen": 7189,
      "interactiveCount": 435,
      "ready": "complete"
    }
  },
  "framework": {
    "frameworks": [],
    "raw": {
      "frameworks": [],
      "primary": "vanilla",
      "indicators": {
        "has_password_input": false,
        "has_file_input": false,
        "has_label_wrapped_file": false,
        "has_drop_zone": false,
        "iframe_count": 1
      },
      "page": {
        "title": "DEV Community",
        "url": "https://dev.to/",
        "ready": "complete"
      }
    }
  },
  "fingerprints": {
    "body_class": "sans-serif-article-body default-header",
    "title": "DEV Community",
    "url": "https://dev.to/",
    "a_declarative_count": 0,
    "a_button_count": 0,
    "forms_count": 1,
    "next_data": false,
    "nuxt": false,
    "react": false,
    "redux": false
  },
  "pacing": {
    "signals": {
      "cloudflare": false,
      "hcaptcha": false,
      "recaptcha": false,
      "akamai": false,
      "datadome": false,
      "kasada": false,
      "perimeter": false
    },
    "profile": "fast"
  },
  "inputs": [
    {
      "tag": "input",
      "id": "search-input",
      "name": "q",
      "type": "text",
      "placeholder": "Search...",
      "aria_label": null,
      "role": null,
      "content_editable": false,
      "fill_strategy": "fast_setter"
    }
  ],
  "buttons": [
    {
      "tag": "button",
      "id": null,
      "text": "Search",
      "aria_label": "Search",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": "Close",
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": null,
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": null,
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": null,
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": null,
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": null,
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": null,
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "svg",
      "id": null,
      "text": null,
      "aria_label": null,
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3695578",
      "text": "Jess Lee",
      "aria_label": "Jess Lee profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "27 reactions",
      "aria_label": "Add a comment to post - Top 7 Featured DEV Posts of the Week",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              9 comments",
      "aria_label": "Add a comment to post - Top 7 Featured DEV Posts of the Week",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3695578",
      "text": null,
      "aria_label": "Save post Top 7 Featured DEV Posts of the Week to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3695943",
      "text": "FrancisTRᴅᴇᴠ (っ◔◡◔)っ",
      "aria_label": "FrancisTRᴅᴇᴠ (っ◔◡◔)っ profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "30 reactions",
      "aria_label": "Add a comment to post - Honesty is the best Policy. The Secret Wars on the use of AI on DEV",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              6 comments",
      "aria_label": "Add a comment to post - Honesty is the best Policy. The Secret Wars on the use of AI on DEV",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3695943",
      "text": null,
      "aria_label": "Save post Honesty is the best Policy. The Secret Wars on the use of AI on DEV to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3605014",
      "text": "Tim Vučina",
      "aria_label": "Tim Vučina profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "25 reactions",
      "aria_label": "Add a comment to post - What If Every Phone in the Room Was a Game Controller — in the Age of AI?",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              Add Comment",
      "aria_label": "Add a comment to post - What If Every Phone in the Room Was a Game Controller — in the Age of AI?",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3605014",
      "text": null,
      "aria_label": "Save post What If Every Phone in the Room Was a Game Controller — in the Age of AI? to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3696406",
      "text": "bebechien",
      "aria_label": "bebechien profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "1 reaction",
      "aria_label": "Add a comment to post - Demystifying AI Agents with Turtle & Gemma",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              Add Comment",
      "aria_label": "Add a comment to post - Demystifying AI Agents with Turtle & Gemma",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3696406",
      "text": null,
      "aria_label": "Save post Demystifying AI Agents with Turtle & Gemma to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3693795",
      "text": "Dennis Traub",
      "aria_label": "Dennis Traub profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "27 reactions",
      "aria_label": "Add a comment to post - Rediscovering Domain-Driven Design, one MCP server at a time",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              12 comments",
      "aria_label": "Add a comment to post - Rediscovering Domain-Driven Design, one MCP server at a time",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3693795",
      "text": null,
      "aria_label": "Save post Rediscovering Domain-Driven Design, one MCP server at a time to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3695758",
      "text": "marcosomma",
      "aria_label": "marcosomma profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "2 reactions",
      "aria_label": "Add a comment to post - Orchestrated Multi-Agent Safety & Test Oversight - AKA \"`O MASTO\"",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              Add Comment",
      "aria_label": "Add a comment to post - Orchestrated Multi-Agent Safety & Test Oversight - AKA \"`O MASTO\"",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3695758",
      "text": null,
      "aria_label": "Save post Orchestrated Multi-Agent Safety & Test Oversight - AKA \"`O MASTO\" to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3666945",
      "text": "GDS K S",
      "aria_label": "GDS K S profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "7 reactions",
      "aria_label": "Add a comment to post - The portfolio math. When 30 small apps beat 1 big one.",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              Add Comment",
      "aria_label": "Add a comment to post - The portfolio math. When 30 small apps beat 1 big one.",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3666945",
      "text": null,
      "aria_label": "Save post The portfolio math. When 30 small apps beat 1 big one. to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3695004",
      "text": "Ranjith Kumar Kondoju",
      "aria_label": "Ranjith Kumar Kondoju profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "6 reactions",
      "aria_label": "Add a comment to post - I red-teamed Oracle APEX 26.1's new AI Agent feature in the 72 hours after it went GA. Claude refused 7 of my 10 attacks on its own.",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              4 comments",
      "aria_label": "Add a comment to post - I red-teamed Oracle APEX 26.1's new AI Agent feature in the 72 hours after it went GA. Claude refused 7 of my 10 attacks on its own.",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3695004",
      "text": null,
      "aria_label": "Save post I red-teamed Oracle APEX 26.1's new AI Agent feature in the 72 hours after it went GA. Claude refused 7 of my 10 attacks on its own. to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3533864",
      "text": "Julien Avezou",
      "aria_label": "Julien Avezou profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "32 reactions",
      "aria_label": "Add a comment to post - Your Codebase Has Technical Debt. But Does Your Team Have Comprehension Debt?",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              15 comments",
      "aria_label": "Add a comment to post - Your Codebase Has Technical Debt. But Does Your Team Have Comprehension Debt?",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3533864",
      "text": null,
      "aria_label": "Save post Your Codebase Has Technical Debt. But Does Your Team Have Comprehension Debt? to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3692276",
      "text": "Rasmus Ros",
      "aria_label": "Rasmus Ros profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "9 reactions",
      "aria_label": "Add a comment to post - From Closures to an AST in a Kotlin Transform Graph",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              Add Comment",
      "aria_label": "Add a comment to post - From Closures to an AST in a Kotlin Transform Graph",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3692276",
      "text": null,
      "aria_label": "Save post From Closures to an AST in a Kotlin Transform Graph to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3693064",
      "text": "Harsh",
      "aria_label": "Harsh  profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "34 reactions",
      "aria_label": "Add a comment to post - DeepSeek Is Running Inside Your Favorite AI Tool – And Nobody Told You",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              12 comments",
      "aria_label": "Add a comment to post - DeepSeek Is Running Inside Your Favorite AI Tool – And Nobody Told You",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3693064",
      "text": null,
      "aria_label": "Save post DeepSeek Is Running Inside Your Favorite AI Tool – And Nobody Told You to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3697099",
      "text": "Gábor Mészáros",
      "aria_label": " Gábor Mészáros profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              Add Comment",
      "aria_label": "Add a comment to post - Instruction systems capability ladder: harness leveling",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3697099",
      "text": null,
      "aria_label": "Save post Instruction systems capability ladder: harness leveling to reading list",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "story-author-preview-trigger-3690547",
      "text": "Mohammad R. Rashid",
      "aria_label": "Mohammad R. Rashid profile details",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "12 reactions",
      "aria_label": "Add a comment to post - How We Keep Mobile Session Replay 17x Cheaper Than PostHog",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "a",
      "id": null,
      "text": "Comments\n\n              1 comment",
      "aria_label": "Add a comment to post - How We Keep Mobile Session Replay 17x Cheaper Than PostHog",
      "click_strategy": "js_dispatch"
    },
    {
      "tag": "button",
      "id": "article-save-button-3690547",
      "text": null,
      "aria_label": "Save post How We Keep Mobile Session Replay 17x Cheaper Than PostHog to reading list",
      "click_strategy": "js_dispatch"
    }
  ],
  "priors": {
    "sources": [],
    "candidate_selectors": []
  },
  "preflight": [
    {
      "name": "input_search-input",
      "kind": "selector_exists",
      "probe": "#search-input",
      "expected": "input #search-input"
    },
    {
      "name": "button_search",
      "kind": "button_text",
      "probe": "search",
      "expected": "button 'search'"
    },
    {
      "name": "button_close",
      "kind": "button_text",
      "probe": "close",
      "expected": "button 'close'"
    },
    {
      "name": "button_jess_lee",
      "kind": "button_text",
      "probe": "jess lee",
      "expected": "button 'jess lee'"
    },
    {
      "name": "button_27_reactions",
      "kind": "button_text",
      "probe": "27 reactions",
      "expected": "button '27 reactions'"
    },
    {
      "name": "button_comments_9_comments",
      "kind": "button_text",
      "probe": "comments\n\n              9 comments",
      "expected": "button 'comments\n\n              9 comments'"
    },
    {
      "name": "button_francistr_",
      "kind": "button_text",
      "probe": "francistrᴅᴇᴠ (っ◔◡◔)っ",
      "expected": "button 'francistrᴅᴇᴠ (っ◔◡◔)っ'"
    },
    {
      "name": "button_30_reactions",
      "kind": "button_text",
      "probe": "30 reactions",
      "expected": "button '30 reactions'"
    },
    {
      "name": "button_comments_6_comments",
      "kind": "button_text",
      "probe": "comments\n\n              6 comments",
      "expected": "button 'comments\n\n              6 comments'"
    },
    {
      "name": "button_tim_vu_ina",
      "kind": "button_text",
      "probe": "tim vučina",
      "expected": "button 'tim vučina'"
    },
    {
      "name": "button_25_reactions",
      "kind": "button_text",
      "probe": "25 reactions",
      "expected": "button '25 reactions'"
    },
    {
      "name": "button_comments_add_comment",
      "kind": "button_text",
      "probe": "comments\n\n              add comment",
      "expected": "button 'comments\n\n              add comment'"
    },
    {
      "name": "button_bebechien",
      "kind": "button_text",
      "probe": "bebechien",
      "expected": "button 'bebechien'"
    },
    {
      "name": "button_1_reaction",
      "kind": "button_text",
      "probe": "1 reaction",
      "expected": "button '1 reaction'"
    },
    {
      "name": "button_dennis_traub",
      "kind": "button_text",
      "probe": "dennis traub",
      "expected": "button 'dennis traub'"
    },
    {
      "name": "button_comments_12_comments",
      "kind": "button_text",
      "probe": "comments\n\n              12 comments",
      "expected": "button 'comments\n\n              12 comments'"
    },
    {
      "name": "button_marcosomma",
      "kind": "button_text",
      "probe": "marcosomma",
      "expected": "button 'marcosomma'"
    },
    {
      "name": "button_2_reactions",
      "kind": "button_text",
      "probe": "2 reactions",
      "expected": "button '2 reactions'"
    },
    {
      "name": "button_gds_k_s",
      "kind": "button_text",
      "probe": "gds k s",
      "expected": "button 'gds k s'"
    },
    {
      "name": "button_7_reactions",
      "kind": "button_text",
      "probe": "7 reactions",
      "expected": "button '7 reactions'"
    },
    {
      "name": "button_ranjith_kumar_kondoju",
      "kind": "button_text",
      "probe": "ranjith kumar kondoju",
      "expected": "button 'ranjith kumar kondoju'"
    },
    {
      "name": "button_6_reactions",
      "kind": "button_text",
      "probe": "6 reactions",
      "expected": "button '6 reactions'"
    },
    {
      "name": "button_comments_4_comments",
      "kind": "button_text",
      "probe": "comments\n\n              4 comments",
      "expected": "button 'comments\n\n              4 comments'"
    },
    {
      "name": "button_julien_avezou",
      "kind": "button_text",
      "probe": "julien avezou",
      "expected": "button 'julien avezou'"
    },
    {
      "name": "button_32_reactions",
      "kind": "button_text",
      "probe": "32 reactions",
      "expected": "button '32 reactions'"
    },
    {
      "name": "button_comments_15_comments",
      "kind": "button_text",
      "probe": "comments\n\n              15 comments",
      "expected": "button 'comments\n\n              15 comments'"
    },
    {
      "name": "button_rasmus_ros",
      "kind": "button_text",
      "probe": "rasmus ros",
      "expected": "button 'rasmus ros'"
    },
    {
      "name": "button_9_reactions",
      "kind": "button_text",
      "probe": "9 reactions",
      "expected": "button '9 reactions'"
    },
    {
      "name": "button_harsh",
      "kind": "button_text",
      "probe": "harsh",
      "expected": "button 'harsh'"
    },
    {
      "name": "button_34_reactions",
      "kind": "button_text",
      "probe": "34 reactions",
      "expected": "button '34 reactions'"
    },
    {
      "name": "button_g_bor_m_sz_ros",
      "kind": "button_text",
      "probe": "gábor mészáros",
      "expected": "button 'gábor mészáros'"
    },
    {
      "name": "button_mohammad_r_rashid",
      "kind": "button_text",
      "probe": "mohammad r. rashid",
      "expected": "button 'mohammad r. rashid'"
    },
    {
      "name": "button_12_reactions",
      "kind": "button_text",
      "probe": "12 reactions",
      "expected": "button '12 reactions'"
    },
    {
      "name": "button_comments_1_comment",
      "kind": "button_text",
      "probe": "comments\n\n              1 comment",
      "expected": "button 'comments\n\n              1 comment'"
    }
  ],
  "states": []
}