Efficiently Managing and Updating Internal Links in a Large Ghost Site

Hi everyone,

I’m running a content-heavy Ghost site () with around 1,500 posts and a database size of approximately 110 MB. It’s hosted on a Droplet at DigitalOcean.

I’m looking for the most efficient way to find and update a large number of internal links across my posts. Ideally, I’d like to automate or semi-automate the process to save time and reduce errors.

What are the best tools, workflows, or plugins you’d recommend for this task?

Thanks in advance for your input!

Take a look at the @tryghost/gctools package - it does this.

Hey Cathy,

Thanks for your reply! I should’ve mentioned earlier that I’m already familiar with the tool.

Unfortunately, I’m having issues with the search and replace feature. I can’t really judge the quality of the search algorithm, but in my case, it doesn’t seem to find all relevant content.

For example, when using tools like Ahrefs, I’m shown about 60 internal links that need to be updated. However, GCtools only finds 13 of them — many others aren’t detected at all.

Do you have any idea why this might be happening?

I’m guessing they’re either in your navbar, or being modified by some JavaScript?

Unfortunately not - they’re simple text links. Here are examples that have not been detected:

when looking for /wiki/token/

Edit: Is there still the max_upload_size of 100MB for database imports in Ghost Admin? I remember that last time I tried to export my database as a .json-file, search and replace the content and re-upload I couldn’t do so because the file was +100MB.

Is matching working with a / in the match at all? I wonder if it needs to be escaped, maybe.

An upload size limit would depend on your hosting setup.

Yes, definitely. I’ve already created replacements including the “/”. I also tried searching without the “/”, using only hyphens “-”, but even then I couldn’t find the relevant content.

Now regarding the database import: is there a smart way to export the database, use Ctrl + F in Visual Studio Code to replace internal links, and then upload only the modified posts? In other words, I’d like to avoid creating duplicates that might result from simply uploading the new database version.

What would be the best approach here?