Skip to content

Speaker Deck Embed#

View Markdown

Speaker Deck embeds are opt-in. A player URL or oEmbed-resolved share URL renders title, author, and a lazy iframe. Fetch or parse failures become a safe link card.

import { oxContent } from "@ox-content/vite-plugin";

export default {
  plugins: [
    oxContent({
      embeds: {
        speakerDeck: true,
      },
    }),
  ],
};

Resolved player URL (no network request):

<SpeakerDeck
  url="https://speakerdeck.com/jane/my-talk"
  title="My Talk"
  author="Jane Doe"
></SpeakerDeck>
My TalkJane Doe

Share URLs (https://speakerdeck.com/{user}/{slug}) fetch oEmbed metadata at build time and inject the player id, title, and author. javascript: and data: URLs are rejected and stay as authored markup.

The iframe is lazy-loaded with sandbox and referrerpolicy="strict-origin-when-cross-origin". Pages that set a Content-Security-Policy need frame-src https://speakerdeck.com.

Last updated: