¿Cómo personalizar el algoritmo de puntuación de temas populares con un plugin?

El más fácil, pero podría ser limitado dependiendo de lo que quieras hacer.

Factible pero más complejo. Echa un vistazo a cómo TopicQuery implementa las listas

y específicamente

  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

Puedes agregar una adicional con relativa facilidad, aunque hay bastantes partes móviles que debes tener en cuenta. Hice eso en mi plugin ‘homepage-filter’ y ese podría ser un buen punto de partida.