{"id":"youtube:nG7IgrhaJBY","source":"youtube","sourceId":"nG7IgrhaJBY","account":"robotostudio","type":"video","title":"Sanity SEO done right: Open Graph, JSON-LD, fallbacks","body":"A quick walkthrough of how we handle SEO inside every Sanity project we build - the exact schema patterns, fallback logic, and Open Graph setup we use as a default baseline on Turbo Start Sanity.","bodyFormat":"text","sourceUrl":"https://www.youtube.com/watch?v=nG7IgrhaJBY","canonicalUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks","sourceUrls":["https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"],"authorIds":["https://robotostudio.com/blog/author/jono#person"],"publishedAt":"2026-05-18T00:00:00.000Z","modifiedAt":"2026-09-04","checkedAt":"2026-09-17T13:02:04.791Z","language":"en","visibility":"public","topics":["sanity","editorial-experience","ai"],"gaps":["Video authors are credited by the original Roboto page; individual transcript speakers remain unassigned."],"segments":[{"id":"segment-1","startMs":4350,"endMs":4360,"text":"Hey bud, how you doing? So, first of"},{"id":"segment-2","startMs":4360,"endMs":6030,"text":"Hey bud, how you doing? So, first of\nall, I wanted to put this on YouTube so"},{"id":"segment-3","startMs":6030,"endMs":6040,"text":"all, I wanted to put this on YouTube so"},{"id":"segment-4","startMs":6040,"endMs":7350,"text":"all, I wanted to put this on YouTube so\neverybody else can actually see the"},{"id":"segment-5","startMs":7350,"endMs":7360,"text":"everybody else can actually see the"},{"id":"segment-6","startMs":7360,"endMs":8870,"text":"everybody else can actually see the\nanswer to this question cuz I get asked"},{"id":"segment-7","startMs":8870,"endMs":8880,"text":"answer to this question cuz I get asked"},{"id":"segment-8","startMs":8880,"endMs":11270,"text":"answer to this question cuz I get asked\nthis so many times on a daily basis, but"},{"id":"segment-9","startMs":11270,"endMs":11280,"text":"this so many times on a daily basis, but"},{"id":"segment-10","startMs":11280,"endMs":12870,"text":"this so many times on a daily basis, but\nI thought it might be helpful for you."},{"id":"segment-11","startMs":12870,"endMs":12880,"text":"I thought it might be helpful for you."},{"id":"segment-12","startMs":12880,"endMs":15030,"text":"I thought it might be helpful for you.\nSo, in short, and this is a very very"},{"id":"segment-13","startMs":15030,"endMs":15040,"text":"So, in short, and this is a very very"},{"id":"segment-14","startMs":15040,"endMs":16670,"text":"So, in short, and this is a very very\ncommon thing that we get."},{"id":"segment-15","startMs":16670,"endMs":16680,"text":"common thing that we get."},{"id":"segment-16","startMs":16680,"endMs":18550,"text":"common thing that we get.\nHas anybody done SEO work on Sanity"},{"id":"segment-17","startMs":18550,"endMs":18560,"text":"Has anybody done SEO work on Sanity"},{"id":"segment-18","startMs":18560,"endMs":19750,"text":"Has anybody done SEO work on Sanity\nbefore?"},{"id":"segment-19","startMs":19750,"endMs":19760,"text":"before?"},{"id":"segment-20","startMs":19760,"endMs":21350,"text":"before?\nDoesn't really go too much into what's"},{"id":"segment-21","startMs":21350,"endMs":21360,"text":"Doesn't really go too much into what's"},{"id":"segment-22","startMs":21360,"endMs":22630,"text":"Doesn't really go too much into what's\nactually built into the model, but I"},{"id":"segment-23","startMs":22630,"endMs":22640,"text":"actually built into the model, but I"},{"id":"segment-24","startMs":22640,"endMs":24670,"text":"actually built into the model, but I\nhear this time and time again. And the"},{"id":"segment-25","startMs":24670,"endMs":24680,"text":"hear this time and time again. And the"},{"id":"segment-26","startMs":24680,"endMs":26270,"text":"hear this time and time again. And the\nreason why you have this happen so much"},{"id":"segment-27","startMs":26270,"endMs":26280,"text":"reason why you have this happen so much"},{"id":"segment-28","startMs":26280,"endMs":29030,"text":"reason why you have this happen so much\nis because Sanity is very very"},{"id":"segment-29","startMs":29030,"endMs":29040,"text":"is because Sanity is very very"},{"id":"segment-30","startMs":29040,"endMs":30910,"text":"is because Sanity is very very\nunopinionated."},{"id":"segment-31","startMs":30910,"endMs":30920,"text":"unopinionated."},{"id":"segment-32","startMs":30920,"endMs":31910,"text":"unopinionated.\nAnd the reason why it's very very"},{"id":"segment-33","startMs":31910,"endMs":31920,"text":"And the reason why it's very very"},{"id":"segment-34","startMs":31920,"endMs":33870,"text":"And the reason why it's very very\nunopinionated is because it can create"},{"id":"segment-35","startMs":33870,"endMs":33880,"text":"unopinionated is because it can create"},{"id":"segment-36","startMs":33880,"endMs":36070,"text":"unopinionated is because it can create\nmodels that can do anything, genuinely"},{"id":"segment-37","startMs":36070,"endMs":36080,"text":"models that can do anything, genuinely"},{"id":"segment-38","startMs":36080,"endMs":37190,"text":"models that can do anything, genuinely\nanything."},{"id":"segment-39","startMs":37190,"endMs":37200,"text":"anything."},{"id":"segment-40","startMs":37200,"endMs":39310,"text":"anything.\nWhen it comes to just writing a blog, or"},{"id":"segment-41","startMs":39310,"endMs":39320,"text":"When it comes to just writing a blog, or"},{"id":"segment-42","startMs":39320,"endMs":40790,"text":"When it comes to just writing a blog, or\nit can be more complex as to running an"},{"id":"segment-43","startMs":40790,"endMs":40800,"text":"it can be more complex as to running an"},{"id":"segment-44","startMs":40800,"endMs":43350,"text":"it can be more complex as to running an\nentire like e-commerce system, or it can"},{"id":"segment-45","startMs":43350,"endMs":43360,"text":"entire like e-commerce system, or it can"},{"id":"segment-46","startMs":43360,"endMs":44990,"text":"entire like e-commerce system, or it can\nbe as simple as creating like a terminal"},{"id":"segment-47","startMs":44990,"endMs":45000,"text":"be as simple as creating like a terminal"},{"id":"segment-48","startMs":45000,"endMs":47470,"text":"be as simple as creating like a terminal\nthat tells you the latest train times"},{"id":"segment-49","startMs":47470,"endMs":47480,"text":"that tells you the latest train times"},{"id":"segment-50","startMs":47480,"endMs":50550,"text":"that tells you the latest train times\ntrain station. It's it's really really"},{"id":"segment-51","startMs":50550,"endMs":50560,"text":"train station. It's it's really really"},{"id":"segment-52","startMs":50560,"endMs":53070,"text":"train station. It's it's really really\nscalable. Anyway, so what I'll talk"},{"id":"segment-53","startMs":53070,"endMs":53080,"text":"scalable. Anyway, so what I'll talk"},{"id":"segment-54","startMs":53080,"endMs":54870,"text":"scalable. Anyway, so what I'll talk\nabout is a little bit of this. So, this"},{"id":"segment-55","startMs":54870,"endMs":54880,"text":"about is a little bit of this. So, this"},{"id":"segment-56","startMs":54880,"endMs":57950,"text":"about is a little bit of this. So, this\nis a old learn article that we wrote"},{"id":"segment-57","startMs":57950,"endMs":57960,"text":"is a old learn article that we wrote"},{"id":"segment-58","startMs":57960,"endMs":59670,"text":"is a old learn article that we wrote\nwith Sanity, which is really helpful. It"},{"id":"segment-59","startMs":59670,"endMs":59680,"text":"with Sanity, which is really helpful. It"},{"id":"segment-60","startMs":59680,"endMs":61550,"text":"with Sanity, which is really helpful. It\ntells you about how you should"},{"id":"segment-61","startMs":61550,"endMs":61560,"text":"tells you about how you should"},{"id":"segment-62","startMs":61560,"endMs":62950,"text":"tells you about how you should\nopinionate"},{"id":"segment-63","startMs":62950,"endMs":62960,"text":"opinionate"},{"id":"segment-64","startMs":62960,"endMs":64869,"text":"opinionate\nyour actual SEO."},{"id":"segment-65","startMs":64869,"endMs":64879,"text":"your actual SEO."},{"id":"segment-66","startMs":64879,"endMs":66590,"text":"your actual SEO.\nAnd it's all good and fine. If you want"},{"id":"segment-67","startMs":66590,"endMs":66600,"text":"And it's all good and fine. If you want"},{"id":"segment-68","startMs":66600,"endMs":67790,"text":"And it's all good and fine. If you want\nto take the time out to go look through"},{"id":"segment-69","startMs":67790,"endMs":67800,"text":"to take the time out to go look through"},{"id":"segment-70","startMs":67800,"endMs":69590,"text":"to take the time out to go look through\nthis, that's great. You've got a lot"},{"id":"segment-71","startMs":69590,"endMs":69600,"text":"this, that's great. You've got a lot"},{"id":"segment-72","startMs":69600,"endMs":71110,"text":"this, that's great. You've got a lot\nmore time than I have, so that's"},{"id":"segment-73","startMs":71110,"endMs":71120,"text":"more time than I have, so that's"},{"id":"segment-74","startMs":71120,"endMs":72630,"text":"more time than I have, so that's\nfantastic. Now, I'm going to show you"},{"id":"segment-75","startMs":72630,"endMs":72640,"text":"fantastic. Now, I'm going to show you"},{"id":"segment-76","startMs":72640,"endMs":73630,"text":"fantastic. Now, I'm going to show you\nsomething totally different. This is"},{"id":"segment-77","startMs":73630,"endMs":73640,"text":"something totally different. This is"},{"id":"segment-78","startMs":73640,"endMs":75510,"text":"something totally different. This is\nactually the Turbo Star, and this is the"},{"id":"segment-79","startMs":75510,"endMs":75520,"text":"actually the Turbo Star, and this is the"},{"id":"segment-80","startMs":75520,"endMs":76790,"text":"actually the Turbo Star, and this is the\nway that we do it. It's the same thing"},{"id":"segment-81","startMs":76790,"endMs":76800,"text":"way that we do it. It's the same thing"},{"id":"segment-82","startMs":76800,"endMs":77950,"text":"way that we do it. It's the same thing\nthat's in the Sanity learn"},{"id":"segment-83","startMs":77950,"endMs":77960,"text":"that's in the Sanity learn"},{"id":"segment-84","startMs":77960,"endMs":79550,"text":"that's in the Sanity learn\ndocumentation,"},{"id":"segment-85","startMs":79550,"endMs":79560,"text":"documentation,"},{"id":"segment-86","startMs":79560,"endMs":81750,"text":"documentation,\nbut I know how low people's attention"},{"id":"segment-87","startMs":81750,"endMs":81760,"text":"but I know how low people's attention"},{"id":"segment-88","startMs":81760,"endMs":83790,"text":"but I know how low people's attention\nspans are today. So, very very quickly,"},{"id":"segment-89","startMs":83790,"endMs":83800,"text":"spans are today. So, very very quickly,"},{"id":"segment-90","startMs":83800,"endMs":85190,"text":"spans are today. So, very very quickly,\nI'll show you how this works. This is"},{"id":"segment-91","startMs":85190,"endMs":85200,"text":"I'll show you how this works. This is"},{"id":"segment-92","startMs":85200,"endMs":87030,"text":"I'll show you how this works. This is\nhow we opinionate SEO, and we do the"},{"id":"segment-93","startMs":87030,"endMs":87040,"text":"how we opinionate SEO, and we do the"},{"id":"segment-94","startMs":87040,"endMs":88510,"text":"how we opinionate SEO, and we do the\nexact same on every single one of our"},{"id":"segment-95","startMs":88510,"endMs":88520,"text":"exact same on every single one of our"},{"id":"segment-96","startMs":88520,"endMs":91430,"text":"exact same on every single one of our\nprojects. So, when we build a page for a"},{"id":"segment-97","startMs":91430,"endMs":91440,"text":"projects. So, when we build a page for a"},{"id":"segment-98","startMs":91440,"endMs":93670,"text":"projects. So, when we build a page for a\npage builder, or for a blog, or any"},{"id":"segment-99","startMs":93670,"endMs":93680,"text":"page builder, or for a blog, or any"},{"id":"segment-100","startMs":93680,"endMs":97430,"text":"page builder, or for a blog, or any\nother document type, it has a title."},{"id":"segment-101","startMs":97430,"endMs":97440,"text":"other document type, it has a title."},{"id":"segment-102","startMs":97440,"endMs":99270,"text":"other document type, it has a title.\nOkay, and you can do validation, you can"},{"id":"segment-103","startMs":99270,"endMs":99280,"text":"Okay, and you can do validation, you can"},{"id":"segment-104","startMs":99280,"endMs":100990,"text":"Okay, and you can do validation, you can\ndo things like oh, it has to be X number"},{"id":"segment-105","startMs":100990,"endMs":101000,"text":"do things like oh, it has to be X number"},{"id":"segment-106","startMs":101000,"endMs":102910,"text":"do things like oh, it has to be X number\nof characters. You can do that. That's"},{"id":"segment-107","startMs":102910,"endMs":102920,"text":"of characters. You can do that. That's"},{"id":"segment-108","startMs":102920,"endMs":104190,"text":"of characters. You can do that. That's\nreally cool if you think it would help"},{"id":"segment-109","startMs":104190,"endMs":104200,"text":"really cool if you think it would help"},{"id":"segment-110","startMs":104200,"endMs":106110,"text":"really cool if you think it would help\nthe client, but for the simplicity of"},{"id":"segment-111","startMs":106110,"endMs":106120,"text":"the client, but for the simplicity of"},{"id":"segment-112","startMs":106120,"endMs":107310,"text":"the client, but for the simplicity of\nthis, we don't have like that little"},{"id":"segment-113","startMs":107310,"endMs":107320,"text":"this, we don't have like that little"},{"id":"segment-114","startMs":107320,"endMs":109230,"text":"this, we don't have like that little\nnumber underneath because we're trying"},{"id":"segment-115","startMs":109230,"endMs":109240,"text":"number underneath because we're trying"},{"id":"segment-116","startMs":109240,"endMs":112350,"text":"number underneath because we're trying\nto be unopinionated. And description,"},{"id":"segment-117","startMs":112350,"endMs":112360,"text":"to be unopinionated. And description,"},{"id":"segment-118","startMs":112360,"endMs":114510,"text":"to be unopinionated. And description,\nwhich is going to be effectively used as"},{"id":"segment-119","startMs":114510,"endMs":114520,"text":"which is going to be effectively used as"},{"id":"segment-120","startMs":114520,"endMs":116590,"text":"which is going to be effectively used as\nyour meta description on the page."},{"id":"segment-121","startMs":116590,"endMs":116600,"text":"your meta description on the page."},{"id":"segment-122","startMs":116600,"endMs":118750,"text":"your meta description on the page.\nThis can also double up. So, if for"},{"id":"segment-123","startMs":118750,"endMs":118760,"text":"This can also double up. So, if for"},{"id":"segment-124","startMs":118760,"endMs":121350,"text":"This can also double up. So, if for\nexample, it's a blog, um the title of"},{"id":"segment-125","startMs":121350,"endMs":121360,"text":"example, it's a blog, um the title of"},{"id":"segment-126","startMs":121360,"endMs":123310,"text":"example, it's a blog, um the title of\nthe blog could also be the title that"},{"id":"segment-127","startMs":123310,"endMs":123320,"text":"the blog could also be the title that"},{"id":"segment-128","startMs":123320,"endMs":125710,"text":"the blog could also be the title that\nsits inside of here. And the description"},{"id":"segment-129","startMs":125710,"endMs":125720,"text":"sits inside of here. And the description"},{"id":"segment-130","startMs":125720,"endMs":127630,"text":"sits inside of here. And the description\ncould be the little blurb that you get"},{"id":"segment-131","startMs":127630,"endMs":127640,"text":"could be the little blurb that you get"},{"id":"segment-132","startMs":127640,"endMs":129230,"text":"could be the little blurb that you get\njust before you click into the blog on a"},{"id":"segment-133","startMs":129230,"endMs":129240,"text":"just before you click into the blog on a"},{"id":"segment-134","startMs":129240,"endMs":130389,"text":"just before you click into the blog on a\ncard."},{"id":"segment-135","startMs":130389,"endMs":130399,"text":"card."},{"id":"segment-136","startMs":130399,"endMs":132230,"text":"card.\nThat's one thing to note. So, this"},{"id":"segment-137","startMs":132230,"endMs":132240,"text":"That's one thing to note. So, this"},{"id":"segment-138","startMs":132240,"endMs":134070,"text":"That's one thing to note. So, this\nbecomes our baseline. The same with"},{"id":"segment-139","startMs":134070,"endMs":134080,"text":"becomes our baseline. The same with"},{"id":"segment-140","startMs":134080,"endMs":135590,"text":"becomes our baseline. The same with\nimages. So, you may see an image in here"},{"id":"segment-141","startMs":135590,"endMs":135600,"text":"images. So, you may see an image in here"},{"id":"segment-142","startMs":135600,"endMs":138390,"text":"images. So, you may see an image in here\nas well, um which I believe is in SEO."},{"id":"segment-143","startMs":138390,"endMs":138400,"text":"as well, um which I believe is in SEO."},{"id":"segment-144","startMs":138400,"endMs":141030,"text":"as well, um which I believe is in SEO.\nSo, ours is a SEO image override. Um"},{"id":"segment-145","startMs":141030,"endMs":141040,"text":"So, ours is a SEO image override. Um"},{"id":"segment-146","startMs":141040,"endMs":142510,"text":"So, ours is a SEO image override. Um\nhowever, sometimes we actually include"},{"id":"segment-147","startMs":142510,"endMs":142520,"text":"however, sometimes we actually include"},{"id":"segment-148","startMs":142520,"endMs":144830,"text":"however, sometimes we actually include\nthe image in here as well. Uh it could"},{"id":"segment-149","startMs":144830,"endMs":144840,"text":"the image in here as well. Uh it could"},{"id":"segment-150","startMs":144840,"endMs":147630,"text":"the image in here as well. Uh it could\nbe that it should be in here. No. Okay."},{"id":"segment-151","startMs":147630,"endMs":147640,"text":"be that it should be in here. No. Okay."},{"id":"segment-152","startMs":147640,"endMs":149270,"text":"be that it should be in here. No. Okay.\nUm that might get tweaked on the"},{"id":"segment-153","startMs":149270,"endMs":149280,"text":"Um that might get tweaked on the"},{"id":"segment-154","startMs":149280,"endMs":150710,"text":"Um that might get tweaked on the\nTurboStart sanity. But essentially, I"},{"id":"segment-155","startMs":150710,"endMs":150720,"text":"TurboStart sanity. But essentially, I"},{"id":"segment-156","startMs":150720,"endMs":152270,"text":"TurboStart sanity. But essentially, I\nlike to have an image inside of here as"},{"id":"segment-157","startMs":152270,"endMs":152280,"text":"like to have an image inside of here as"},{"id":"segment-158","startMs":152280,"endMs":155350,"text":"like to have an image inside of here as\nwell as part of the pages as a fallback"},{"id":"segment-159","startMs":155350,"endMs":155360,"text":"well as part of the pages as a fallback"},{"id":"segment-160","startMs":155360,"endMs":156390,"text":"well as part of the pages as a fallback\nimage."},{"id":"segment-161","startMs":156390,"endMs":156400,"text":"image."},{"id":"segment-162","startMs":156400,"endMs":158310,"text":"image.\nHowever, we have this secondary tab,"},{"id":"segment-163","startMs":158310,"endMs":158320,"text":"However, we have this secondary tab,"},{"id":"segment-164","startMs":158320,"endMs":160150,"text":"However, we have this secondary tab,\nwhich is SEO. This is your SEO, your"},{"id":"segment-165","startMs":160150,"endMs":160160,"text":"which is SEO. This is your SEO, your"},{"id":"segment-166","startMs":160160,"endMs":162510,"text":"which is SEO. This is your SEO, your\nmeta title, so your title tags at the"},{"id":"segment-167","startMs":162510,"endMs":162520,"text":"meta title, so your title tags at the"},{"id":"segment-168","startMs":162520,"endMs":164870,"text":"meta title, so your title tags at the\ntop, um and the meta description, which"},{"id":"segment-169","startMs":164870,"endMs":164880,"text":"top, um and the meta description, which"},{"id":"segment-170","startMs":164880,"endMs":165990,"text":"top, um and the meta description, which\nwould be in the meta description"},{"id":"segment-171","startMs":165990,"endMs":166000,"text":"would be in the meta description"},{"id":"segment-172","startMs":166000,"endMs":169390,"text":"would be in the meta description\nsection. Um and these will override the"},{"id":"segment-173","startMs":169390,"endMs":169400,"text":"section. Um and these will override the"},{"id":"segment-174","startMs":169400,"endMs":171710,"text":"section. Um and these will override the\ntitle and the description. And you might"},{"id":"segment-175","startMs":171710,"endMs":171720,"text":"title and the description. And you might"},{"id":"segment-176","startMs":171720,"endMs":173190,"text":"title and the description. And you might\nask, \"Hold up, if we've got the title"},{"id":"segment-177","startMs":173190,"endMs":173200,"text":"ask, \"Hold up, if we've got the title"},{"id":"segment-178","startMs":173200,"endMs":174710,"text":"ask, \"Hold up, if we've got the title\nand description, then what's going to"},{"id":"segment-179","startMs":174710,"endMs":174720,"text":"and description, then what's going to"},{"id":"segment-180","startMs":174720,"endMs":176350,"text":"and description, then what's going to\nhappen if we override them? Then there's"},{"id":"segment-181","startMs":176350,"endMs":176360,"text":"happen if we override them? Then there's"},{"id":"segment-182","startMs":176360,"endMs":177710,"text":"happen if we override them? Then there's\nsurely there's no reason to have these"},{"id":"segment-183","startMs":177710,"endMs":177720,"text":"surely there's no reason to have these"},{"id":"segment-184","startMs":177720,"endMs":179590,"text":"surely there's no reason to have these\nin the first place.\" Well, the reason we"},{"id":"segment-185","startMs":179590,"endMs":179600,"text":"in the first place.\" Well, the reason we"},{"id":"segment-186","startMs":179600,"endMs":181430,"text":"in the first place.\" Well, the reason we\nhave these is because they're always a"},{"id":"segment-187","startMs":181430,"endMs":181440,"text":"have these is because they're always a"},{"id":"segment-188","startMs":181440,"endMs":183350,"text":"have these is because they're always a\nfallback. So, it means that you have a"},{"id":"segment-189","startMs":183350,"endMs":183360,"text":"fallback. So, it means that you have a"},{"id":"segment-190","startMs":183360,"endMs":185470,"text":"fallback. So, it means that you have a\nconsistent way of editing your pages,"},{"id":"segment-191","startMs":185470,"endMs":185480,"text":"consistent way of editing your pages,"},{"id":"segment-192","startMs":185480,"endMs":186990,"text":"consistent way of editing your pages,\nwhether that's a page with page builder"},{"id":"segment-193","startMs":186990,"endMs":187000,"text":"whether that's a page with page builder"},{"id":"segment-194","startMs":187000,"endMs":189550,"text":"whether that's a page with page builder\nblocks or a blog, which has like the"},{"id":"segment-195","startMs":189550,"endMs":189560,"text":"blocks or a blog, which has like the"},{"id":"segment-196","startMs":189560,"endMs":191710,"text":"blocks or a blog, which has like the\nblog title, blog description. So, it may"},{"id":"segment-197","startMs":191710,"endMs":191720,"text":"blog title, blog description. So, it may"},{"id":"segment-198","startMs":191720,"endMs":193550,"text":"blog title, blog description. So, it may\nnot appear on all pages."},{"id":"segment-199","startMs":193550,"endMs":193560,"text":"not appear on all pages."},{"id":"segment-200","startMs":193560,"endMs":196150,"text":"not appear on all pages.\nNow, we've got our SEO, so our metas."},{"id":"segment-201","startMs":196150,"endMs":196160,"text":"Now, we've got our SEO, so our metas."},{"id":"segment-202","startMs":196160,"endMs":197949,"text":"Now, we've got our SEO, so our metas.\nWhat about our open graph? Well, makes"},{"id":"segment-203","startMs":197949,"endMs":197959,"text":"What about our open graph? Well, makes"},{"id":"segment-204","startMs":197959,"endMs":199509,"text":"What about our open graph? Well, makes\nperfect sense. Let's do open graph"},{"id":"segment-205","startMs":199509,"endMs":199519,"text":"perfect sense. Let's do open graph"},{"id":"segment-206","startMs":199519,"endMs":201670,"text":"perfect sense. Let's do open graph\ntitle, open graph description. And you"},{"id":"segment-207","startMs":201670,"endMs":201680,"text":"title, open graph description. And you"},{"id":"segment-208","startMs":201680,"endMs":204110,"text":"title, open graph description. And you\ncan go a step further and also do I"},{"id":"segment-209","startMs":204110,"endMs":204120,"text":"can go a step further and also do I"},{"id":"segment-210","startMs":204120,"endMs":206910,"text":"can go a step further and also do I\nthink there's a separated image. Uh you"},{"id":"segment-211","startMs":206910,"endMs":206920,"text":"think there's a separated image. Uh you"},{"id":"segment-212","startMs":206920,"endMs":209070,"text":"think there's a separated image. Uh you\ncan separate it out down to as granular"},{"id":"segment-213","startMs":209070,"endMs":209080,"text":"can separate it out down to as granular"},{"id":"segment-214","startMs":209080,"endMs":211030,"text":"can separate it out down to as granular\nlevel as here's what we want to have on"},{"id":"segment-215","startMs":211030,"endMs":211040,"text":"level as here's what we want to have on"},{"id":"segment-216","startMs":211040,"endMs":212390,"text":"level as here's what we want to have on\nTwitter, here's what we want to have on"},{"id":"segment-217","startMs":212390,"endMs":212400,"text":"Twitter, here's what we want to have on"},{"id":"segment-218","startMs":212400,"endMs":214229,"text":"Twitter, here's what we want to have on\nFacebook. And I think LinkedIn does it"},{"id":"segment-219","startMs":214229,"endMs":214239,"text":"Facebook. And I think LinkedIn does it"},{"id":"segment-220","startMs":214239,"endMs":216430,"text":"Facebook. And I think LinkedIn does it\nas well just off the top of my head. Um"},{"id":"segment-221","startMs":216430,"endMs":216440,"text":"as well just off the top of my head. Um"},{"id":"segment-222","startMs":216440,"endMs":218310,"text":"as well just off the top of my head. Um\nthis is kind of like our de facto"},{"id":"segment-223","startMs":218310,"endMs":218320,"text":"this is kind of like our de facto"},{"id":"segment-224","startMs":218320,"endMs":220070,"text":"this is kind of like our de facto\nbaseline. So, I would highly, highly"},{"id":"segment-225","startMs":220070,"endMs":220080,"text":"baseline. So, I would highly, highly"},{"id":"segment-226","startMs":220080,"endMs":222750,"text":"baseline. So, I would highly, highly\nrecommend doing it this way. Um however,"},{"id":"segment-227","startMs":222750,"endMs":222760,"text":"recommend doing it this way. Um however,"},{"id":"segment-228","startMs":222760,"endMs":224310,"text":"recommend doing it this way. Um however,\nyou can go a lot more granular. You can"},{"id":"segment-229","startMs":224310,"endMs":224320,"text":"you can go a lot more granular. You can"},{"id":"segment-230","startMs":224320,"endMs":226350,"text":"you can go a lot more granular. You can\nput JSON-LD in there. You can do all"},{"id":"segment-231","startMs":226350,"endMs":226360,"text":"put JSON-LD in there. You can do all"},{"id":"segment-232","startMs":226360,"endMs":228550,"text":"put JSON-LD in there. You can do all\nsorts of things. However, a note on"},{"id":"segment-233","startMs":228550,"endMs":228560,"text":"sorts of things. However, a note on"},{"id":"segment-234","startMs":228560,"endMs":230270,"text":"sorts of things. However, a note on\nJSON-LD, and I've said this to to of"},{"id":"segment-235","startMs":230270,"endMs":230280,"text":"JSON-LD, and I've said this to to of"},{"id":"segment-236","startMs":230280,"endMs":232670,"text":"JSON-LD, and I've said this to to of\ndifferent people, I much, much prefer"},{"id":"segment-237","startMs":232670,"endMs":232680,"text":"different people, I much, much prefer"},{"id":"segment-238","startMs":232680,"endMs":235470,"text":"different people, I much, much prefer\nset and forget JSON-LD. So, if you're"},{"id":"segment-239","startMs":235470,"endMs":235480,"text":"set and forget JSON-LD. So, if you're"},{"id":"segment-240","startMs":235480,"endMs":236830,"text":"set and forget JSON-LD. So, if you're\nalready putting all this data like"},{"id":"segment-241","startMs":236830,"endMs":236840,"text":"already putting all this data like"},{"id":"segment-242","startMs":236840,"endMs":238670,"text":"already putting all this data like\ntitles and descriptions and things like"},{"id":"segment-243","startMs":238670,"endMs":238680,"text":"titles and descriptions and things like"},{"id":"segment-244","startMs":238680,"endMs":240190,"text":"titles and descriptions and things like\nthat in there, and authors if you're on"},{"id":"segment-245","startMs":240190,"endMs":240200,"text":"that in there, and authors if you're on"},{"id":"segment-246","startMs":240200,"endMs":242310,"text":"that in there, and authors if you're on\na blog page, then if you're on a blog"},{"id":"segment-247","startMs":242310,"endMs":242320,"text":"a blog page, then if you're on a blog"},{"id":"segment-248","startMs":242320,"endMs":243510,"text":"a blog page, then if you're on a blog\npage, let me show you a quick example of"},{"id":"segment-249","startMs":243510,"endMs":243520,"text":"page, let me show you a quick example of"},{"id":"segment-250","startMs":243520,"endMs":245230,"text":"page, let me show you a quick example of\nthis. Um I'm wondering if we have"},{"id":"segment-251","startMs":245230,"endMs":245240,"text":"this. Um I'm wondering if we have"},{"id":"segment-252","startMs":245240,"endMs":246870,"text":"this. Um I'm wondering if we have\nauthors on here. I hope we do. If we"},{"id":"segment-253","startMs":246870,"endMs":246880,"text":"authors on here. I hope we do. If we"},{"id":"segment-254","startMs":246880,"endMs":247949,"text":"authors on here. I hope we do. If we\ndon't, I'm going to tell you how to do"},{"id":"segment-255","startMs":247949,"endMs":247959,"text":"don't, I'm going to tell you how to do"},{"id":"segment-256","startMs":247959,"endMs":248830,"text":"don't, I'm going to tell you how to do\nit."},{"id":"segment-257","startMs":248830,"endMs":248840,"text":"it."},{"id":"segment-258","startMs":248840,"endMs":251150,"text":"it.\nUh we do. Great. So, if we've got all of"},{"id":"segment-259","startMs":251150,"endMs":251160,"text":"Uh we do. Great. So, if we've got all of"},{"id":"segment-260","startMs":251160,"endMs":253230,"text":"Uh we do. Great. So, if we've got all of\nthese authors that are inside of here,"},{"id":"segment-261","startMs":253230,"endMs":253240,"text":"these authors that are inside of here,"},{"id":"segment-262","startMs":253240,"endMs":255030,"text":"these authors that are inside of here,\nwhy don't we just pull those authors"},{"id":"segment-263","startMs":255030,"endMs":255040,"text":"why don't we just pull those authors"},{"id":"segment-264","startMs":255040,"endMs":257190,"text":"why don't we just pull those authors\ninto JSON-LD by default, which is set"},{"id":"segment-265","startMs":257190,"endMs":257200,"text":"into JSON-LD by default, which is set"},{"id":"segment-266","startMs":257200,"endMs":258430,"text":"into JSON-LD by default, which is set\nand forget? So, you don't have to think"},{"id":"segment-267","startMs":258430,"endMs":258440,"text":"and forget? So, you don't have to think"},{"id":"segment-268","startMs":258440,"endMs":260550,"text":"and forget? So, you don't have to think\nabout You just enter the data inside of"},{"id":"segment-269","startMs":260550,"endMs":260560,"text":"about You just enter the data inside of"},{"id":"segment-270","startMs":260560,"endMs":262710,"text":"about You just enter the data inside of\nSanity, and a like-for-like parity comes"},{"id":"segment-271","startMs":262710,"endMs":262720,"text":"Sanity, and a like-for-like parity comes"},{"id":"segment-272","startMs":262720,"endMs":265110,"text":"Sanity, and a like-for-like parity comes\nup with JSON-LD. And it's not so"},{"id":"segment-273","startMs":265110,"endMs":265120,"text":"up with JSON-LD. And it's not so"},{"id":"segment-274","startMs":265120,"endMs":266950,"text":"up with JSON-LD. And it's not so\ncomplicated these days with AI, so you"},{"id":"segment-275","startMs":266950,"endMs":266960,"text":"complicated these days with AI, so you"},{"id":"segment-276","startMs":266960,"endMs":269630,"text":"complicated these days with AI, so you\ncan even do this relatively quickly. Um"},{"id":"segment-277","startMs":269630,"endMs":269640,"text":"can even do this relatively quickly. Um"},{"id":"segment-278","startMs":269640,"endMs":270909,"text":"can even do this relatively quickly. Um\nbut yeah, this is what I'm talking about"},{"id":"segment-279","startMs":270909,"endMs":270919,"text":"but yeah, this is what I'm talking about"},{"id":"segment-280","startMs":270919,"endMs":274150,"text":"but yeah, this is what I'm talking about\nwhen I talk about a de facto default SEO"},{"id":"segment-281","startMs":274150,"endMs":274160,"text":"when I talk about a de facto default SEO"},{"id":"segment-282","startMs":274160,"endMs":275510,"text":"when I talk about a de facto default SEO\nexperience, what you should use as a"},{"id":"segment-283","startMs":275510,"endMs":275520,"text":"experience, what you should use as a"},{"id":"segment-284","startMs":275520,"endMs":278070,"text":"experience, what you should use as a\nbaseline for every single Sanity website"},{"id":"segment-285","startMs":278070,"endMs":278080,"text":"baseline for every single Sanity website"},{"id":"segment-286","startMs":278080,"endMs":280150,"text":"baseline for every single Sanity website\nthat is going to be a website. This"},{"id":"segment-287","startMs":280150,"endMs":280160,"text":"that is going to be a website. This"},{"id":"segment-288","startMs":280160,"endMs":281470,"text":"that is going to be a website. This\nobviously differs if it's going to be a"},{"id":"segment-289","startMs":281470,"endMs":281480,"text":"obviously differs if it's going to be a"},{"id":"segment-290","startMs":281480,"endMs":282950,"text":"obviously differs if it's going to be a\ndifferent function, but if you're"},{"id":"segment-291","startMs":282950,"endMs":282960,"text":"different function, but if you're"},{"id":"segment-292","startMs":282960,"endMs":284909,"text":"different function, but if you're\nlooking to start this straight away, or"},{"id":"segment-293","startMs":284909,"endMs":284919,"text":"looking to start this straight away, or"},{"id":"segment-294","startMs":284919,"endMs":287150,"text":"looking to start this straight away, or\nin your case, I would just literally go"},{"id":"segment-295","startMs":287150,"endMs":287160,"text":"in your case, I would just literally go"},{"id":"segment-296","startMs":287160,"endMs":289150,"text":"in your case, I would just literally go\nto the Sanity Exchange, go find Turbo"},{"id":"segment-297","startMs":289150,"endMs":289160,"text":"to the Sanity Exchange, go find Turbo"},{"id":"segment-298","startMs":289160,"endMs":291830,"text":"to the Sanity Exchange, go find Turbo\nStart Sanity. also find this on GitHub."},{"id":"segment-299","startMs":291830,"endMs":291840,"text":"Start Sanity. also find this on GitHub."},{"id":"segment-300","startMs":291840,"endMs":293870,"text":"Start Sanity. also find this on GitHub.\nUm go view the repo,"},{"id":"segment-301","startMs":293870,"endMs":293880,"text":"Um go view the repo,"},{"id":"segment-302","startMs":293880,"endMs":295430,"text":"Um go view the repo,\nand tell the developer to just go look"},{"id":"segment-303","startMs":295430,"endMs":295440,"text":"and tell the developer to just go look"},{"id":"segment-304","startMs":295440,"endMs":297630,"text":"and tell the developer to just go look\ninside of here, um and pay a special"},{"id":"segment-305","startMs":297630,"endMs":297640,"text":"inside of here, um and pay a special"},{"id":"segment-306","startMs":297640,"endMs":299750,"text":"inside of here, um and pay a special\nattention to two files. One of them is"},{"id":"segment-307","startMs":299750,"endMs":299760,"text":"attention to two files. One of them is"},{"id":"segment-308","startMs":299760,"endMs":302230,"text":"attention to two files. One of them is\nquery. So, query shows you how we handle"},{"id":"segment-309","startMs":302230,"endMs":302240,"text":"query. So, query shows you how we handle"},{"id":"segment-310","startMs":302240,"endMs":304150,"text":"query. So, query shows you how we handle\nour Groq queries, and Groq is the query"},{"id":"segment-311","startMs":304150,"endMs":304160,"text":"our Groq queries, and Groq is the query"},{"id":"segment-312","startMs":304160,"endMs":305710,"text":"our Groq queries, and Groq is the query\nlanguage from Sanity."},{"id":"segment-313","startMs":305710,"endMs":305720,"text":"language from Sanity."},{"id":"segment-314","startMs":305720,"endMs":306630,"text":"language from Sanity.\nAnd then the second thing you want to"},{"id":"segment-315","startMs":306630,"endMs":306640,"text":"And then the second thing you want to"},{"id":"segment-316","startMs":306640,"endMs":308710,"text":"And then the second thing you want to\npay attention to inside of here,"},{"id":"segment-317","startMs":308710,"endMs":308720,"text":"pay attention to inside of here,"},{"id":"segment-318","startMs":308720,"endMs":311590,"text":"pay attention to inside of here,\num is Let me see if I can find it for"},{"id":"segment-319","startMs":311590,"endMs":311600,"text":"um is Let me see if I can find it for"},{"id":"segment-320","startMs":311600,"endMs":313590,"text":"um is Let me see if I can find it for\nyou. Let me just press up top."},{"id":"segment-321","startMs":313590,"endMs":313600,"text":"you. Let me just press up top."},{"id":"segment-322","startMs":313600,"endMs":316470,"text":"you. Let me just press up top.\nAny second now is the SEO I think it's"},{"id":"segment-323","startMs":316470,"endMs":316480,"text":"Any second now is the SEO I think it's"},{"id":"segment-324","startMs":316480,"endMs":318670,"text":"Any second now is the SEO I think it's\nSEO fields, which you can see you can"},{"id":"segment-325","startMs":318670,"endMs":318680,"text":"SEO fields, which you can see you can"},{"id":"segment-326","startMs":318680,"endMs":320350,"text":"SEO fields, which you can see you can\nreuse this. This is what we use on ours,"},{"id":"segment-327","startMs":320350,"endMs":320360,"text":"reuse this. This is what we use on ours,"},{"id":"segment-328","startMs":320360,"endMs":321909,"text":"reuse this. This is what we use on ours,\nwhere it's the SEO title, SEO"},{"id":"segment-329","startMs":321909,"endMs":321919,"text":"where it's the SEO title, SEO"},{"id":"segment-330","startMs":321919,"endMs":324710,"text":"where it's the SEO title, SEO\ndescription. Makes perfect sense. SEO"},{"id":"segment-331","startMs":324710,"endMs":324720,"text":"description. Makes perfect sense. SEO"},{"id":"segment-332","startMs":324720,"endMs":327670,"text":"description. Makes perfect sense. SEO\nimage, SEO no index, and SEO hide from"},{"id":"segment-333","startMs":327670,"endMs":327680,"text":"image, SEO no index, and SEO hide from"},{"id":"segment-334","startMs":327680,"endMs":329550,"text":"image, SEO no index, and SEO hide from\nlists. And the reason we have these two"},{"id":"segment-335","startMs":329550,"endMs":329560,"text":"lists. And the reason we have these two"},{"id":"segment-336","startMs":329560,"endMs":330710,"text":"lists. And the reason we have these two\nleft is because obviously you want to"},{"id":"segment-337","startMs":330710,"endMs":330720,"text":"left is because obviously you want to"},{"id":"segment-338","startMs":330720,"endMs":332950,"text":"left is because obviously you want to\nhave a no index sometimes. Maybe it's a"},{"id":"segment-339","startMs":332950,"endMs":332960,"text":"have a no index sometimes. Maybe it's a"},{"id":"segment-340","startMs":332960,"endMs":334790,"text":"have a no index sometimes. Maybe it's a\npaper click content page that you very"},{"id":"segment-341","startMs":334790,"endMs":334800,"text":"paper click content page that you very"},{"id":"segment-342","startMs":334800,"endMs":337510,"text":"paper click content page that you very\nspecifically want to like tunnel down"},{"id":"segment-343","startMs":337510,"endMs":337520,"text":"specifically want to like tunnel down"},{"id":"segment-344","startMs":337520,"endMs":339150,"text":"specifically want to like tunnel down\num a specific person that's coming to"},{"id":"segment-345","startMs":339150,"endMs":339160,"text":"um a specific person that's coming to"},{"id":"segment-346","startMs":339160,"endMs":341670,"text":"um a specific person that's coming to\nyour website. And the second one is SEO"},{"id":"segment-347","startMs":341670,"endMs":341680,"text":"your website. And the second one is SEO"},{"id":"segment-348","startMs":341680,"endMs":343790,"text":"your website. And the second one is SEO\nhide from lists, because for example,"},{"id":"segment-349","startMs":343790,"endMs":343800,"text":"hide from lists, because for example,"},{"id":"segment-350","startMs":343800,"endMs":346750,"text":"hide from lists, because for example,\nyou have a blog post, it may be that you"},{"id":"segment-351","startMs":346750,"endMs":346760,"text":"you have a blog post, it may be that you"},{"id":"segment-352","startMs":346760,"endMs":348270,"text":"you have a blog post, it may be that you\ndon't want that blog post to show up on"},{"id":"segment-353","startMs":348270,"endMs":348280,"text":"don't want that blog post to show up on"},{"id":"segment-354","startMs":348280,"endMs":350110,"text":"don't want that blog post to show up on\ncertain lists. It may be that you have a"},{"id":"segment-355","startMs":350110,"endMs":350120,"text":"certain lists. It may be that you have a"},{"id":"segment-356","startMs":350120,"endMs":351790,"text":"certain lists. It may be that you have a\nno index and you also don't want it to"},{"id":"segment-357","startMs":351790,"endMs":351800,"text":"no index and you also don't want it to"},{"id":"segment-358","startMs":351800,"endMs":353990,"text":"no index and you also don't want it to\nshow up on certain lists or vice versa."},{"id":"segment-359","startMs":353990,"endMs":354000,"text":"show up on certain lists or vice versa."},{"id":"segment-360","startMs":354000,"endMs":355790,"text":"show up on certain lists or vice versa.\nThat's the reason we do this because if"},{"id":"segment-361","startMs":355790,"endMs":355800,"text":"That's the reason we do this because if"},{"id":"segment-362","startMs":355800,"endMs":358150,"text":"That's the reason we do this because if\nyou have SEO hide from lists inside of"},{"id":"segment-363","startMs":358150,"endMs":358160,"text":"you have SEO hide from lists inside of"},{"id":"segment-364","startMs":358160,"endMs":360070,"text":"you have SEO hide from lists inside of\nyour grok, you can say, \"Give me all the"},{"id":"segment-365","startMs":360070,"endMs":360080,"text":"your grok, you can say, \"Give me all the"},{"id":"segment-366","startMs":360080,"endMs":361710,"text":"your grok, you can say, \"Give me all the\nblogs except for the ones that are"},{"id":"segment-367","startMs":361710,"endMs":361720,"text":"blogs except for the ones that are"},{"id":"segment-368","startMs":361720,"endMs":363510,"text":"blogs except for the ones that are\ngetting hidden from lists.\" And it's"},{"id":"segment-369","startMs":363510,"endMs":363520,"text":"getting hidden from lists.\" And it's"},{"id":"segment-370","startMs":363520,"endMs":365470,"text":"getting hidden from lists.\" And it's\nreally nice and easy to work with. Uh"},{"id":"segment-371","startMs":365470,"endMs":365480,"text":"really nice and easy to work with. Uh"},{"id":"segment-372","startMs":365480,"endMs":367430,"text":"really nice and easy to work with. Uh\nthere's some very basic validation here,"},{"id":"segment-373","startMs":367430,"endMs":367440,"text":"there's some very basic validation here,"},{"id":"segment-374","startMs":367440,"endMs":369270,"text":"there's some very basic validation here,\nbut I hope this helps with you trying to"},{"id":"segment-375","startMs":369270,"endMs":369280,"text":"but I hope this helps with you trying to"},{"id":"segment-376","startMs":369280,"endMs":371750,"text":"but I hope this helps with you trying to\nsolve this SEO problem. If it continues,"},{"id":"segment-377","startMs":371750,"endMs":371760,"text":"solve this SEO problem. If it continues,"},{"id":"segment-378","startMs":371760,"endMs":372950,"text":"solve this SEO problem. If it continues,\njust give us a shout. We're more than"},{"id":"segment-379","startMs":372950,"endMs":372960,"text":"just give us a shout. We're more than"},{"id":"segment-380","startMs":372960,"endMs":374670,"text":"just give us a shout. We're more than\nhappy to try and help and give you"},{"id":"segment-381","startMs":374670,"endMs":374680,"text":"happy to try and help and give you"},{"id":"segment-382","startMs":374680,"endMs":377150,"text":"happy to try and help and give you\npointers in the right direction. Thanks"},{"id":"segment-383","startMs":377150,"endMs":377160,"text":"pointers in the right direction. Thanks"},{"id":"segment-384","startMs":377160,"endMs":379310,"text":"pointers in the right direction. Thanks\na lot. Have a great day. Take care."},{"id":"segment-385","startMs":379310,"endMs":379320,"text":"a lot. Have a great day. Take care."},{"id":"segment-386","startMs":379320,"endMs":381600,"text":"a lot. Have a great day. Take care.\nBye-bye."}],"transcript":"Hey bird, how you doing? So, first of all, I wanted to put this on YouTube so everybody else can actually see the answer to this question because I get asked this so many times on a daily basis, but I thought it might be helpful for you. Uh, so in short, and this is a very, very common thing that we get: has anybody done SEO work on Sanity before? Doesn't really go too much into what's actually built into the model, but I hear this time and time again. Um, and the reason why you have this happen so much is because Sanity is very, very unopinionated. And the reason why it's very, very unopinionated is because it can create models that can do anything, genuinely anything, when it comes to just writing a blog, or it can be more complex, as in running an entire e-commerce system, or it can be as simple as creating like a terminal that tells you the latest train times at a train station. It's really, really scalable.\n\nAnyway, so what I'll talk about is a little bit of this. So this is an old Learn article that we wrote with Sanity, which is really helpful. It tells you about how you should opinionate your actual SEO, and it's all good and fine if you want to take the time out to go look through this. That's great. You've got a lot more time than I have, so that's fantastic. Now, I'm going to show you something totally different. This is actually the Turbo Start, and this is the way that we do it. It's the same thing that's in the Sanity Learn documentation. Um, but I know how low people's attention spans are today, so very, very quickly, I'll show you how this works. This is how we opinionate SEO and we do the exact same on every single one of our projects.\n\nSo when we build a page for a page builder or for a blog or any other document type, it has a title, okay? And you can do validation. You can do things like, oh, it has to be x number of characters. You can do that. That's really cool if you think it would help the client. But for the simplicity of this, we don't have like that little number underneath, um, because we're trying to be unopinionated. Um, and description, which is going to be effectively used as your meta description on the page. This can also double up. So if, for example, it's a blog, um, the title of the blog could also be the title that sits inside of here, and the description could be the little blurb that you get just before you click into the blog on a card. That's one thing to know. So this becomes our baseline.\n\nThe same with images. So you may see an image in here as well. Um, which I believe is an SEO. So ours is a SEO image override. Um, however, sometimes we actually include the image in here as well. It could be that it should be in here. Nope, okay. Um, that might get tweaked on the Turbo Start Sanity, but essentially I like to have an image inside of here as well as part of the pages as a fallback image. However, we have this secondary tab which is SEO. This is your SEO, your meta title. So your title tags at the top, um, and the meta description, which would be in the meta description section. Um, and these will override the title and the description. And you might ask, hold up, if we've got the title and description, then what's going to happen if we override them? Then there surely there's no reason to have these in the first place. Well, the reason we have these is because they're always a fallback. So it means that you have a consistent way of editing your pages, whether that's a page with page builder blocks or a blog which has like the blog title, blog description. So it may not appear on all pages.\n\nNow we've got our SEO. So our metas are sorted. What about our open graph? Well, makes perfect sense. Let's do open graph title, open graph description. And you can go a step further and also do, I think there's a separate open graph image. Uh, you can separate it out down to as granular a level as here's what we want to have on Twitter, here's what we want to have on Facebook, and I think LinkedIn does it as well, just off the top of my head. Um, this is kind of like our de facto baseline. So I would highly, highly recommend doing it this way. Um, however, you can go a lot more granular. You can put JSON-LD in there. You can do all sorts of things. However, a note on JSON-LD, and I've said this to a lot of different people: I much, much prefer set and forget JSON-LD. So if you're already putting all this data like titles and descriptions and things like that in there, and authors. If you're on a blog page, let me show you a quick example of this.\n\nUm, I'm wondering if we have authors on here. I hope we do. If we don't, I'm going to tell you how to do it. Uh, we do. Great. So if we've got all of these authors that are inside of here, why don't we just pull those authors into JSON-LD by default, which is set and forget? So you don't have to think about it. You just enter the data inside of Sanity and a like-for-like pair comes up with JSON-LD. And it's not so complicated these days with AI, so you can even do this relatively quickly. Um, but yeah, this is what I'm talking about when I talk about a de facto default SEO experience. What you should use as a baseline for every single Sanity website that is going to be a website. This obviously differs if it's going to be a different function. But if you're looking to start this straight away, or in your case, I would just literally go to the Sanity Exchange, go find Turbo Start Sanity. You can also find this on GitHub. Um, go view the repo and tell the developer to just go look inside of here.\n\nUm, and pay special attention to two files. One of them is Query. So Query shows you how we handle our Groq queries. And Groq is the query language from Sanity. And then the second thing you want to pay attention to inside of here (um, let me see if I can find it for you. Let me just press up top, any second now) is the SEO. I think it's SEO fields which you can see you can reuse this. This is what we use on ours where it's the SEO title, SEO description. Makes perfect sense. SEO image, SEO no index, and SEO hide from lists. And the reason we have these two left is because obviously you want to have a no index. Sometimes maybe it's a pay-per-click content page that you very specifically want to tunnel down a specific person that's coming to your website. And the second one is SEO hide from lists because, for example, you have a blog post. It may be that you don't want that blog post to show up on certain lists. It may be that you have a no index and you also don't want it to show up on certain lists, or vice versa. That's the reason why we do this because if you have SEO hide from lists inside of your Groq, you can say give me all the blogs except for the ones that are getting hidden from lists, and it's really nice and easy to work with.\n\nUh, there's some very basic validation here. If the SEO problem continues, just give us a shout. We're more than happy to try and help and give you pointers in the right direction. Thanks a lot. Have a great day. Take care. Bye-bye.","transcriptOrigin":"Edited transcript from the original Roboto page","thumbnailUrl":"https://img.youtube.com/vi/nG7IgrhaJBY/maxresdefault.jpg","durationSeconds":395,"videoId":"nG7IgrhaJBY","publisherName":"Roboto Studio","faqs":[{"question":"Does Sanity have built-in SEO support?","answer":"Sanity is very unopinionated by design, which means it doesn't come with a fixed SEO setup out of the box. That's actually a feature, not a bug: it lets you build SEO to suit any project, whether that's a simple blog or a full e-commerce system. We have a Learn article that walks through how to opinionate your SEO, and our Turbo Start Sanity starter is a great practical reference for how we do it on every project.","sourceUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"},{"question":"What is the baseline SEO setup you recommend for every Sanity project?","answer":"Our de facto baseline includes a title and description field on every document type, which act as fallbacks, and then a dedicated SEO tab with a meta title and meta description that override those fallbacks when set. We also add open graph title, open graph description, and an open graph image. This gives you a consistent editing experience across page builder pages, blogs, and any other document type.","sourceUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"},{"question":"Why have a separate SEO title and description if there's already a title and description?","answer":"The top-level title and description are always a fallback, so every page has something sensible in place even if no one fills in the SEO tab. The SEO-specific fields let editors fine-tune exactly what appears in search results and social previews without changing the page's actual content fields. It's a clean separation that keeps things flexible without leaving anything blank.","sourceUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"},{"question":"How do you handle open graph and social sharing metadata?","answer":"We add open graph title and open graph description as a baseline, plus a separate open graph image field. You can go even more granular and split this out per platform (Twitter, Facebook, LinkedIn each support their own tags), but the open graph baseline is what we'd recommend as a starting point for most projects.","sourceUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"},{"question":"What is your approach to JSON-LD structured data in Sanity?","answer":"We strongly prefer set-and-forget JSON-LD, meaning we automatically generate it from data that's already in Sanity rather than asking editors to fill in extra fields. For example, if a blog post already has authors assigned to it, we just pull those authors into the JSON-LD automatically. With AI it's pretty quick to wire this up, and it means the structured data stays accurate without anyone having to think about it.","sourceUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"},{"question":"What are the 'no index' and 'hide from lists' SEO fields for?","answer":"The no index field is useful for things like pay-per-click landing pages where you want to drive specific traffic but keep the page out of search results. Hide from lists is a separate toggle because sometimes you want a post excluded from sitewide blog listings even if it is indexed, or vice versa. Having both as explicit fields means you can filter them cleanly in your Groq queries: for example, fetch all blogs except those hidden from lists.","sourceUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"},{"question":"Where can I find your SEO setup to use it as a reference?","answer":"You can find the Turbo Start Sanity starter on the Sanity Exchange or on GitHub. The two files worth paying close attention to are the Query file, which shows how we handle our Groq queries, and the SEO fields file, which covers the SEO title, description, image, no index, and hide from lists fields. You can point your developer straight at the repo and they should be able to get up and running quickly.","sourceUrl":"https://robotostudio.com/videos/sanity-seo-done-right-open-graph-json-ld-fallbacks"}],"path":"/videos/nG7IgrhaJBY/sanity-seo-done-right-open-graph-json-ld-fallbacks","indexable":false,"contentHash":"22165f18a7ed595442fa8ed25a47eb419bd2f5b166cc689f0bdcb1d93efcafc4","representations":{"html":"https://bestsanityagency.com/videos/nG7IgrhaJBY/sanity-seo-done-right-open-graph-json-ld-fallbacks","markdown":"https://bestsanityagency.com/videos/nG7IgrhaJBY/sanity-seo-done-right-open-graph-json-ld-fallbacks.md","json":"https://bestsanityagency.com/videos/nG7IgrhaJBY/sanity-seo-done-right-open-graph-json-ld-fallbacks.json"},"generation":"bcb598ae5ec44a3005ea0356","jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://robotostudio.com/#organization","name":"Roboto Studio","url":"https://robotostudio.com/","sameAs":["https://clutch.co/profile/roboto-studio","https://www.youtube.com/@robotostudio","https://x.com/studioroboto"]},{"@type":"Person","@id":"https://robotostudio.com/blog/author/jono#person","name":"Jono Alford","url":"https://robotostudio.com/blog/author/jono","sameAs":["https://dev.to/jonoroboto","https://x.com/jonoalford","https://www.reddit.com/user/jonoalford/"],"worksFor":{"@id":"https://robotostudio.com/#organization"}},{"@type":"Person","@id":"https://robotostudio.com/blog/author/sne#person","name":"Sne Tripathi","url":"https://robotostudio.com/blog/author/sne","sameAs":["https://x.com/sne_hil"],"worksFor":{"@id":"https://robotostudio.com/#organization"}},{"@type":"WebSite","@id":"https://bestsanityagency.com/#website","url":"https://bestsanityagency.com","name":"Roboto Studio evidence","publisher":{"@id":"https://robotostudio.com/#organization"}},{"@type":"WebPage","@id":"https://bestsanityagency.com/videos/nG7IgrhaJBY/sanity-seo-done-right-open-graph-json-ld-fallbacks#page","url":"https://bestsanityagency.com/videos/nG7IgrhaJBY/sanity-seo-done-right-open-graph-json-ld-fallbacks","name":"Sanity SEO done right: Open Graph, JSON-LD, fallbacks","publisher":{"@id":"https://robotostudio.com/#organization"},"mainEntity":{"@id":"https://www.youtube.com/watch?v=nG7IgrhaJBY"},"isPartOf":{"@id":"https://bestsanityagency.com/#website"}},{"@id":"https://www.youtube.com/watch?v=nG7IgrhaJBY","name":"Sanity SEO done right: Open Graph, JSON-LD, fallbacks","url":"https://www.youtube.com/watch?v=nG7IgrhaJBY","datePublished":"2026-05-18T00:00:00.000Z","dateModified":"2026-09-04","inLanguage":"en","author":[{"@id":"https://robotostudio.com/blog/author/jono#person"}],"@type":"VideoObject","description":"A quick walkthrough of how we handle SEO inside every Sanity project we build - the exact schema patterns, fallback logic, and Open Graph setup we use as a default baseline on Turbo Start Sanity.","transcript":"Hey bird, how you doing? So, first of all, I wanted to put this on YouTube so everybody else can actually see the answer to this question because I get asked this so many times on a daily basis, but I thought it might be helpful for you. Uh, so in short, and this is a very, very common thing that we get: has anybody done SEO work on Sanity before? Doesn't really go too much into what's actually built into the model, but I hear this time and time again. Um, and the reason why you have this happen so much is because Sanity is very, very unopinionated. And the reason why it's very, very unopinionated is because it can create models that can do anything, genuinely anything, when it comes to just writing a blog, or it can be more complex, as in running an entire e-commerce system, or it can be as simple as creating like a terminal that tells you the latest train times at a train station. It's really, really scalable.\n\nAnyway, so what I'll talk about is a little bit of this. So this is an old Learn article that we wrote with Sanity, which is really helpful. It tells you about how you should opinionate your actual SEO, and it's all good and fine if you want to take the time out to go look through this. That's great. You've got a lot more time than I have, so that's fantastic. Now, I'm going to show you something totally different. This is actually the Turbo Start, and this is the way that we do it. It's the same thing that's in the Sanity Learn documentation. Um, but I know how low people's attention spans are today, so very, very quickly, I'll show you how this works. This is how we opinionate SEO and we do the exact same on every single one of our projects.\n\nSo when we build a page for a page builder or for a blog or any other document type, it has a title, okay? And you can do validation. You can do things like, oh, it has to be x number of characters. You can do that. That's really cool if you think it would help the client. But for the simplicity of this, we don't have like that little number underneath, um, because we're trying to be unopinionated. Um, and description, which is going to be effectively used as your meta description on the page. This can also double up. So if, for example, it's a blog, um, the title of the blog could also be the title that sits inside of here, and the description could be the little blurb that you get just before you click into the blog on a card. That's one thing to know. So this becomes our baseline.\n\nThe same with images. So you may see an image in here as well. Um, which I believe is an SEO. So ours is a SEO image override. Um, however, sometimes we actually include the image in here as well. It could be that it should be in here. Nope, okay. Um, that might get tweaked on the Turbo Start Sanity, but essentially I like to have an image inside of here as well as part of the pages as a fallback image. However, we have this secondary tab which is SEO. This is your SEO, your meta title. So your title tags at the top, um, and the meta description, which would be in the meta description section. Um, and these will override the title and the description. And you might ask, hold up, if we've got the title and description, then what's going to happen if we override them? Then there surely there's no reason to have these in the first place. Well, the reason we have these is because they're always a fallback. So it means that you have a consistent way of editing your pages, whether that's a page with page builder blocks or a blog which has like the blog title, blog description. So it may not appear on all pages.\n\nNow we've got our SEO. So our metas are sorted. What about our open graph? Well, makes perfect sense. Let's do open graph title, open graph description. And you can go a step further and also do, I think there's a separate open graph image. Uh, you can separate it out down to as granular a level as here's what we want to have on Twitter, here's what we want to have on Facebook, and I think LinkedIn does it as well, just off the top of my head. Um, this is kind of like our de facto baseline. So I would highly, highly recommend doing it this way. Um, however, you can go a lot more granular. You can put JSON-LD in there. You can do all sorts of things. However, a note on JSON-LD, and I've said this to a lot of different people: I much, much prefer set and forget JSON-LD. So if you're already putting all this data like titles and descriptions and things like that in there, and authors. If you're on a blog page, let me show you a quick example of this.\n\nUm, I'm wondering if we have authors on here. I hope we do. If we don't, I'm going to tell you how to do it. Uh, we do. Great. So if we've got all of these authors that are inside of here, why don't we just pull those authors into JSON-LD by default, which is set and forget? So you don't have to think about it. You just enter the data inside of Sanity and a like-for-like pair comes up with JSON-LD. And it's not so complicated these days with AI, so you can even do this relatively quickly. Um, but yeah, this is what I'm talking about when I talk about a de facto default SEO experience. What you should use as a baseline for every single Sanity website that is going to be a website. This obviously differs if it's going to be a different function. But if you're looking to start this straight away, or in your case, I would just literally go to the Sanity Exchange, go find Turbo Start Sanity. You can also find this on GitHub. Um, go view the repo and tell the developer to just go look inside of here.\n\nUm, and pay special attention to two files. One of them is Query. So Query shows you how we handle our Groq queries. And Groq is the query language from Sanity. And then the second thing you want to pay attention to inside of here (um, let me see if I can find it for you. Let me just press up top, any second now) is the SEO. I think it's SEO fields which you can see you can reuse this. This is what we use on ours where it's the SEO title, SEO description. Makes perfect sense. SEO image, SEO no index, and SEO hide from lists. And the reason we have these two left is because obviously you want to have a no index. Sometimes maybe it's a pay-per-click content page that you very specifically want to tunnel down a specific person that's coming to your website. And the second one is SEO hide from lists because, for example, you have a blog post. It may be that you don't want that blog post to show up on certain lists. It may be that you have a no index and you also don't want it to show up on certain lists, or vice versa. That's the reason why we do this because if you have SEO hide from lists inside of your Groq, you can say give me all the blogs except for the ones that are getting hidden from lists, and it's really nice and easy to work with.\n\nUh, there's some very basic validation here. If the SEO problem continues, just give us a shout. We're more than happy to try and help and give you pointers in the right direction. Thanks a lot. Have a great day. Take care. Bye-bye.","thumbnailUrl":"https://img.youtube.com/vi/nG7IgrhaJBY/maxresdefault.jpg","embedUrl":"https://www.youtube.com/embed/nG7IgrhaJBY","uploadDate":"2026-05-18T00:00:00.000Z","duration":"PT395S","publisher":{"@type":"Organization","name":"Roboto Studio"},"caption":{"@type":"MediaObject","contentUrl":"https://bestsanityagency.com/videos/nG7IgrhaJBY/sanity-seo-done-right-open-graph-json-ld-fallbacks.vtt","encodingFormat":"text/vtt"}}]}}