I can, unfortunately, confirm this.
One of my customers reported the same issue two days ago and I was looking for a solution. Initially, I thought it was related to this (my customer has an issue with YouTube links), but it might be something different.
When I try to put a random YouTube link in a bookmark card, I see this:
(German text because the server has a German IP)
What’s interesting is the network requests that happens before this card is displayed.
That’s the request the Ghost editor sends to the Ghost server:
curl 'https://www.example.com/ghost/api/admin/oembed/?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D2IjNSippk1k%3Flocale%3Den_US&type=bookmark' \
-H 'accept: application/json, text/javascript, */*; q=0.01' \
-H 'accept-language: en-US,en;q=0.6' \
-H 'app-pragma: no-cache' \
-H 'content-type: application/json; charset=UTF-8' \
-H 'cookie: REDACTED \
-H 'dnt: 1' \
-H 'if-none-match: W/"1de-jD6zlHou2MVUq6vli7/XQPs9HoM"' \
-H 'priority: u=1, i' \
-H 'referer: https://www.example.com/ghost/' \
-H 'sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Brave";v="126"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-origin' \
-H 'sec-gpc: 1' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' \
-H 'x-ghost-version: 5.89' \
-H 'x-requested-with: XMLHttpRequest'
This is the response that comes back:
{
"version": "1.0",
"type": "bookmark",
"url": "https://www.youtube.com/watch?v=2IjNSippk1k?locale=en_US",
"metadata": {
"url": "https://www.youtube.com/undefined",
"title": "- YouTube",
"description": "Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.",
"author": null,
"publisher": "YouTube",
"thumbnail": null,
"icon": "https://www.youtube.com/s/desktop/06e27914/img/favicon_144x144.png"
}
}
Note how the metadata.url
is set to `https://ww.youtube.com/undefined.
I have had a very quick look at the oembed implementation of the Ghost core and couldn’t find the issue on first glance. It does feel like a bug in there, though. Happy to be proven wrong.