안녕하세요. 현재 Google Search Console에서 이 메시지를 받고 있습니다. 정확히 어떤 의미인지 잘 모르겠습니다. 이 문제에 대해 좀 더 명확한 설명을 받을 수 있을까요? 해결 방법이 있을까요? 또한, 플랫폼에서 여러 테마를 사용해 보았지만 동일한 오류가 계속되고 있음을 말씀드립니다.
가장 먼저 주목해야 할 점은, 당신이 보여준 링크가 Discussion Forum 스키마를 가지고 있지 않다는 것입니다. 해당 링크에는 “Breadcrumbs” 스키마만 있을 뿐, “Discussion Forum” 스키마는 전혀 없습니다. 이는 링크를 “데스크톱” 모드가 아닌 “스마트폰” 모드로 테스트하고 있기 때문입니다.
한 가지 짚어둘 점이 있습니다. 제 생각에는 스키마가 스마트폰 모드에서 표시되지 않는 것이 Discourse의 중요한 버그라고 봅니다. 구글은 존재하는 스키마 내의 오류만 플래깅하기 때문에 이를 자동으로 감지하지 못할 것입니다. 그러나 구글의 경우 몇 년 전부터 스마트폰 크롤링 및 색인이 기본 설정으로 되어 있으므로, 스키마가 스마트폰 모드 그리고 데스크톱 모드 모두에서 표시되는 것이 중요합니다.
일반적인 구조화된 데이터 선호도와 달리, DiscussionForumPosting 마크업은 가능한 경우 Microdata(또는 RDFa)로 제공하도록 권장합니다. 이를 통해 마크업 내에서 큰 텍스트 블록을 중복할 필요가 없기 때문입니다. 그러나 이는 단지 권장 사항일 뿐이며, JSON-LD도 여전히 완전히 지원됩니다.
→ *"포럼의 후속 페이지나 포럼 카테고리 페이지처럼 **외부 url*을 가진 다른 페이지에 게시물을 나타내고 있는 경우, 이것은 필수적이지 않습니다." ←
권장 속성
url
[…]
특별 참고 사항: url
“토론의 정준 URL(canonical URL)입니다. 다중 페이지 스레드인 경우, 이 속성을 첫 번째 페이지 URL로 설정하십시오. 단일 토론인 경우, 보통 현재 URL입니다.”
따라서 다음과 같이 결론을 내립니다:
page=2+에서 text를 다시 추가할 필요가 없습니다. (완료)
선택 속성인 url을 추가해야 합니다 - 특히 page=2+에서. (완료)
추가 조사가 필요한 사항:
author, author.name, datePublished와 같은 "필수 속성"들이 page=2+에서 정말로 필요한지, 아니면 반복하지 않아도 되는지?
→ validator.schema.org는 page=2+에서 속성이 누락된 것에 대해 경고하지 않습니다. (완료)
→ 이미 구현된 수정 사항이 라이브로 배포된 후 몇 시간 정도 지나면 "Google Search Console → 리포트: 강화(Enhancements) → 토론 포럼(Discussion forum)"에서 새로운 라이브 데이터를 확인하고 기다리기. (TODO)
일반 검증기: https://validator.schema.org/
이것은 구조화 데이터가 스키마 정의와 일치하는지, 그리고 마크업이 HTML/XML 규약을 준수하는지 확인합니다.
→ 검사되는 요구 사항은 Standard™에 따라 꽤 광범위하며 구체적이지 않습니다.
→ 발견된 모든 버그를 수정하는 것을 권장합니다.
Google Search Console
리포트: 강화(Enhancements) → 토론 포럼(Discussion forum): https://search.google.com/search-console/r/discussion-forum?hl=en
이것은 Google 크롤러에 의해 처리된 정보에 대한직접적인 피드백을 제공합니다.
→ 이 리포트는 구글 SEO에 대해 어느 정도 구속력이 있는 단단한 사실입니다: 구글이 무언가가 잘못되었다고 발표하면, 실제로는 그렇지 않더라도 구글도 그것을 잘못되었다고 생각합니다.
→ 무언가가 “무효” 또는 "개선 필요"로 표시되면, 수정에 대해 먼저 생각해 보는 것을 권장합니다. 그리고 알려진 부작용이 없다면, 항상 수정을 구현해야 합니다.
Google: Rich Results Test
https://search.google.com/test/rich-results?hl=en
이것은 시뮬레이션된 피드백만 제공하며, Google 크롤러가 아닙니다.
제 의견: 사이트 소유자에게 "구조화 데이터에 대해 무언가를 하세요!"라고 말하는 구글 마케팅 도구입니다.
→ 이 도구는 구글에 의해 다소 방치되고 있으며, 구글 자체에서 제공하는 최신 기술 권장 사항과 항상 최신 상태를 유지하지는 않습니다.
→ Rich Results Test는 항상 Google Search Console과 동일한 결과를 제공하지는 않습니다 – 의심스러운 경우: Google Search Console을 더 신뢰하는 것이 좋습니다.
Search Console에 표시되는 현재 검사의 의사코드(pseudocode)를 작성해 보겠습니다. 이 스레드에서 큰 도움이 될 것 같습니다. ShEx나 SHACL을 보내드릴 수도 있지만, 이들은 사람이 읽기 훨씬 어렵습니다.
if not (IsDeletedContent() OR IsExternalContent())
then if not ("text" OR "articleBody" OR "sharedContent" OR "image" or "video")
then report(OneOfThreeRequired("text", "image", "video"))
if not ("author")
then Report(Required("author"))
if not("datePublished")
then Report(Required("datePublished"))
핵심 아이디어는 DiscussionForumPosting/OP(첫 번째 게시글)의 콘텐츠가 현재 페이지에 있는 경우, 어떤 형태로든 콘텐츠 필드가 있어야 한다는 것입니다.
DiscussionForumPosting이 다른 페이지(예: 여러 페이지로 나뉜 콘텐츠의 원본 페이지)의 콘텐츠를 참조하는 경우, 스터브(stub)만 가지고 있으면 됩니다. 스터브에는 아무 내용(예: OP 주제 제목)이 들어가도 되며, 첫 번째 페이지 URL을 참조하면 됩니다. 이것이 IsExternalContent() 검사인데, 단순히 url != page URL인지 확인하는 것입니다.
문서의 두 번째 예시는 정확히 이 경우를 모델링하는 것이었습니다(14번째 페이지가 첫 번째 페이지의 스터브 게시글을 참조하는 경우).
author와 date는 현재 우리의 검증 규칙에서 무조건 필수입니다. 이는 주로 이 데이터를 찾기 위해 추가적인 홉(hop)을 방지하기 위함입니다. OP의 날짜를 알면 댓글이 얼마나 오래되었는지 이해하는 데 유용할 수 있다는 점을 생각해 볼 수 있습니다. 해당 데이터를 포함하는 메타 요소를 단순히 추가할 수는 없나요? 중복 데이터로 인해 페이지가 부풀어 오르는 문제에 대해서는 해당 필드에 대해 크게 걱정하지 않았습니다.