Lo que buscas se llama decorador de publicaciones. Es un gancho que te permite ejecutar scripts antes de que se renderice cada publicación. Es parte de la API de complementos.
Ahora, en cuanto a lo que quieres hacer (redirigir todos los enlaces externos). No creo que añadir tanta fricción sea una buena idea, así que no puedo ayudarte con eso; además, ya resolviste esa parte. Dicho esto, aquí tienes un ejemplo comentado de cómo puedes crear una configuración que apunte a todos los enlaces externos en las publicaciones.
Esto va en la sección header de tu tema o componente de tema:
<script type="text/discourse-plugin" version="0.8">
// Almacena el nombre de host para poder reutilizarlo.
const siteHostname = location.hostname;
// Creemos un decorador para hacer esto en cada publicación
api.decorateCooked(
post => {
// ¿La publicación tiene enlaces?
const links = [...post[0].querySelectorAll("a")];
// Sin enlaces, salimos.
if (!links.length) return;
// Tenemos enlaces, filtremoslos y tomemos solo los externos
const externalLinks = links.filter(
link => link.hostname !== siteHostname
);
// Si tenemos algunos enlaces externos, hagamos algo. Por ejemplo, podemos
// añadir una clase a cada enlace externo así.
externalLinks.forEach(link => {
link.classList.add('external-link');
// Haz más trabajo aquí.
});
},
// Le damos un ID a nuestro decorador para evitar fugas de memoria.
{ id: "external-link-decorator" }
);
</script>
De nuevo, redirigir a los usuarios es demasiada fricción y resultará molesto muy rápido. Así que consideraría otro enfoque, como añadir un icono sutil al lado de los enlaces externos y enseñar a tus usuarios qué significa, ¿qué te parece?
