Ghost와 Discourse 댓글 문제 (WordPress에서 마이그레이션 시에도 동일)

현재 WordPress(Discourse 댓글 사용)에서 Ghost(Discourse 댓글 사용)로 블로그를 이관하는 작업을 진행 중입니다. 공식 Ghost + Discourse 통합 설명서를 따라 댓글 설정을 마쳤지만, 해결해야 할 문제가 몇 가지 생겼습니다. 여유가 있으시다면 도움을 부탁드립니다.

  1. 임베딩 설정에서 “가져온 주제는 답변이 있을 때까지 목록에 표시되지 않습니다” 옵션을 체크하지 않았는데, 새 게시물에 접근하여 매칭되는 주제가 생성될 때 실제로는 댓글이 달리기 전까지 목록에 표시되지 않습니다. 이 문제를 피하고 Ghost에 게시되는 대로 주제가 생성되고 목록에 표시되도록 하는 방법이 있을까요?

또한, 해당 설정의 의도를 잘못 이해하고 있다면 실제로 어떤 기능을 하는 것인지 알려주시면 감사하겠습니다.

(다른 분들의 조언에도 불구하고, 일부 독자들은 블로그 자체보다는 Discourse 커뮤니티를 새 게시글의 출처로 사용하는 것을 고집하고 있어, 이 부분을 지원해 주어야 합니다.)

  1. 블로그가 WordPress였을 당시에는 WordPress Discourse 플러그인을 사용했습니다. 블로그 게시물에 매칭되는 주제를 생성할 때, Discourse에 링크가 게시된 것처럼 표시되었습니다. 아래 목록의 중간 주제에서 확인할 수 있습니다:

이 동작을 다시 가져오기 위해 임베딩 코드/설정을 수정할 방법이 있을까요? 이는 인덱스에서 유용한 링크 역할도 했으며, “댓글” 게시글과 “커뮤니티” 게시글을 명확히 구분하는 기준이 되었습니다.

  1. 가장 중요한 문제는, 기존 Discourse 댓글이 있는 게시물(WordPress 플러그인을 통해)에 접속하면 페이지의 댓글 섹션이 영원히 “Discussion 로딩 중…” 상태로 멈춰 있다는 것입니다. 당연히 매우 중요한 부분인데, 이러한 임베드가 해당 URL과 매칭되는 기존 주제에 링크되기를 기대했습니다. 이를 가능하게 하는 방법을 알아낸 분이 있을까요?

(예를 들어, Spooooky 게시물과 그에 해당하는 주제 Spooooky - General - The Eldraeverse를 참고하세요.)

이 문제들에 대한 도움이 매우 감사하겠습니다!

코드를 더 자세히 살펴봐야겠지만, Discourse 쪽에서는 임베드 레코드(정확한 이름은 기억나지 않음)의 URL이 새 사이트가 전달하는 URL과 일치하는지만 확인하면 될 것 같습니다.

즉, 새 임베드 사이트의 discourseEmbedUrl이 새 URL과 일치하거나(Discourse의 레코드에서 변경하거나), 그렇게만 하면 문제가 없을 것입니다.

  DiscourseEmbed = {
    discourseUrl: 'https://discourse.example.com/',
    discourseEmbedUrl: '[EMBED_URL](http://example.com/blog/entry-123.html)',
    // className: 'CLASS_NAME',
  };

불행히도 제가 볼 수 있는 범위에서는 그렇습니다. 개발자 도구의 블로그 페이지를 확인해 보니, Discourse 댓글이 들어가는 부분에 다음이 표시되었습니다:

스크립트 내에 discourseEmbedUrl 파라미터가 다음과 같이 표시됩니다:

https://eldraeverse.com/2024/10/28/spooooky/

그리고 Discourse 주제에서는 동일한 URL이 주제 상단의 링크와 첫 번째 주제 게시글의 “원문 게시 위치:” 삽입 부분에 모두 표시되고 있습니다. (Discourse에서 원본 임베드 레코드를 찾아야 할 특정 다른 위치가 있는지 확신은 없지만, 주제 자체에서 볼 수 있는 모든 내용은 일치합니다.)

