Pode haver uma maneira de fazer isso de forma consistente tanto nas páginas de tópicos quanto nas de categorias, mas obtive o ID da categoria de duas maneiras diferentes… uma para páginas de categoria:
<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup('controller:navigation/category');
api.onPageChange((url, title) => {
console.log(controller.get("category.id"));
});
</script>
e uma forma semelhante para páginas de tópicos:
<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup('controller:topic');
api.onPageChange((url, title) => {
console.log(controller.get("model.category_id"));
});
</script>
No exemplo da página de categoria, você pode usar alternativamente category.name ou category.slug, mas no modelo de tópico apenas o category_id está disponível, então você precisaria fazer um pouco mais de trabalho para obter o nome. O ID pode ser um caminho melhor de qualquer forma, pois é consistente mesmo que o nome ou o slug da categoria mudem.