Checking product Schema On a Raspberry Pi

Goal of the mini-project

The aim here is to –

Verify that product schema (JSON-LD) is implemented correctly on example.co.uk after the migration to Adobe Commerce (Magento).
The script crawls your chosen product URLs and reports if required fields like price, brand, sku, and availability are present.


Step 1 – Open a terminal

Click the black terminal icon on the Pi desktop.


Step 2 – Check Python 3

python3 --version

You should see something like Python 3.9.2 (any 3.7+ is fine).


Step 3 – Install libraries

sudo apt update
pip3 install requests beautifulsoup4


Step 4 – Create a working folder

mkdir ~/schema_check
cd ~/schema_check


Step 5 – Create the script file

nano check_schema.py

Then paste this entire script:


import requests, json, csv, time
from bs4 import BeautifulSoup

# ---------- configuration ----------
# Put your product URLs here (you can add as many as you like)
urls = [
    "https://www.example.co.uk/example-product-1",
    "https://www.example.co.uk/example-product-2"
]

# Fields you want to confirm exist in the Product schema
required_fields = ["name", "brand", "sku", "price", "priceCurrency", "availability"]

# Optional delay between requests (seconds)
delay = 2

# ---------- functions ----------
def extract_product_schema(url):
    try:
        r = requests.get(url, timeout=15)
        soup = BeautifulSoup(r.text, "html.parser")
        for tag in soup.find_all("script", type="application/ld+json"):
            try:
                data = json.loads(tag.string)
                if isinstance(data, list):
                    for item in data:
                        if item.get("@type") == "Product":
                            return item
                elif data.get("@type") == "Product":
                    return data
            except Exception:
                continue
    except Exception as e:
        print(f"Error fetching {url}: {e}")
    return None

def check_fields(product_json):
    found = json.dumps(product_json)
    return [f for f in required_fields if f not in found]

# ---------- main ----------
results = []
for u in urls:
    print(f"Checking {u} ...")
    product = extract_product_schema(u)
    if not product:
        print(f"❌ No Product schema found: {u}")
        results.append([u, "No Product schema", ""])
    else:
        missing = check_fields(product)
        if missing:
            print(f"⚠️ Missing: {', '.join(missing)}")
            results.append([u, "Missing fields", ", ".join(missing)])
        else:
            print(f"✅ All key fields present")
            results.append([u, "All fields present", ""])
    time.sleep(delay)

