Como personalizar o algoritmo de pontuação de hot topic com um plugin?

Mais fácil, mas pode ser limitado dependendo do que você deseja fazer.

Viável, mas mais complexo. Dê uma olhada em como o TopicQuery implementa listas

e especificamente

  def list_hot
    create_list(:hot, unordered: true, prioritize_pinned: true) do |topics|
      topics = remove_muted(topics, user, options)
      topics.joins("JOIN topic_hot_scores on topics.id = topic_hot_scores.topic_id").order(
        "topic_hot_scores.score DESC",
      )
    end
  end

Você pode adicionar um extra com relativa facilidade, embora haja muitas partes móveis que você precisa levar em consideração. Eu fiz isso no meu plugin ‘homepage-filter’ e isso pode ser um bom ponto de partida.