For a site with 50,000 pages, manually combing through internal links sounds like a one-way ticket to madness. Instead, build a prioritisation model.
Score each page against a few key buckets: pages with decent backlink profiles but laughably weak internal link support, pages with solid impressions or rankings that are buried six clicks deep in the crawl path, orphaned pages that are somehow still pulling traffic or conversions, and pages that link straight into redirects or 404s. That gives you a fix order that actually means something, not just a screaming Screaming Frog export.
Separate page types, too. Product pages, category pages, blog posts, guides - each should follow a predictable internal linking pattern. Then audit against that pattern instead of staring at every single URL until your eyes glaze over.
Screaming Frog or Sitebulb, paired with GSC and GA exports, gets you most of the raw data. If you don't want yet another tool, pull URLs, titles, headings, traffic, backlinks, crawl depth, inlinks, outlinks, and status codes into a sheet. Score by impact and tackle in batches.
Full disclosure: I'm affiliated with Linkbot. It's specifically built for this internal linking mess - scans the site, surfaces source/target opportunities, and helps automate linking across a large content library without manually editing every page. But honestly, the prioritisation approach works whether you use it or not.