You can check out the Episerver audit tool to find unused content for instance https://blog.nicolaayan.com/2018/05/episerver-cms-audit-nuget-package/
We recently created a scheduled job to remove unused (from code) content types with all the content it uses. See the first file in this Gist: https://gist.github.com/johanbenschop/299ad31f8f63304578fb499549385659.
I am running into an interesting situation on my Epi projects. The scenario is simple: A page is added, blocks are added locally to the page, and then the page is later deleted. What I am finding is that the blocks still exist in the system even though their parent page is removed. I can pull up their edit URL directly if I know the Content ID, but cannot delete the block from this interface.
How do you properly managed orphaned blocks on your projects? Should I create a scheduled task that purges unused blocks periodically? Is there a community plugin that will give me a view into unused blocks?