You can look at the PluginHost class for all the available hooks then
grep them in the code to see where and how they are used. Then you can decide which one to use based on what you’re trying to do in the plugin.
As an example, I have follow a site that does something stupid with its images:
<img src="placeholder.gif" data-src-200="200px.jpg" data-src-800="800px.jpg" alt="">
src attribute and TT-RSS sanitizes the content–stripping away the
data-* attributes. So if I want to have TT-RSS serve the images cached I need to filter this before it’s inserted into the database. I use
I also like to manipulate the article content served via the API when I use my mobile device, so for that I use
HOOK_RENDER_ARTICLE_API, only this hook because else where I want the content to remain unchanged. It changes the content dynamically before it’s delivered to the client device (i.e. the content is rendered differently when I view it on a desktop machine versus my phone).
Pick the best hook for what you’re trying to do. For me, my general rule is to leave the content as original as possible in the database because I find it helps to troubleshoot things when they break. Therefore, I filter the content before delivering to the client where possible. This is just my preference though.