How I Built a Backlink Monitoring Tool with AI (& No Coding Skills)

I’m a content marketing specialist at Pragmatic Coders. I can’t write literally a single piece of code (ok sorry, I lied; I can <center></center> in html, but not sure if this even counts).
But vibe coding – using AI to generate code – let me solve the problem I stumbled upon in my work. Exactly that: solve my problem.
In this guide, I’m showing my process of vibe coding. Read this to see what a non-technical person can do with Claude 3.7, how I approached coding, and what I learned – and/or learn to build similar tools for yourself, oc.
The problem: Keeping track of backlinks
First, let me shortly describe how I discovered we had a problem.
For those who don’t know, backlinks—links from other sites to yours—signal trust to search engines and can boost your website’s visibility. While our content marketing strategy (which accounts for 90% of our SEO efforts) naturally attracts links, since early 2024, we decided to supplement this with a specialized agency partnership to help promote our content and build relationships in the IT industry.
This partnership comes with a 12-month guarantee for each link the agency helps us establish. The agency handles about 95% of this specific aspect, while my teammate Arek and I (both primarily content specialists) manage the occasional remaining 5% through organic relationship building.
But the web is unstable. Content disappears, sites change, and backlinks vanish—hurting your SEO. That’s why monitoring them is essential.
And we didn’t do it ourselves.
More straightforward: nobody in our marketing team did this because no person was responsible for SEO link building in the first place.
It’s worth noting that monitoring backlinks is just a small part of our SEO efforts. The vast (90%) majority of our work is focused on creating high-quality content (be it our articles, newsletter, LinkedIn, or video content) that naturally attracts links. Working with an agency helps us better reach the right audience with the content we’re already producing.
So, since Arek and I are primary content specialists, it would take a crazy amount of time (which we didn’t have). And, since we outsourced it to the agency, we didn’t pay much attention to it (a common mistake, isn’t it?).
Yet, one day I realized that to fully benefit from the agency’s guarantee, we needed our own monitoring process. If we don’t know which links disappeared, we can’t effectively work with the agency to restore them under warranty.
Then I thought:
Okay, let’s check the agency’s link as an experiment.
I went to Ahrefs (one of the most popular tools for marketing analytics), and saw this:
The list of 5,489 backlinks to figure out somehow.
We’ve been working with the SEO agency since February 2024 . During this time:
- Ahrefs found 5,489 backlinks on our site. “All” means all backlinks that were live on our last re-crawl plus the backlinks marked as “lost” within your selected time frame.
- Within this, are 200+ links from the agency
- And a few links we gained internally.
You can already see what’s the problem: How can I differentiate the agency’s 200+ links against the remaining 5200+?
I can’t, at least using Ahrefs*.
There’s no option that allows me to manually “tag” and track a single link effectively. No matter which filters I would choose, I couldn’t exactly spot the agency’s links.
And doing it manually (checking the links from Ahrefs against the list of links from the agency) sounds like looooong hours of manual checking which, even worse, should be done periodically.
So I built an automated monitoring solution—despite having no coding experience.
*If you think otherwise, please let me know: LinkedIn
Setting goals: What did I need?
I initially wanted a system that checks daily whether backlinks to pragmaticcoders.com still exist on the listed websites, logs their status in an existing Google Sheet, flags any that are missing or broken, and sends notifications when links disappear.
For technical readers -my Google Sheet contained these columns:
- Backlink URL
- Target domain
- Date added
- Status (EXISTS/MISSING/CHECK MANUALLY)
- Last check date
- Debug – more details on why the script assign a status to an url.
The script would verify links by checking if our domain URL appears in the HTML of the target page (considering various URL encoding formats).
Tools I wanted to use:
- ChatGPT o4-mini-high, but soon replaced it with Claude 4.7 – to help me plan and build the automation
- Google Sheets to store data; it also turned out I needed…
- Apps Script (to add a “Check links” button to the sheet). Google Apps Script is a programming platform that automates tasks in the Google environment – I used it to add a custom button to my spreadsheet.
- Zapier – to send notifications. But it turned out…
How to vibe-code a backlink checker: Challenges, solutions, lessons
It might sound confusing so let me explain.
Initially, I went for the Zapier workflow you can see below.
My ambitious Zapier workflow – little did I know the challenges ahead
The main reason I originally chose Zapier was for real-time notifications. I wanted Slack alerts whenever links disappeared so we could act quickly. Apart from that, I’m so used to thinking of Zapier in terms of automation, that it seemed like a natural thing to do.
Yet, this single requirement dramatically increased the complexity of the entire solution.
It forced me into timeout issues, batch processing headaches, and complex data structures.
⚠️ SPOILER ALERT ⚠️
But the best part is this:
At some point, quite close to victory and the end of my vibe coding journey, having changed my approach and initial requirements, I wondered if I even needed the zap anymore.
I asked Claude, and, in short, its response was: No.
🤣🤣🤣
But before I tell you at the end how it all ended, let me discuss some of the challenges I stumbled upon.
Challenge #0: “Your message will exceed the length limit”
A challenge you should be aware of, especially as a non-technical person, even before you start vibe-coding is: Am I sure my chat’s context size is big enough to assist me from the start till the very end?
Since Claude was generating large code blocks, I quickly hit the message limit. Using Claude Projects helped initially, but even that filled up fast.
It turned out I was lucky. I managed to get all the code I needed… and that’s it. Right now within the project I can’t even send a single short message to Claude – I get the message: Your message will exceed the length limit for this chat…
If I were to do it again, I’d rather use Cursor AI.
Claude project for the backlink checker – the knowledge capacity is almost full.
Challenge #1: The data structure nightmare