수정: 명확히 하기 위해, 저는 이전에 WP Discourse 플러그인을 사용했습니다. 이 플러그인은 Discourse의 임베드 구성을 사용하여 설정되지 않기 때문에, 불행히도 기존 설정을 직접 확인해 볼 수 없습니다. 하지만 새로운 Ghost 블로그의 모든 주제 페이지 URL이 WordPress 블로그와 동일하도록 변경되지 않도록 확인했으므로, 모든 것이 자동으로 동일해야 합니다.

Rails에서는 다음을 확인해 볼 수 있습니다.

 TopicEmbed.all

또는

 TopicEmbed.pluck(:topic_id, :embed_url)

이 내용을 살펴보고 자신의 것과 일치하는지 확인하면 문제없이 진행할 수 있을 것입니다. 하지만 로딩이 되지 않는다는 것은, 다른 사이트가 자신의 Discourse에서 임베딩을 수행하도록 허용하지 않았음을 시사한다고 생각합니다.

전자의 경우, 제 Discourse가 여러분이 호스팅하고 있으므로(최소한 제가 방법을 모릅니다) 해당 작업을 실행할 권한이 없다고 생각합니다.

후자의 경우 - 말씀이 잘 이해가 되지 않습니다. 제 임베딩 설정은 다음과 같습니다:

이 설정은 구 사이트와 새 사이트의 URL 모두와 일치해야 하지 않나요? 게시글 끝에 있는 게시글별 슬러그를 제외하면, 댓글 주제 로딩에 실패하는 게시글의 URL과 성공하는 게시글의 URL은 동일하지 않나요?

아, 죄송합니다. 저는 대부분 셀프 호스팅(또는 제가 직접 호스팅하는 경우)만 생각하곤 합니다. 비즈니스 호스팅을 사용 중이시라면 데이터 탐색기(data explorer) 플러그인을 통해 그런 작업을 수행할 수 있을지도 모릅니다.

embed any origin(모든 출처 임베딩)을 켜보시고 그것이 문제를 해결하는지 확인해 보세요. 최악의 경우, 임베딩은 로드되지만 예상했던 댓글이 표시되지 않을 것 같습니다.

아, 겸손한 pro bono 사용자입니다. SF 글쓰기는 내가 바라는 만큼 수익성이 좋지 않네요. :smile:

embed any origin을 시도해 보았지만, 아쉽게도 동작에 변화가 없었습니다.

(또한 WP Discourse 플러그인의 소스 코드를 살펴봤는데, 이는 자신의 일을 수행하기 위해 Discourse API와만 통신하고 일반적인 임베딩 지원은 전혀 사용하지 않는 것 같습니다. 이제 Ghost에서 Discourse 임베드가 어떻게 보이는지 확인해 보니 놀라운 일이 아닙니다 - 이전 WordPress의 댓글은 외형과 동작 방식이 달랐거든요.

그래서 이제 저는 Discourse 쪽에 해당 주제에 대해 임베드 URL이 아예 기록되어 있는지 궁금해집니다. - 하지만 그렇다면 왜 이런 깨짐 현상 대신 이제 새(임베드) 주제가 나타나지 않는지에 대한 질문을 제기하게 되죠 - 그리고 만약 기록되어 있다면 그들에게 하나를 추가할 수 있는 방법이 있는지요?)

간단한 실험을 해 보았습니다. WP Discourse 플러그인이 생성한 토픽을 삭제한 후, Ghost 블로그에서 해당 게시물을 다시 방문하면 임베딩을 통해 해당 게시물에 대한 새로운 토픽이 생성됩니다. 따라서 WP Discourse의 토픽은 표시되지 않더라도 임베딩 기능이 작동하는 것을 차단할 수 있는 것으로 보입니다.

물론 이는 실행 가능한 해결책은 아니지만, 하나의 데이터 포인트가 됩니다.