How I Use ChatGPT to Build JSON-LD Schema Faster (Without Losing Accuracy)

H

🎥 Watch the video version of this tutorial — or read on for key takeaways and how-tos.

If you’re a designer or developer implementing JSON-LD schema to help websites get discovered (and understood) by search engines and AI, then you know how repetitive this work can get. The goal is clarity and precision, but the process? Often tedious.

That’s why I started integrating ChatGPT into my workflow—not to replace what I do, but to assist me as I build and maintain a structured schema across multiple web pages.

In this post, I’ll walk you through how I use ChatGPT to help write JSON-LD schema, especially when building out similar structured data across service-based pages for a client. You’ll see the benefits, the pitfalls, and why you still need to know your stuff.


👩‍💻 A Designer-Developer Workflow with ChatGPT

On one of my recent web design and development projects (a Statamic website), I needed to apply structured data to multiple service pages for a paving contractor client. Each service—like asphalt, concrete, or site development—needed an OfferCatalog schema, and many included videos, creative projects, and specific service offerings.

Rather than manually build each block of schema from scratch, I took the schema I had created for one service and used ChatGPT to help generate variations for the others.

Here’s how:

🔁 Step 1: Establish a Template Schema

I manually created JSON-LD for one service, embedding things like:

  • about @type: Service
  • hasOfferCatalog
  • hasPart with VideoObject
  • CreativeWork elements
  • Publisher

This provided a reliable foundation that reflected the structure I desired. I then fed this into ChatGPT and asked it to generate a new schema for other service pages.

💡 Step 2: Prompt Smart, Edit Smarter

While ChatGPT saved me time, it didn’t always get things right.

  • Sometimes it misses required fields
  • It often generates fake image URLs or broken links
  • And occasionally misunderstood relationships, like what should be the mainEntity, subjectOf, or about

That’s where your human review matters. I carefully reviewed the output, corrected any mistakes, updated it with real URLs from my site, and adjusted the nesting so that everything validated properly.

🔍 Tip: Always scroll to the bottom of ChatGPT generated code—sometimes it cuts off early, or lets you copy before the code generation is complete.

⚙️ Step 3: Validate and Fix (Always)

After updating the schema, I tested each page using:

Schema testing revealed common issues (like missing commas or misplaced nesting), which I then fixed manually.

Example of visualization for an Asphalt and Paving Services page with hasOfferCatalog. Theoffersin service has mwithiny suboffers in the schema that align with the written content on the page. The schema clearly states that line striping, asphalt seal coating and more are part of the Asphalt and Paving Services offer.

Output from SEO Schema visualizer Chrome extensions showing company with services and offer catalog

🎬 When Videos and Projects Are Involved

Some service pages also showcase project videos or highlighted works. For those, I:

  1. Ensure the VideoObject schema includes thumbnailUrl, embedUrl, and contentUrl values and is hasPart of WebPage (see Mileground Overview video below).
  2. Used the about @service provider subjectOf properties to connect creative projects to the page and service (see Highlighted Projects in image below)
  3. Verified that schema elements linked back correctly to the website’s structure and brand.
Linking projects and videos to local business and organizations using json-ld schema

⚠️ Why You Can’t Rely on AI Alone

While ChatGPT helps speed up repetitive and structured tasks, it’s not a magical solution—and not a replacement for real expertise.

You still need the experience to:

  • Understand schema structure and relationships
  • Catch subtle issues in AI-generated code
  • Know when something is technically valid but contextually wrong

In short, AI can assist, but it can’t replace the skill and judgment of a knowledgeable developer or designer.

Just like experienced devs have mastered the art of searching Google with the right keywords, today we’re learning to prompt AI with precision—and to evaluate the output critically.


🔎 Want to See This in Action?

If you’re the type who likes to peek under the hood, you can explore the live schema implementation on my client’s website:

Kelly Barkhurst example of mobile webdesign for local business in Morgantown, WV

👉 ParrottaPaving.com

Each service page includes a custom JSON-LD schema that connects videos, creative projects, and detailed offers using structured data.