We already know I didn’t even need Zapier in the first place, but, anyway, let’s discuss and learn something from the problems it caused.
The first wall I hit was so technical (not that the rest of it wasn’t) for me, that if I couldn’t use AI, my project would end right here.
Zapier needed to send data to Google Sheets in a specific format (let’s say, one clean package – see below), but it kept breaking it apart into separate pieces.
This confused the Google Sheet script I was using, which expected the full update all at once.
Every time it tried to run, it failed with an error.
I tried every variation Chat GPT could think of, but the AI could do nothing with it.
The Claude 4.7 breakthrough
After hours of struggling with ChatGPT, I switched to Claude 4.7, which immediately understood the problem and offered a working solution. (Claude identified that Zapier was flattening my nested data and suggested stringifying the structure into a single field).
Here and throughout the entire process I was copying and pasting code without fully understanding it – pure “vibe coding” – but it worked! Yay 😅😅😅
Challenge #2: The timeout problem
Success was short-lived: | I discovered Zapier has a 30-second time limit which is too short for checking all the links at once. So, the solution was to process it in batches. Claude came up with a script that checks 50 links at a time. This way, the analysis can run through everything on its own and end when the checking is over. Problem solved. |
Challenge #3: The false negative problem
With Claude’s help, I fine-tuned the link detection algorithm. The approach needed to:
- Check for URLs in href attributes (actual links)
- Look for various URL encodings
- Distinguish between linked text and plain text
Finding patterns in false negatives
However, as I tested the system, I discovered an even bigger issue: about 30% of existing links weren’t being detected.
I’d manually visit a page, clearly see my link there, but the automation would report “NIE MA” (doesn’t exist).
To solve the issue, I gave Claude:
- Screenshots showing visible but undetected links
- HTML snippets from those pages
- Link format examples from my spreadsheet and the target sites
It turned out that the problem was error 403.
Challenge #4: The HTTP 403 problem
Some sites returned HTTP 403 errors, blocking my script from accessing pages. These were incorrectly marked as “NIE MA” (doesn’t exist), creating false negatives. I caught the issue after manually checking several “missing” links and finding they were live—just blocked to bots.
Actually, there are a few errors of this type:
- 403 Forbidden: Bot protection blocks access despite a valid URL.
- 401 Unauthorized: Requires login.
- 429 Too Many Requests: Triggered by rapid, repeated requests.
- 503 Service Unavailable: Temporary outage or overload.
These errors are important for marketers because they don’t mean the link is gone – just that our tool couldn’t access it. Without understanding this, we might unnecessarily contact our agency about links that actually work.
The fix: Status classification
I added a third status to the script:
- JEST – Link exists
- NIE MA – Link is definitely gone
- DO SPRAWDZENIA – Manual check needed
This let me:
- Avoid false negatives
- Trust the “NIE MA” status
- Focus manual checks only where automation failed
About 4% of links ended up as “DO SPRAWDZENIA”—a manageable* number to verify manually.
*We only have 200+ links to check, so it definitely is manageable. If you have thousands of backlinks to analyze, you might need even more automation – probably prompting Claude to code a better script that would somehow let the bots enter a website despite its anti-bot protection.
The last step: Abandoning Zapier
After 5 days wrestling with Zapier, I realized I didn’t need an hourly automated system—or Slack notifications. I just needed a reliable, on-demand way to check my links without hours of manual work. And when I gave up the notification thing, I realized I don’t need Zapier, too.
Claude rewrote the code for Apps Script so that it contains the code that was initially in Zapier’s steps 3-5 (Code by Zapier x2 + Webhooks by Zapier).
So, in the end, the backlink checker automation only uses two apps: Google Sheets & Apps Script. No Zapier.
How I used AI to build this solution
This project wouldn’t have been possible without AI. With no coding background, I relied on Claude 4.7 as my coding partner.
My AI collaboration workflow was simple:
- I described tasks in plain language,
- Shared screenshots when needed, and
- Requested explanations for errors.
Claude explained technical concepts and provided ready-to-use code snippets that I could simply copy-paste.
4 key lessons from vibe coding
- What REALLY is your goal?: My essential need was reliable link checking. I should have begun with the simplest solution and added complexity only when needed. Next time, I will ask AI to roast my idea at the very beginning and do it as long as I’m sure this is the simplest solution that really meets my needs (and I myself know what that need really is!!!).
- Be ready to pivot: Dropping Zapier was the smartest move I made.
- Test with big, real data: Most issues only surfaced when I ran the script on real data, not some examples I came up with myself. It’s also easier to understand patterns and spot problems on 200 links vs. 10 – you can find more edge cases.
- Vibe coding works BUT has its limits. Non-technical people can successfully build internal tools with AI when:
- The solution is for internal use only (not customer-facing)
- The problem has clear, specific parameters
- You have time for trial and error
- You don’t need sophisticated user interfaces
Don’t expect to build production software without technical skills. Sometimes hiring a developer still makes more sense – especially for tools used by many people or critical to your business.
The final result and value. What’s next?
You can see the final logic in the image below:
VALUE: The tool discovered 31 missing links worth approximately 40,000 PLN (~$10,600) based on average cost per backlink (about 1,300 PLN). I should also consider the time savings from not manually checking 5,489 links, but it’s hard to estimate, so let’s stick to the 40k PLN.
FINAL RESULT: I may revisit Slack notifications later, but for now, the simplified setup does exactly what I need.
WHAT’S NEXT: Looking ahead, a useful feature would be using AI to analyze:
- The context around each backlink
- The niche of the linking site
Relevance matters a lot here. A link to an Agile article from a donut shop blog, no matter how popular or high-DR, just isn’t a good fit—even if the donuts are great.
I’m pretty sure it could be done better – I wouldn’t have all the unnecessary button options (like Reset Link Checker and Test kolumny J i H), the analysis would take shorter, etc. But for what I need, that’s just perfect. I solved my problem, and I’m satisfied with the final result.
The tool isn’t here to replace the agency or question their tools—it’s meant to help. It lets us spot issues fast and share clear info with them, which makes their job easier and the whole process smoother. It’s a good example of how internal automation can support a strong partnership.
Here’s a timelapse (4x speed) showing how the script worked for the first 2 batches.
Center notification window: I click “START” to start the analysis process.
Bottom right notification windows: Apps Scripts informs me which batch is currently being processed. Once it’s done, it moves on to another batch.
Vibe coding with Claude saved me hours of manual work and recovered potentially lost value for our company. As a non-technical marketer, I was able to solve a real business problem without writing a single line of code myself. If you’ve been putting off solving a technical challenge because you “can’t code,” give vibe coding a try – you might surprise yourself with what you can accomplish!
Need this automation?
Are you an SEO agency? A marketing team needing an internal tool for checking backlinks? Try building this automation!
Or, if you need something more tailored to your needs, contact us – we’ve been automating HR, accounting, marketing & more way before the AI automation hype even started.