🎁 100 free AI Toolkit licenses – apply by August 15.Learn more

Twitch 扩展

版本下载量

此扩展为编辑器添加了嵌入 Twitch 视频、剪辑和直播频道的支持。

Interactive Demo
Due to Twitch’s security policies for embedded players, this interactive demo must be opened in its own window.
Open Demo

支持的内容类型

  • 视频:指向 Twitch 视频点播 (VOD) 的直接链接
  • 剪辑:指向 Twitch 剪辑的链接
  • 频道:指向 Twitch 直播频道的链接

安装

npm install @tiptap/extension-twitch

配置项

inline

控制节点是以内联方式处理还是块级处理。

默认值:false

Twitch.configure({
  inline: false,
})

width

控制嵌入视频的默认宽度。

默认值:640

Twitch.configure({
  width: 480,
})

height

控制嵌入视频的默认高度。

默认值:480

Twitch.configure({
  height: 320,
})

allowFullscreen

允许 iframe 以全屏模式播放。

默认值:true

Twitch.configure({
  allowFullscreen: false,
})

autoplay

允许 iframe 在播放器加载后自动播放。

默认值:false

Twitch.configure({
  autoplay: true,
})

muted

指定视频初始状态是否静音。当启用自动播放时,此项非常有用,因为大多数浏览器要求视频静音才能自动播放。

默认值:false

Twitch.configure({
  muted: true,
})

time

视频开始播放的时间。仅适用于视频嵌入,不适用于剪辑或频道。 格式:1h2m3s(小时、分钟、秒)。

默认值:undefined

Twitch.configure({
  time: '1h2m3s',
})

parent

指定嵌入 Twitch 播放器的域名。此配置项对 Twitch 嵌入的正常工作必不可少,需设置为您的域名。

默认值:'localhost'

Twitch.configure({
  parent: 'example.com',
})

addPasteHandler

控制是否添加对 Twitch 视频 URL 的粘贴处理器。启用后,粘贴 Twitch 视频 URL 会自动创建嵌入。

默认值:true

Twitch.configure({
  addPasteHandler: false,
})

HTMLAttributes

向 iframe 元素传递自定义 HTML 属性。

默认值:{}

Twitch.configure({
  HTMLAttributes: {
    class: 'custom-twitch-embed',
  },
})

命令

setTwitchVideo(options)

在当前位置插入一个 Twitch 视频 iframe 嵌入。

editor.commands.setTwitchVideo({
  src: 'https://www.twitch.tv/videos/1234567890',
  width: 640,
  height: 480,
})

参数

  • src - Twitch 视频的 URL(可选)
  • width - 嵌入宽度(覆盖默认配置)(可选)
  • height - 嵌入高度(覆盖默认配置)(可选)

使用示例

基本用法

import { useEditor, EditorContent } from '@tiptap/react'
import { StarterKit } from '@tiptap/starter-kit'
import { Twitch } from '@tiptap/extension-twitch'

const editor = useEditor({
  extensions: [
    StarterKit,
    Twitch.configure({
      parent: 'example.com',
    }),
  ],
  content: '<p>Hello World!</p>',
})

自定义配置示例

const editor = useEditor({
  extensions: [
    StarterKit,
    Twitch.configure({
      parent: 'example.com',
      width: 800,
      height: 600,
      allowFullscreen: true,
      autoplay: false,
      addPasteHandler: true,
    }),
  ],
})

编程式插入

// 使用默认尺寸插入 Twitch 视频
editor.commands.setTwitchVideo({
  src: 'https://www.twitch.tv/videos/1234567890',
})

// 使用自定义尺寸插入
editor.commands.setTwitchVideo({
  src: 'https://www.twitch.tv/videos/1234567890',
  width: 960,
  height: 540,
})

// 带自定义自动播放及静音设置插入
editor.commands.setTwitchVideo({
  src: 'https://www.twitch.tv/videos/1234567890',
  autoplay: true,
  muted: true,
})

// 带开始时间插入
editor.commands.setTwitchVideo({
  src: 'https://www.twitch.tv/videos/1234567890',
  time: '1h2m3s',
})

属性覆盖

您可以在插入视频时指定属性来覆盖扩展默认选项,这样可以为不同的嵌入设置不同的参数,扩展配置仍作为默认值:

// 扩展默认配置为 autoplay=false
Twitch.configure({
  parent: 'example.com',
  autoplay: false,
})

// 但这次插入的视频启用自动播放
editor.commands.setTwitchVideo({
  src: 'https://www.twitch.tv/videos/1234567890',
  autoplay: true, // 覆盖扩展的自动播放选项
  muted: true, // 确保静音
})

支持的 URL 格式

扩展支持以下 Twitch URL 格式:

视频

  • https://www.twitch.tv/videos/1234567890
  • https://twitch.tv/videos/1234567890

剪辑

  • https://www.twitch.tv/examplechannel/clip/ExampleClipName-ABC123
  • https://twitch.tv/examplechannel/clip/ExampleClipName-ABC123
  • https://clips.twitch.tv/ExampleClipName-ABC123
  • https://www.clips.twitch.tv/ExampleClipName-ABC123

频道

  • https://www.twitch.tv/examplechannel
  • https://twitch.tv/examplechannel

粘贴支持

当启用 addPasteHandler(默认启用)时,您只需在编辑器中粘贴 Twitch 视频 URL,便会自动转换为嵌入。

粘贴此链接:https://www.twitch.tv/videos/1234567890
↓
自动创建一个 Twitch 嵌入节点

重要说明

  • 必须配置 parent 域名,Twitch 嵌入才能正确显示。请确保设置为您的实际域名。
  • 由于安全原因,Twitch 嵌入要求父域名在 Twitch 侧被白名单认可。
  • 扩展会在创建嵌入前验证 URL,以防止无效内容。
  • 嵌入节点可拖拽,支持在文档中重新定位。

键盘快捷键

  • 选中 Twitch 嵌入时,按 BackspaceDelete 可删除嵌入
  • 可通过键盘导航和方向键选中 Twitch 嵌入

源码

packages/extension-twitch/