Try using a tool like Google’s Rich Results Test or a schema visualizer to inspect how the structured data is embedded and how relationships like OfferCatalog, VideoObject, and CreativeWork are used.

Taking the time to explore real websites with similar schema setups is a smart way to see how everything comes together in the real world.

For example, the Asphalt services page validates with three valid structured data items.

Example of valid rich snippets for a local company's service page. Includes Local Business, Organization and Videos.

📺 Watch the Full Walkthrough

I recorded my entire process, from prompting ChatGPT to validating the schema. You can watch it here:

Hey, designers and developers using JSON-LD schema to help with being found and understood online by search engines and AI—and just to get rid of ambiguity. All right. So one of the things I think that is a little misunderstood is how can someone with knowledge about design and coding in development use AI to speed up their workflow to repeat repetitive tasks? And so I realized I was using AI in a way that might be helpful for other people to see me using. So you can see I have ChatGPT open here, and I’m working on a client website, putting in schema. And so, once I have set up and decided what kind of schema, I will say that ChatGPT gets things wrong, misses out on things that I want, but can assist as I’m working. So right now it has copied some schema that I manually made for a service page that is similar. So for this contractor, there are seven services that essentially are going to have similar schema. And so instead of manually especially creating each of these kinds of offers that would be under a service or going to YouTube and finding all the details—but I want a video object—I can ask ChatGPT to do that for me. Once I have the structure, I can be really specific about what I want it to do. So here’s where I’m at. There’s a PO box, and it is optional, but the schema prefers it under street address. I repeat the PO box. So I’m saying hey we need to add that. And then also in this schema, we want to include that creative work—objects for the project shown. And this one is called… where did I have… and here it is: my own site development. And like, we have the projects on asphalt, so I’m going to copy that link address. And we’ll see what it says—okay, so it’s saying okay let’s update it. So it’s going to add the street address. And we’re going to do that for future projects. So this is all content. So I’m saying the web page—I’m using it so that everything is linked in to each other and nested. So this is data that we had already created. And basically what I was asking it to do is—I wanted… and see, it did it wrong for my mailing address. I wanted the street address to be the PO box. And so it still didn’t quite get it right. What it was able to do is follow the setup that I already had for the offer catalog. So rather than me manually bringing in excavation and grading and stormwater management—which it didn’t pull here… right, so—well, I guess it does: site utilities, utility installation. So it doesn’t quite get it right, right—but you have a starting point. And then here it’s saying the main entity is the creative work. And that is not right. So it doesn’t always do what you want, is my point. So let’s go ahead and help it—feed it. So one of the things I’m going to say is: each offer should follow what’s on the page. There are one, two, three, four, five, six, seven. There are seven. And these… okay. So it should now match my grading, excavating, embankment. Okay. So we fix that. So I’m going to go ahead—I always make sure that I scroll down to the bottom because it’s not always finished generating. And so it will let you copy early. So I’m going to come in and on this site I just have this SEO tab. This is a static MC Press site. And I put my JSON-LD schema here. And so I am going to scroll down. You can see I already fixed the street address and my actual schema. So here we go. So I have my offer catalog and I just want to see where it started. So: has offer catalog. Here we go. And we’re going to go down to the bottom—have our offer catalog, which is likely right there. And let’s just make sure—one, two—yes, okay, beautiful. All right. So we’ve got that. So then the next thing—so I’m just going to say save here. And I’m going to come over to asphalt. And I am going to look at the markup that I have here for asphalt. And we have subject for the web page. And then the creative work. So I’m going to say: please make a web page have subject for the work, similar to asphalt eight. Okay. So we want to make sure that—because ChatGPT all the time creates links that aren’t real, right? For or for here. So I definitely recommend trying, checking out all of your links and making sure that they are real. Yep. That’s “for for” to you. All right. So I can maybe try to prompt it and say: the URL and image links are “for for,” you do not grab the real image. Try again. I’ll see what it does. Right. So it couldn’t find it. So… you know, it is not replacing everything that we need at this point. All right. So we’re going to go to our site development page. And I see here’s my highlighted project. I am going to click it. And we will use this image. So if I click on this image and I get… let’s see. Here, there’s the image, right? So I’m going to take this JPEG and use it. So let’s take this beginning part because it’s pretty good. So we’re going to say subject of. I’m going to come into my schema for site development. And we have the website. So this is “hasPart.” We’re still on the web page. And we want it to say “subjectOf.” Creative work. There we go. So now the URL is going to be this file. And the image—where did we put that image?—is here. All right. So now we’re going to say save and publish. We’re going to refresh our complete site development. And we are going to look here. We have made a typo. Right. So we can go to validate our schema markup. And we’re going to click and it is going to show us—yep, we forgot to put a comma. And now that will fix it. All right. So we’re going to come back in. Subject needs a comma before the “about.” All right. Save and publish. Here we go. So we’re going to look. Oh, did I not get it yet? There we go. So we can have our web page. It has a part—that’s the video object—subject of creative work. Right. So that’s showing that this creative work is showing complete site development. And it is about the service “complete site development” has offer catalog. So let me show you in another way, which is really beautiful. The schema—we’re going to open this up. So you can see here: here is the service, and it has an offer catalog. And you can see all the things that are part of “complete site development.” This web page is about “complete site development.” It is the subject of this site—actually, we want “Parrotta Paving,” I think, to have the subject of. But the web page has part. So let’s just double check what we did on the other pages, because we want to be consistent. So if I come to asphalt—and we’re going to look here. All right. We got this beautiful schema. So here we have—right—subjectOf is of the company. All right. So we are going to move that. So I’m going to grab this subject of. And we want it to be. Let me see wherewhere we did it onSo we put it after the postal address. Oh, we didn’t add all of that. And. Right. So, about local business,postal address, areas served. So we’ll just put it right here. And we’ve got a comma okay. So I think that should be right. So this time. If we refresh our site development. Okay. Beautiful. So now we’re going to use another plug in. We’re going to see the schema. And beautifulwe have that the mile ground sitedevelopmentproject Prada Paving is the subject of itokay. So that’s great. You can also have subject ofas probably of the service. But we want the videosto be connected with the company. All right. So that’s great. So at this point I’mgoing to come back to my asphalt schema. Because we really like this oneand this is a good template. So I’m going to scroll all the way downto the bottom, copy it. And then I’m going to say yes. Okay. So here is the full schema. For asphalt let’s duplicatethis for another service page. You can find the content here. Okay. So first I’m going to paste it here. And then I can sayyou can find the contentfor the new page. And we’re going to do it at a pollution. And if we look at demolitionthere are three and no video. There are three offerson this page and no videoand no okay. It works. All right. So let’s see what it generates. So of course when you use ChatGPTyou are also helping train it. So it will ask feedback about whichkind of responses we like better. So we’re looking at what it isgiving us. Okay. So you can see this timebecause I fed in the right streetaddress schema it has using it. So let’s see if itgrabbed because I wasn’t super clearabout what the three were. So we want interior demolition gutterit got it. Structural demolition. Beautiful. Now you can seeit is generating the description for me. So you might want to like double checkthat. That is right. But that is a really nicesave time saving piece. Right. So and yes, it’s looking pretty good. So I am going to tell it. That I like this response. I’m going to copy this content,and we are going to go into. Our demolition page after youbring it in. Save and publishthat. We’re going to check it. So I refresh,I have two tools that I like to useat first off this one,this is looking good. If this like popped up with seeing schema,then we know it would be broken. And then I’m going to comein to my next tool,this SEO schema visualizer. And let’s see. So we have a web page here. Yep. Postal addresson demolition services has offer okay. That looks good. All right. So let’s keep up the speed. Let’s go to excavation. So we look herewe’re back to a videoa highlighted project. And what is that eight services okay. So I’m going to saythat was successful. Let’s do it againbased on theasphalt schemafor excavation servicesthere are eight offers. Complete is. There is a videoand a creative work. Please generate. Right. So everything is looking the same so far. We are hiding back to other relevantalready ID areas. This is all looking correct so far. It pulled clearingand grabbing complete sitedevelopment and. All right,so we’re getting that forward slip repair. Nice. Okay, so. It isnot grabbing what we want from here. Now I think I already did the middleground overview on another page. So I think that I can pull that inno problemokay. Also, the subject of does not seem to haveall the things that we hadon our asphalt and it pulled in somethingthat is not true. Okay. So I’m going to say this feels close. However, the creative workis, Morgantown Middle School. The image is and we know it. It had a hard timefinding the image last time. So, let’s see if we can find it for it. So we’re going to do this. Click to here. Click to here. This is our image. Okay. After the videois not pulling all the same data point. That video on asphalt is. Please include all elements. So let’s see what it does. Okay. That’s looking good so far. Got our, Thisour offer catalog. Yep. Okay. Okay. It still did not get our video. And added a transcript. And it made a link for our URL. That is not accurate. Right. All right. So again it is not perfect. You can not justtell ChatGPT to do something for youand expect that it’s all going to work. You have to know enough about the contentto be able to check it and fix it. But it does speed up several things. So let’s just start with this. So I’m going to come into,but only on excavation. Come here we are. Can we make sure excavation. Yes. Okay. So I’m going to come in to our SEOand just put it here as a starting point. And then we are going to fix thingsas they see fit. Okay. So we want to make surethat we have the rightfirst servicescomplete site chrome grabbing. So there should bea two. Does this look great. All right so this is where westart to go wrong with has part videoand this same video. Is also on another page. So I’m actually justgoing to go back to that page. So if I look here I can see thatthe Morgantown is under asphaltconcrete and excavation. And I’m pretty sure that this videowas site development as well. So I’m going to come into site developmentand look at what we’ve got for our video. Here we go. Let’s see if this is it. The middle ground overview. So let’s see here the mile guide overview. So it is. Yes. All right. So I’m going to grab hash part. Bring it all the way down to aboutand come over tothis has part. Okay. Go to here. All right. Beautiful. So now we have this subject ofand the creative work. And I can see that the creative workwas also something that was duplicated. Right. It’s still this Morgantown. So I should be able to pull itfrom asphalt. So I’m going to come here,come to asphalt. Look at what I have in my schema. And here I have my creative work. So my object,my mustache brackets here and my comma. Okay. So I’m going to come in here and subject,here’s my create work. Okay. So that might be my update. So let’s say save and publish. So I’m going to goto complete site development. And first we’ll look here looks good. And we’re going to come in visualizeour schema. We’re going to look at it. So we havethe web page has a part about the video,the subject of the background sitedevelopment and has all the offer catalog. So that looks great. So now we can view hereand make sure that these links look great. So you can checklike does my thumbnail URL. Is it the real one. I pulled this one somewhere else. So yes right. But anything that it selfgenerate for you,you definitely need to checkbecause it definitely uses made up URL. All right. So that was successful. So hopefully this video kind of givesyou insight to have as a designand developer, how you can,just bring ChatGPT in as a toolbut not rely on it and why it’s stillreally important to understand what you’retrying to accomplish and to be ableto give really great prompts. Where softwaredevelopers and web developersused to need to be really good. Google searchersand being able to use all the right terms. While we still need to do that, it’snow using those same skills withinAI to be able to be very specificabout what you need your code to do,how to fix it, what you’re seeing wrong,and really be ableto understand the output. So you know what is incorrector isn’t quite what you would needor what buttons might be happening. So if you found this interesting,then please subscribe and like it. I’m Kelly BarkhurstFrom Designer to Full Stack,and my core skills are graphic design. And that has been expandedinto full stack design and so if you fallanywhere on the spectrum of,designer or developer,then you might find thischannel, interesting. All right. So happy SEOing and using Json-LD schema.


About Me

I’m Kelly Barkhurst, the voice and mind behind Designer to Fullstack. With roots in graphic design and a passion for development, I help others grow their technical skillset—step by step.

If this post was helpful, consider subscribing to my YouTube channel or following this blog for more fullstack design content.

About the author

Kelly Barkhurst

Designer to Fullstack is my place to geek out and share tech solutions from my day-to-day as a graphic designer, programmer, and business owner (portfolio). I also write on Arts and Bricks, a parenting blog and decal shop that embraces my family’s love of Art and LEGO bricks!

By Kelly Barkhurst

Recent Posts

Archives

Categories