# ---------- save to CSV ----------
with open("schema_results.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["URL", "Status", "Missing Fields"])
    writer.writerows(results)

print("\nDone! Results saved to schema_results.csv")

Save and exit:

  • Ctrl + O, Enter → save
  • Ctrl + X → exit

Step 6 – Edit your URLs

Later, open the script again (nano check_schema.py) and replace the two example links with your 10–50 product URLs.
Each URL must be inside quotes and separated by commas.


Step 7 – Run the script

python3 check_schema.py

It will:

  • Fetch each page
  • Extract the Product JSON-LD
  • Report any missing fields
  • Save a summary to schema_results.csv in the same folder

Step 8 – View the results

cat schema_results.csv

or open the file in LibreOffice Calc / Excel.

Example output:

URL,Status,Missing Fields
https://www.example.co.uk/football-goal.html,All fields present,
https://www.example.co.uk/tennis-net.html,Missing fields,priceCurrency availability
https://www.example.co.uk/baseball-bat.html,No Product schema,


Optional tweaks

  • Increase delay = 2 to 5 if you test hundreds of URLs (avoids rate limits).
  • You can import hundreds of URLs from a CSV by editing the script — ask later if you’d like that version.
  • Re-run anytime to confirm schema fixes.

Quick recap

StepActionCommand
1Open terminal(click icon)
2Check Pythonpython3 --version
3Install depspip3 install requests beautifulsoup4
4Make foldermkdir ~/schema_check && cd ~/schema_check
5Create scriptnano check_schema.py
6Edit URLsinside script
7Run itpython3 check_schema.py
8View resultscat schema_results.csv

That’s it. Job done.

You’ve now got a simple tool that checks your product schema in seconds. No fancy platforms. No monthly fees. Just a Raspberry Pi doing proper work.

Run it whenever you push changes. Catch broken schema before Google does. Keep your rich results intact.

The script sits there, ready to go. Update your URLs. Hit run. Get answers.

This is what proper validation looks like – fast, local, and under your control.

Next steps?

  • Bookmark this guide for when you migrate sites
  • Test 50 products now, then spot-check monthly
  • If you need the CSV import version, you know where I am

Your structured data matters. Now you can actually prove it’s working.

Go check your products. Then sleep better knowing your schema’s solid.

Questions? Issues? The comments are open. MOFOs

How to Make Chat GPT Content Sound Less Like it’s Chat GPT content (robotic)

Main Tips –
1. Do a draft yourself – even if it’s terrible – then ask Chat GPT to:
“rewrite this copy, so it flows and reads better, please write to an [advanced high school] level”

or as above, but for an essay –
“rewrite this copy, so it flows and reads better, please write to an [for an academic paper for a degree, and cite studies with URLs to pubmed or Google scholar].”

2. Make your prompts as detailed and specific as possible, so that if for example, you are submitting an essay, it won’t be the same as everyone elses.

3. Check uses an AI copy checker


Add Personal Experiences

If you are writing a blog post, you’ll want to add some personal experience or anecdotes:

  1. Use Reddit for Experiences to add to content:

Make a copy of spreadsheet – https://docs.google.com/spreadsheets/d/1ZJWPXd8mZoK9Us2HI7L1PEaLGeWo60sKACSs3n0B69s/edit#gid=0

Find some relevant reddit threads. Try googling the title of your article, or keywords related to your article plus “reddit”.

Example, for an article about the hardest position to play in NFL, Google:

“Hardest NFL position Reddit”

Copy 2 or 3 relevant Reddit URLs and paste into the Google sheet

Add the title of your article e.g. “hardest position in NFL” and add the reddit threads to the spreadsheet

Add your article URL (or a related article) below the reddit links

In Chat GPT 4 – Add the plug inside- Access Link and Web Pilot

Copy and paste “prompt” from the google sheet into Chat GPt 4 and press enter.

You should now have an article with some relevant anecdotes.

2. Edit copy to sound human

Notes from AimClear

Tell chat gpt to ignore previous commands:

Please ignore all previous instructions and prompts. All output is in English.

Ask for fluid paragraphs:

Please write a LinkedIn post about how being an entrepreneur is like fishing on a lake. Do not divide the output into numbered sections. Instead, compose the output as flowing, fluid paragraphs.

Add comparisons:

Compare fishing to business, point-by-point, including but not limited to the concepts of making one’s own luck, joy, not getting discouraged, using data, weather, the environment, taking chances, experimenting, lessons learned in failure and victory, humility, blending old-school concepts with new fishing and business tech.

Add random grammar rules:

Do not start any sentence with the same two words in a row.

Do not use any three-word phrase more than once.

Do not repeat any word within eight words of the most recent iteration of the same word.

Write in in the tone of an advanced professional showing emotions, a person sharing thoughts and feelings.

Use at least 10 words with four syllables.  The target consumer is someone who likes complex writers and writings.

Limit usage of the following filler words, except when completely needed for correct grammar: The, it, those, them they, these, it’s, an, a, and. Instead of filler words, use synonyms for what the filler word is referring to or no word at all. Another solution to eliminate filler words is to make a singular noun requiring a filler word plural. As an example: If the output would be, “An angler makes.” Avoid the filler word “An” by writing, “Anglers make.”

Do not use the concepts of tranquility or tranquil unless we also refer to opposite conditions, highlighting changing dynamics.

Limit usage of the words I, me, mine and my. Instead, use the words we, us, our, ours.

Add Quotes:

Quote both Henry David Thoreau about fishing and Tony Robbins about luck, once each as relevant to the story.

Instead of referring to failure, failing or fail, use words like challenge, challenges, learnings, sub-optimal outcomes, learnings, motivation.

Strictly do not exceed 2,900 characters, including spaces.


Ask for imperfection:
To avoid detection by AI checking tools, prevent grammatically perfect output by doing the following: Do not use an Oxford comma one time, where the last two ideas in the sentence are related enough to justify not using an Oxford comma.



Notes from aicontentfy


Obfuscating Text
Obfuscating text is a technique used to bypass AI content detectors. It involves altering and manipulating text in a way that makes it difficult for the detector to accurately analyze and interpret the content. One way to obfuscate text is through the use of synonyms, replacing common words with similar but less detectable alternatives. Another method is adding random or irrelevant words to the text, which creates noise and misleads the detector.

Altering Word and Sentence Structure
Altering word and sentence structure is a useful tactic for evading AI content detectors. By employing synonyms, antonyms, or rearranging sentence components, you can subtly modify your writing to appear unique or bypass detection algorithms. For instance, instead of using the term “important,” you could opt for synonyms like “significant” or “crucial.
” Likewise, sentence fragments or splitting a single sentence into two can also alter the structure and make it harder for AI detectors to identify plagiarized content. Practicing these techniques can assist in maintaining originality and avoiding detection by AI algorithms.

Changing Word Forms
1. Vary sentence structures by altering word forms to bypass AI content detectors.
Example: Instead of using the word “essential,” you can swap it with “necessary” or “vital” to maintain clarity and avoid triggering filters.
Example: Instead of relying on the term “pivotal importance,” consider phrases like “significantly influential” or “crucial significance” to evade detection.

2. Modify key phrases without sacrificing meaning.
Example: Instead of stating that something “plays a significant role,” you can rephrase it to “has a noteworthy impact” to circumvent content detection algorithms.

3. Experiment with different synonyms to conceal critical keywords.
Example: Rather than using “paramount importance,” explore alternatives such as “supreme significance” or “unmatched prominence” to avoid arousing AI scrutiny.

4. Strike a balance between practical guidance and theoretical insights when discussing the subject matter.
Example: Combine practical examples without mentioning specific brand names to provide actionable advice that readers can easily implement.