I think duck typing is great. Articles can be identified by name and content properties. Music albums can be identified by other properties, e.g. artists and tracks. Now you can use all these properties in one object. Music services will display it as a music album and blogs will display it as a post, interoperability is easier that way.
I have a document where I collect ideas like this one, as well as best practices and common-but-undocumented requirements:
https://codeberg.org/silverpill/feps/src/branch/main/d85d/fep-d85d.md#types
Schemas could be useful too, I've been exploring this idea as well:
https://codeberg.org/silverpill/feps/src/branch/main/d85d/schemas/activity.schema.json