########################## Finding the main content ########################## :meth:`~turbohtml.Node.main_content` answers a different question than the exporters: not *how do I render this tree* but *which part of it is the article*. The field (``readability`` and ``readability-lxml``, Mozilla's ``Readability.js``, and ``resiliparse``'s main-content extractor) converged on a content-density heuristic, and turbohtml implements the same shape in C over the arena tree, so no Python object is built for a node that loses. The walk scores *containers* by the prose they hold. Every paragraph-like element (``

``, ````, ``

``) with at
least twenty-five characters of text contributes a base point, one point per comma it contains (commas approximate
clause count, a cheap proxy for real sentences), and up to three points for length, one per hundred characters. That
contribution is added to the paragraph's parent in full and to its grandparent at half weight, because the article body
is usually a container *around* the paragraphs, not the paragraph itself. Each container is also seeded once with a
structural weight from its tag (``
`` ``+5``; ``
``/````/``
`` ``+3``; lists and ``
`` ``-3``; headings and ```` ``-5``) and a class/id weight (``+25`` for an ``article``/``content``/``post`` hint, ``-25`` for a ``sidebar``/``comment``/``footer`` one), the well-known readability signals. Two prunings keep boilerplate out of the count. Subtrees that are never content (``