무료 도구 · 레시피 스키마 생성기
레시피 스키마 생성기
레시피를 붙여넣으면 조리 순서를 HowToStep으로, 시간을 제대로 된 ISO 8601로 바꾼 Recipe JSON-LD를 만들고, 두 속성이 서로 어긋날 때마다 경고합니다. 레시피 마크업이 틀어지는 길은 대부분 그 어긋남입니다. 구글과 네이버가 필수로 요구하는 것이 서로 다르다는 점도 함께 짚습니다.
다른 언어:English繁體中文日本語한국어EspañolFrançaisDeutschPortuguês (Brasil)
구글의 필수 속성입니다. 완성된 요리의 사진이어야 하고 크롤링과 색인이 가능해야 합니다.
추가로 설명하는 말만 넣습니다. 요리 분류나 요리 스타일을 그대로 반복하는 키워드가 구글이 넣지 말라고 한 바로 그것입니다.
10분, 1시간 30분, 1.5시간, 90, 1:30, PT10M 중 편한 형식으로 씁니다. 단위 없는 소수(1,5)는 짐작하지 않고 오류로 돌려보냅니다.
구글의 규칙: 준비 시간과 반드시 함께 씁니다.
이것 하나를 주거나, 위의 둘을 모두 줍니다.
인분 수를 숫자로만 씁니다. 구글은 숫자만, 네이버는 숫자 또는 숫자와 단위를 받으므로 2라고 쓰면 둘 다 만족합니다.
인분 수가 있어야 의미가 있습니다 — 구글 문서가 두 값을 한 문장으로 묶어 둡니다.
요리에 필요한 재료 텍스트만 넣습니다. 한국식 계량(큰술·작은술·컵)에 ml를 괄호로 덧붙이면 해외 레시피의 컵과 헷갈리지 않습니다.
각 줄이 HowToStep 하나가 됩니다. 줄 앞에 1단계, 만드는 법, 조리 순서, Step 1 같은 머리말이 있으면 경고합니다. 영상 보기처럼 그 밖의 문구는 직접 빼세요.
모두 이 페이지 안에서 처리됩니다. 레시피, 사진 URL, 재료 목록은 브라우저 밖으로 나가지 않습니다.
출처: 구글 검색 센터 — 레시피 스키마 마크업(필수 속성, 시간의 짝, 열량과 recipeYield, 조리 순서의 금지 문구), 네이버 서치어드바이저 — 레시피(Recipe)(recipeInstructions 필수, 이미지 가이드라인, recipeYield 형식), 만개의레시피 — 계량법 안내(큰술 15ml, 작은술 5ml, 컵 200ml), 만개의레시피 레시피 페이지 예(실제 Recipe JSON-LD), schema.org Energy(열량 값의 형식). 모두 2026년 9월 26일에 원문을 확인했습니다.
레시피 스키마를 만드는 방법
레시피는 속성끼리 서로 묶인 규칙이 유난히 많은 유형입니다. 생성기는 한 벌의 값에서 마크업과 레시피 카드를 함께 쓰고, 눈에 띄는 모순을 모두 알려 줍니다.
- 요리 이름과 사진을 넣습니다. 구글에서는 이 둘이 필수입니다. 사진은 완성된 요리여야 하고 URL은 크롤링이 가능해야 합니다. 같은 사진을 여러 비율로 주는 것을 구글이 권합니다.
- 시간은 맞는 짝으로 줍니다. 총 시간 하나, 또는 준비 시간과 조리 시간 둘을 함께 줍니다. 분 단위 숫자로 적어도 결과는 ISO 8601로 나갑니다.
- 열량은 인분 수와 묶습니다. 열량은 1인분 기준이라 인분 수가 없으면 불완전합니다. 구글이 한 문장으로 요구하는 내용이라 생성기는 이것을 오류로 다룹니다.
- 재료와 조리 순서를 줄 단위로 씁니다. 재료 한 줄에 하나, 단계 한 줄에 하나. 각 단계는 HowToStep이 됩니다. 네이버 레시피 가이드가 필수로 두는 것이 바로 이 조리 순서입니다.
- 두 결과물을 붙여넣습니다. JSON-LD는 레시피 페이지에, 카드는 독자가 읽는 자리에 넣습니다. 카드에는 같은 재료와 같은 단계가 들어 있습니다. 마크업한 내용은 페이지에 보이는 내용과 같아야 합니다.
구글과 네이버는 필수 속성부터 다릅니다
레시피 스키마 생성기는 레시피를 Recipe 유형의 JSON-LD, 즉 구글과 네이버가 재료·조리 순서·시간·분량을 읽어 가는 구조화된 데이터로 바꿔 주는 도구입니다. 구글 검색 센터의 한국어 문서와 네이버 서치어드바이저의 레시피 가이드는 같은 schema.org Recipe를 쓰지만, 무엇을 반드시 요구하는지는 정반대에 가깝습니다.
| 항목 | 구글 | 네이버 |
|---|---|---|
| 필수 | name, image(완성된 요리 사진) | recipeInstructions(조리 순서) |
| 인분 | 숫자만으로 분량을 지정. 1인분 영양 정보를 쓰면 필수 | 숫자 혹은 숫자와 단위(인분, serving) |
| 시간 | totalTime, 또는 cookTime과 prepTime을 함께 | totalTime을 ISO 8601로(예: PT30M) |
| 이미지 | 크롤링·색인 가능, 여러 비율 권장 | 완성된 요리, 썸네일이 아닌 원본, 이미지 간 중복 없이, 로고·기본·깨진 이미지 금지 |
| 단계와 재료 | 요리 방법 텍스트만. '지침', '동영상 보기', '1단계' 같은 글 제외 | 하나씩 개별로. 순서 정보 같은 메타데이터 제외 |
| 구조 | HowToStep 권장, 섹션이 있을 때만 HowToSection | HowTo 속성 하위에 작성하지 않음 |
둘 다 만족시키는 가장 짧은 길은 이렇습니다. name, 완성 사진 image, HowToStep으로 나눈 recipeInstructions를 모두 넣고, 인분은 2처럼 숫자만 씁니다. 숫자는 구글과 네이버가 모두 받는 형태입니다. 이 생성기의 출력이 정확히 그 모양이고, 조리 순서가 비어 있으면 경고합니다. 네이버는 여기에 단서를 하나 붙입니다. 마크업을 정상적으로 했더라도 검색결과 반영은 보장하지 않는다는 것입니다.
큰술·작은술·컵: 한국식 계량을 재료 줄에 쓰는 법
재료 줄은 사람이 읽는 텍스트이고, 구글이 요구하는 것은 레시피를 만드는 데 필요한 재료 텍스트만 넣으라는 것뿐입니다. 단위를 바꾸라는 규칙은 없습니다. 다만 한국 레시피의 단위는 해외 레시피와 같은 이름으로 다른 양을 가리키는 경우가 있습니다.
- 1컵은 200ml입니다. 만개의레시피의 계량법 안내는 1큰술(1T)을 15ml, 1작은술(1t)을 5ml, 1컵(1C)을 200ml, 종이컵 하나를 180ml로 적습니다. 영어권 레시피의 cup과는 이름이 같아도 양이 다를 수 있으니
쌀뜨물 2컵(400ml)처럼 ml를 괄호로 덧붙이세요. 번역되거나 인용될 때도 양이 흔들리지 않습니다. - T와 t는 대소문자로 뜻이 갈립니다. 같은 안내에서 대문자 T는 큰술, 소문자 t는 작은술이고 1T는 3t입니다.
간장 12T와간장 12t는 세 배 차이입니다. 헷갈릴 여지를 없애려면 한글로 큰술, 작은술이라고 씁니다. - 한 꼬집, 한 줌, 약간. 손 계량도 한국 레시피의 일부이고 그대로 써도 재료 텍스트입니다. 다만 재료의 정의나 어디서 사는지 같은 설명은 재료 줄이 아니라 본문에 둡니다.
실제 모습도 확인했습니다. 만개의레시피의 레시피 페이지 두 곳(2026-09-26 확인)은 Recipe JSON-LD에 totalTime 하나, 2 servings 같은 recipeYield, 단계마다 사진이 달린 HowToStep, 설탕 4T나 국간장 1큰술 같은 재료 줄을 싣고 있습니다. 네이버 가이드의 예제와 같은 모양입니다. 구글 기준으로 다듬을 곳은 인분 하나입니다. 구글은 분량을 숫자만으로 적으라고 하니 2로 쓰면 두 쪽을 모두 만족합니다.
시간 속성 셋과, 허용되는 짝
구글 문서는 cookTime에 대해 항상 prepTime과 함께 사용하세요, prepTime에 대해 항상 cookTime과 함께 사용하세요, totalTime에 대해 totalTime을 사용하거나 cookTime과 prepTime을 조합하여 사용하세요라고 적습니다. 허용되는 모양은 정확히 둘이고, 흔히 보이는 잘못된 모양이 하나 있습니다.
| 적은 것 | 판정 |
|---|---|
totalTime 하나 | 괜찮음 — 네이버 가이드의 예제도 이 모양 |
prepTime + cookTime(totalTime은 있어도 없어도) | 괜찮음 |
cookTime 하나 — 오븐에서 45분짜리 레시피 | 규칙 위반. 문서가 이 경우를 콕 집습니다. |
| 시간 없음 | 유효하지만 결과에 보여 줄 시간이 없음 |
세 속성의 값은 모두 ISO 8601 기간입니다. 1.5시간이 아니라 PT1H30M입니다. 사람이 그 형식으로 적을 필요는 없습니다. 이 양식은 40분, 1시간 30분, 1.5시간, 분 단위 숫자(40), 1:30, ISO 문자열을 받아 ISO 형식으로 내보냅니다. 단위 없이 소수만 적은 값(1,5)은 1.5분인지 한 시간 반인지 짐작하지 않고 오류로 돌려보냅니다.
구글의 규칙이 아닌 것도 분명히 해 둡니다. totalTime이 prepTime과 cookTime의 합과 같아야 한다는 규칙은 없습니다. 재우기, 식히기, 숙성은 실제로 걸리는 시간입니다. 이 도구는 그래도 총 시간이 합보다 짧으면 경고합니다. 정책이 아니라 산수이고, 그 방향의 차이는 대개 오타이기 때문입니다.
조리 순서는 번호 없이, 열량은 인분과 함께
recipeInstructions를 한 덩어리 글로 주면 구글이 단계를 스스로 나누려 하고, 섹션 이름과 단계 번호 같은 것을 찾아 지우려고 합니다. 구글은 그 대신 HowToStep으로 단계를 명확하게 지정하라고 권합니다. 이 생성기는 한 줄에 HowToStep 하나를 쓰고, 문서의 지시 — 요리를 만드는 방법에 관한 텍스트만 포함하고 '지침', '동영상 보기', '1단계' 같은 글은 넣지 말 것 — 를 검사합니다. 줄 앞에 붙은 1단계, 만드는 법, 조리 순서와 영어 Step 1, Directions, Watch the video는 경고로 잡아냅니다. 영상 보기처럼 이 목록에 없는 문구는 직접 지우세요. 번호는 목록의 순서가 대신합니다.
영양 정보에 관한 구글의 문장은 짧습니다. nutrition.calories가 정의되어 있으면 recipeYield는 분량에 따라 정의되어야 합니다. 열량은 1인분 기준이므로 몇 인분인지 모르면 그 숫자는 정보가 아닙니다. 그래서 이 생성기는 인분이 빠진 열량을 경고가 아닌 오류로 다룹니다. 값의 모양은 구글 예시(120 calories)처럼 숫자 뒤에 단위를 붙인 문자열이고, schema.org도 에너지 값을 숫자와 에너지 단위를 이은 형식으로 정의합니다.
"recipeYield": "2"
"nutrition": { "@type": "NutritionInformation", "calories": "480 calories" }
키워드에도 같은 절제가 필요합니다. 계절('여름'), 휴일, '쉬운' 같은 추가 설명을 위한 칸이지 다른 속성을 되풀이하는 칸이 아닙니다. 구글의 비권장 예시가 "dessert, American"인 이유입니다. dessert는 recipeCategory에, American은 recipeCuisine에 이미 있습니다. 이 양식은 요리 분류나 요리 스타일과 똑같은 키워드를 표시합니다.
레시피에 평점이나 영상을 더하려면 각각 리뷰 스키마 생성기와 동영상 스키마 생성기의 규칙을 따릅니다. 구글은 레시피에 단일 리뷰가 달린 경우 작성자 이름이 유효한 개인이나 조직이어야 한다며 '재료 50% 할인'을 무효 예시로 듭니다. 질문과 답변을 곁들인 레시피라면 FAQ 스키마 생성기가 같은 원칙 — 원고는 하나, 결과물은 둘 — 으로 만들어졌습니다.
자주 묻는 질문
레시피 스키마 생성기는 무엇을 만들어 주나요?
레시피 스키마 생성기는 레시피를 Recipe 유형의 JSON-LD, 즉 구글과 네이버가 재료·조리 순서·시간·분량을 읽어 가는 구조화된 데이터로 바꿔 주는 도구입니다. 이 생성기는 조리 순서를 HowToStep으로 쓰고 시간을 ISO 8601로 바꾸며, 두 속성이 서로 모순되는 곳을 알려 줍니다.
구글과 네이버의 레시피 필수 속성은 어떻게 다른가요?
구글은 name과 image(완성된 요리 사진)를 필수로 두고, 네이버 서치어드바이저 레시피 가이드는 recipeInstructions(조리 순서)를 필수로 둡니다. 둘 다 만족하려면 요리 이름, 완성 사진, HowToStep으로 나눈 조리 순서를 모두 넣으면 됩니다.
1큰술, 1컵 같은 한국식 계량은 어떻게 써야 하나요?
재료 텍스트로 그대로 써도 됩니다. 구글은 요리에 필요한 재료 텍스트만 넣으라고 할 뿐 단위를 정하지 않습니다. 만개의레시피 계량법 안내 기준으로 1큰술은 15ml, 1작은술은 5ml, 1컵은 200ml이니, 2컵(400ml)처럼 ml를 괄호로 덧붙이면 양이 헷갈리지 않습니다.
recipeYield에 2인분이라고 써도 되나요?
구글 문서는 숫자만으로 분량을 지정하라고 하고, 네이버 가이드는 숫자 또는 숫자와 단위(인분, serving)를 받습니다. 2라고만 쓰면 두 쪽을 모두 만족합니다. 열량을 넣었다면 recipeYield는 필수입니다.
cookTime만 넣어도 되나요?
안 됩니다. 구글 문서는 cookTime과 prepTime 모두에 항상 다른 쪽과 함께 사용하라고 적습니다. 숫자를 하나만 안다면 totalTime에 넣으세요. totalTime 하나는 받아들여지는 두 형태 중 하나이고, 네이버 가이드의 예제도 이 모양입니다.
조리 순서에 1단계, 2단계를 써도 되나요?
쓰지 않는 것이 맞습니다. 구글은 요리 방법에 관한 텍스트만 넣고 지침, 동영상 보기, 1단계 같은 글은 구조화된 데이터 밖에 두라고 하고, 네이버도 순서 정보 같은 메타데이터를 넣지 말라고 합니다. 번호는 목록의 순서가 대신합니다.
칼로리를 넣으면 왜 인분 수가 필수인가요?
구글이 그렇게 요구하기 때문입니다. nutrition.calories가 정의되어 있으면 recipeYield는 분량에 따라 정의되어야 합니다. 열량은 1인분 기준이라 몇 인분인지 모르면 그 숫자는 정보가 되지 못하고, 문서는 두 값을 한 사실로 다룹니다.
내 레시피 가운데 구글이 실제로 알고 있는 것은 몇 개일까요?
자기 도메인 점검은 무료입니다. 페이지마다 현재 HTTP 상태와 색인 판정, 직전 기간 대비 노출수와 평균 순위, 유입 경로별 트래픽(AI 엔진은 따로 집계)을 돌려줍니다. 에이전트 안에서 명령 하나면 됩니다.
$ npm i -g @clize/clize && clize install $ clize seo check --domain yourdomain.co.kr[ Clize의 Agent SEO → ]