My general suspicion is that adhering to a simple HTML5 documemnt structure, and possible use of microformats (https://microformats.io/) goes a long way.
Update: there's some discussion here: https://news.ycombinator.com/item?id=28301113
Not abusing the tags solves pretty much everything at this point because the browsers can't trust anyone. Just read up on HTML5 and how tags should be used... then follow that.
For readers, it will be necessary to fix the implementation to do the working better, since not everyone will write it properly.
A very long read but this covers everything:
> How to Section Your HTML
https://css-tricks.com/how-to-section-your-html/
These are specifically important for accessibility users.
Another short read:
> HTML5 sectioning elements, headings, and document outlines
https://www.456bereastreet.com/archive/201103/html5_sectioni...
And you can use Markup Validation Service to validate and get tips:
https://validator.w3.org/#validate_by_input+with_options
Check out the excellent answer by Christian Kohlschütter on how readability works:
https://stackoverflow.com/questions/3652657/what-algorithm-d...