AI로 작성한 글의 Article JSON-LD는 본문과 날짜·이미지·작성자 정보가 맞는지 확인해야 합니다. 로컬 편집 검사기에서 누락 세 항목을 찾고 수정 후 결과를 직접 검증했습니다.
본문이 좋아도 구조화 데이터가 어긋날 수 있다
AI 글쓰기 자동화에 검색용 메타데이터 생성을 함께 맡기면 제목과 요약은 잘 보여도 날짜나 작성자 정보는 오래된 예제를 그대로 가져올 수 있습니다. 본문을 수정한 시각을 최초 발행 시각으로 넣거나 실제 대표 이미지와 다른 주소를 지정하는 문제도 생깁니다. 독자가 보는 글과 검색엔진이 읽는 정보가 같은 대상을 설명하는지 검수해야 합니다.
이 실습은 전체 사이트의 SEO 감사를 대신하지 않습니다. Article 객체 한 개를 입력받아 작은 편집 체크리스트를 확인합니다. context·type, 비어 있지 않은 headline, HTTPS image, 시간대가 있는 datePublished, author.name을 선택했습니다. 각 항목의 존재와 기본 형식을 점검할 뿐 본문 내용과의 의미 일치나 웹상의 실제 접근 권한은 사람과 별도 검사 단계에서 확인해야 합니다.
공식 지원 속성과 자체 필수 기준을 구분한다
Google Search Central의 Article 안내는 기사 관련 구조화 데이터를 제공하는 방법과 속성을 설명합니다. Schema.org Article 페이지는 Article 유형에서 쓰는 속성의 의미를 확인하는 기준입니다. 본문의 도구는 공식 문서를 읽은 뒤 블로그 운영에 필요한 다섯 항목을 자체 체크리스트로 선택한 것입니다.
Google의 안내에 있는 권장 속성을 이 검사기의 필수 조건과 동일하다고 표현하지 않습니다. 검색 결과 표시 여부는 구조화 데이터의 문법만으로 결정되지 않으며 정책과 검색 시스템의 판단도 관계됩니다. 오류 0건은 이 코드가 정한 항목을 통과했다는 뜻입니다. 정식 검증은 공개 URL에서 실제 HTML을 확인하고 공식 리치 결과 테스트 도구와 Search Console 같은 별도의 경로에서 수행해야 합니다.
직접 실행 결과: 누락 항목 세 가지를 찾았다
검증일 2026-10-01입니다. Windows Chromium 1200×675에서 자체 작성한 교육용 로컬 검사기를 실행했습니다. 처음 입력값은 context=https://schema.org, type=Article, headline=Guide 세 항목만 있는 JSON 객체입니다. 검사 결과 image, datePublished, author.name에 대한 세 오류를 확인했습니다.
수정 예제는 HTTPS 이미지 주소와 +09:00이 있는 발행 시각, 이름이 있는 Person 객체를 추가합니다. 수정 예제 적용 후 직접 검사를 누르자 편집 체크리스트 다섯 항목 확인과 오류 0건이 표시됐습니다. 이미지 주소는 example.com을 쓰는 교육용 문자열이며 실제 미디어 다운로드 시험을 했다는 뜻은 아닙니다. 두 캡처와 영상은 이 입력 변경과 반환 결과를 같은 세션에서 직접 기록했습니다.


