Un poco detallado, pero no se me ocurre nada más:
with all_tags (name) as (
values ('tag10'), ('tag6'), ('tag11')
), inserted (id, name) as (
INSERT INTO tags (name)
select name
from all_tags
ON CONFLICT DO NOTHING
returning id, name
)
select t.id, t.name, 'already there'
from tags t
join all_tags at on at.name = t.name
union all
select id, name, 'inserted'
from inserted;
La selección externa de tags
ve la instantánea de la tabla como era antes se insertaron las nuevas etiquetas. La tercera columna con la constante solo está ahí para probar la consulta para que uno pueda identificar qué filas se insertaron y cuáles no.