Hi @Anonymous we are doing the same thing to send news published on various SharePoint asites in our hub to the relevant Teams channel with a nice adaptive card. @MattWeston365 may have a better method but what I do is shown below.
First of all you need to have a single line of text column inn your Site Pages library where the news items are:

Then you format the column using JSON code:

You need to format the column making sure that the id at the bottom of your JSON code has the ID of your flow.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"txtContent": "Publish to Teams",
"customRowAction": {
"action": "executeFlow",
"actionParams": "{\"id\": \"021ec4e0-8f85-46b3-a557-a4456960a4eb\"}"
}
}
Your flow needs to have a SharePoint For a selected file trigger. We then add the FileID into a Compose action and use the output of that in a Get file properties action.

I want the date shown on the adaptive card in Teams in UK format so to ensure this happens I've added another Compose control with a formatDateTime expression. I also want the author of the news item (added below the title of the news item in the SharePoint page) so I've added another Compose control and selected Author Byline from the dynamic content which gets wrapped in an Apply to each control.

The more complex part of the flow is now to add JSON code for the adaptive card into a Teams Post your own adaptive card as the Flow bot to a channel action. You can try out JSON code at https://adaptivecards.io/ where there are samples that you can use as the basis of your code. But I ended up getting most of JSON code below from a really good blog post by Laura Rogers at https://wonderlaura.com/2019/04/10/sharepoint-news-notifications-in-teams/

As you can see from the screenshot you can also add in dynamic content which I've done to get the Title, description (i.e the text content of the story), the published date and a link to the full story back on our SharePoint site. The JSON code in mine is:
{
"type": "AdaptiveCard",
"body": [
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"items": [
{
"type": "TextBlock",
"text": "Infrastructure Consultancy News on the REI Hub",
"wrap": true
},
{
"type": "TextBlock",
"spacing": "None",
"size": "Large",
"weight": "Bolder",
"text": "@{body('Get_file_properties')?['Title']}"
},
{
"type": "TextBlock",
"spacing": "None",
"text": "@{outputs('Compose_First_Published')} - @{outputs('Compose_Contact')}",
"isSubtle": true
},
{
"type": "TextBlock",
"size": "Small",
"text": "@{body('Get_file_properties')?['Description']}",
"wrap": true
},
{
"type": "Image",
"url": "@{body('Get_file_properties')?['BannerImageUrl']}"
}
],
"width": 2
}
]
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "Go to news article",
"url": "@{body('Get_file_properties')?['{Link}']}"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.0"
}
So when you press the button in the Site Pages library, the flow starts and I think the result in the Teams channel looks really good:

I'm no JSON expert by a long way but a couple of hours of trial and error on the site I linked to above eventually got this result which we're now rolling out across all the sites and Teams in our hub.
I hope it helps but come back with any questions.
Rob
Los Gallardos
If I've answered your question or solved your problem, please mark this question as answered. This helps others who have the same question find a solution quickly via the forum search. If you liked my response, please consider giving it a thumbs up. Thanks.