입력 객체와 검사 함수를 그대로 재현하기
아래의 함수와 예제 객체를 별도 파일이나 브라우저 개발자 도구에서 실행하세요. JSON-LD를 HTML에서 추출하는 부분은 포함하지 않았으므로 먼저 Article 객체 한 개의 문자열만 넘겨야 합니다. 전체 HTML이나 여러 객체가 들어 있는 배열을 전달하면 이 예제의 계약과 다릅니다. JSON 문법 오류와 필드 누락 오류를 서로 다른 단계로 볼 수 있습니다.
실제 자동화에서는 WordPress의 초안 데이터에서 제목·작성자·발행 예정 정보와 대표 이미지 주소를 먼저 가져오고 렌더링된 JSON-LD를 대조하는 방식이 좋습니다. 초안을 공개한 뒤 날짜가 바뀌면 실제 공개 날짜를 다시 조회해야 합니다. 예약 시각을 확인하지 않은 채 모든 글에 오늘 날짜를 넣으면 역사적 글의 정보가 왜곡될 수 있습니다. 기존 글의 최초 발행일과 수정일은 각각의 의미를 유지하세요.
const check = function(value) {
let d; try { d = JSON.parse(value); } catch { return { errors: ['JSON-LD 문법 오류'] }; }
if (!d || typeof d !== 'object' || Array.isArray(d)) return { errors: ['객체 필요'] };
const errors = [];
if (d['@context'] !== 'https://schema.org' || d['@type'] !== 'Article') errors.push('Article context/type 확인');
if (typeof d.headline !== 'string' || !d.headline.trim()) errors.push('headline 필요');
if (typeof d.image !== 'string' || !/^https:\/\//.test(d.image)) errors.push('공개 HTTPS image 필요');
if (typeof d.datePublished !== 'string' || !/T.*(?:Z|[+-]\d{2}:\d{2})$/.test(d.datePublished) || Number.isNaN(Date.parse(d.datePublished))) errors.push('시간대 포함 datePublished 필요');
if (!d.author || typeof d.author.name !== 'string' || !d.author.name.trim()) errors.push('author.name 필요');
return { errors };
};
console.log(check("{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Guide\"}"));
console.log(check("{\n \"@context\": \"https://schema.org\",\n \"@type\": \"Article\",\n \"headline\": \"Guide\",\n \"image\": \"https://example.com/cover.webp\",\n \"datePublished\": \"2026-10-01T09:00:00+09:00\",\n \"author\": {\n \"@type\": \"Person\",\n \"name\": \"Example Editor\"\n }\n}"));
한계와 실패 조건: 형식 검사는 검색 노출 보장이 아니다
이미지가 HTTPS로 시작해도 실제 응답이 404이거나 크롤러에 차단될 수 있습니다. 이 함수는 이미지 해상도·권리·대체 텍스트와 다운로드 결과를 검사하지 않습니다. 시간대 문자열은 기본 패턴과 Date.parse로 점검하지만 모든 달력 오류를 엄격하게 검증하는 날짜 라이브러리는 아닙니다. 실제 공개 시각과의 일치도 입력만으로 판단할 수 없습니다.
작성자 정보가 이름 문자열을 갖는다는 사실만으로 신뢰 페이지나 책임 소재가 갖춰지는 것도 아닙니다. 본문에 나타나는 작성자와 실제 페이지의 안내를 함께 확인해야 합니다. Article 외 NewsArticle·BlogPosting, 여러 author, 여러 image와 JSON-LD graph도 지원하지 않는 의도적으로 좁은 예제입니다. 다른 유형을 도입한다면 해당 공식 규칙을 읽고 별도 계약과 사례를 추가하세요. 검사 범위를 넓힌 뒤 기존 글 전체를 일괄 수정하기 전에 작은 대상에서 확인하는 편이 좋습니다.
발행 담당자가 자주 확인하는 질문
구조화 데이터를 넣으면 검색 상단에 나오나요? 이 실습은 그런 결과를 검증하지 않았으며 노출 순위를 보장하지 않습니다. 공개 URL의 접근과 정책 적합성, 실제 검색 상태를 별도로 봐야 합니다.
대표 이미지 주소만 넣으면 충분한가요? 코드의 형식 통과와 실제 사이트의 이미지 검증은 다릅니다. 다운로드 성공, 표시 크기, 본문과의 관련성을 확인하고 공개 HTML에도 같은 대표 이미지가 있는지 대조하세요.
날짜가 없으면 오늘 날짜로 채워도 되나요? 원래 글의 최초 공개 시각을 확인하세요. 임의로 채우면 틀린 정보가 됩니다. 발행 날짜와 수정 날짜의 역할을 구분한 뒤 검수 담당자가 확인한 값으로 수정해야 합니다.
검수 사례 표
| 입력 조건 | 직접 검사할 기대 결과 |
|---|---|
| headline만 있는 기본 객체 | image·datePublished·author 오류 3건 |
| 예제 속성을 보완한 객체 | 체크리스트 오류 0건 |
| 시간대 없는 날짜 | datePublished 규칙 오류 |
| HTTPS가 아닌 이미지 | image 규칙 오류 |
공식 출처와 함께 읽을 글
- 공식 기준 문서 — 2026-10-01 확인
- 기술 동작 참고 문서 — 2026-10-01 확인
AI 프롬프트 회귀 테스트 실전에서는 입력을 고정하고 수정 전후 차이를 확인하는 다른 검수 과정을 살펴볼 수 있습니다.