Integração com Hugo
Hugo é um gerador de sites estáticos rápido e moderno escrito em Go. O Kinescope fornece um shortcode pronto para incorporar convenientemente vídeos e playlists na documentação e blogs Hugo.
Quando você vai precisar da integração com Hugo
Use a integração com Hugo se:
- Documentação no Hugo — você quer incorporar vídeo na sua documentação
- Blog no Hugo — você precisa adicionar vídeo a posts de blog
- Incorporação uniforme — todos os vídeos e playlists são incorporados da mesma forma via um shortcode simples
- Responsivo — os players se adaptam automaticamente à largura do contêiner
- Desempenho — lazy loading para tempos de carregamento de página otimizados
Se você usa Hugo para documentação ou blog — continue lendo. Abaixo você encontrará como configurar a integração em alguns minutos.
Como o shortcode funciona (4 passos)
- Instale o shortcode — adicione o arquivo de shortcode ao seu tema ou projeto
- Use o shortcode no Markdown — insira um comando simples em vez de código HTML
- Hugo processa o shortcode — durante a construção do site, gera o HTML correto com um iframe
- O vídeo é exibido na página — o player responsivo se adapta automaticamente ao contêiner
Agora vamos ver como configurar isso.
Configuração: passo 1 — instalar o shortcode
O shortcode kinescope já está incluído no tema de documentação do Kinescope. Se você estiver usando seu próprio tema ou quiser adicioná-lo a um projeto Hugo existente:
- Crie o arquivo de shortcode no diretório do seu tema:
themes/seu-tema/layouts/shortcodes/kinescope.html
Ou na raiz do projeto (se você não estiver usando um tema):
layouts/shortcodes/kinescope.html
- Crie o arquivo com o seguinte conteúdo:
{{- /*
Shortcode para incorporar players do Kinescope (vídeos e playlists)
*/ -}}
{{- $url := .Get "url" -}}
{{- $id := .Get "id" -}}
{{- $type := .Get "type" | default "" -}}
{{- $width := .Get "width" -}}
{{- $height := .Get "height" -}}
{{- $ratio := .Get "ratio" | default "56.25" -}}
{{- $allow := .Get "allow" | default "autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock;" -}}
{{- /* Validação: url ou id devem ser especificados */ -}}
{{- if and (not $url) (not $id) -}}
{{- errorf "kinescope shortcode: either 'url' or 'id' parameter is required" -}}
{{- end -}}
{{- /* Determinar URL de incorporação */ -}}
{{- $embedUrl := "" -}}
{{- if $url -}}
{{- if strings.HasPrefix $url "https://kinescope.io/embed/" -}}
{{- $embedUrl = $url -}}
{{- else if strings.HasPrefix $url "https://kinescope.io/pl/" -}}
{{- $embedUrl = strings.Replace $url "https://kinescope.io/pl/" "https://kinescope.io/embed/pl/" 1 -}}
{{- else if strings.HasPrefix $url "https://kinescope.io/" -}}
{{- $embedUrl = strings.Replace $url "https://kinescope.io/" "https://kinescope.io/embed/" 1 -}}
{{- else -}}
{{- errorf "kinescope shortcode: unsupported URL format: %s" $url -}}
{{- end -}}
{{- else if $id -}}
{{- if eq $type "pl" -}}
{{- $embedUrl = printf "https://kinescope.io/embed/pl/%s" $id -}}
{{- else -}}
{{- $embedUrl = printf "https://kinescope.io/embed/%s" $id -}}
{{- end -}}
{{- end -}}
{{- /* Construir parâmetros de query */ -}}
{{- $queryParams := slice -}}
{{- $serviceParams := slice "url" "id" "type" "width" "height" "ratio" "allow" "title" -}}
{{- range $key, $value := .Params -}}
{{- if and (ne $key "_") (not (in $serviceParams $key)) -}}
{{- $encodedValue := $value | urlquery -}}
{{- $queryParams = $queryParams | append (printf "%s=%s" $key $encodedValue) -}}
{{- end -}}
{{- end -}}
{{- if gt (len $queryParams) 0 -}}
{{- $queryString := delimit $queryParams "&" -}}
{{- $embedUrl = printf "%s?%s" $embedUrl $queryString -}}
{{- end -}}
{{- /* Determinar modo: responsivo ou fixo */ -}}
{{- $isFixed := and $width $height -}}
{{- if $isFixed -}}
<div class="kinescope-embed kinescope-embed-fixed">
<iframe
src="{{ $embedUrl }}"
allow="{{ $allow }}"
frameborder="0"
allowfullscreen
width="{{ $width }}"
height="{{ $height }}"
loading="lazy">
</iframe>
</div>
{{- else -}}
<div class="kinescope-embed kinescope-embed-responsive" style="position: relative; padding-top: {{ $ratio }}%; width: 100%;">
<iframe
src="{{ $embedUrl }}"
allow="{{ $allow }}"
frameborder="0"
allowfullscreen
style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;"
loading="lazy">
</iframe>
</div>
{{- end -}}
Configuração: passo 2 — adicionar estilos CSS
Adicione estilos CSS para exibição correta (opcional, se não estiverem no seu tema):
/* Estilos de incorporação do Kinescope */
.kinescope-embed {
margin: 1.5em 0;
border-radius: var(--radius-md);
overflow: hidden;
background: var(--color-bg-tertiary);
}
.kinescope-embed-responsive {
position: relative;
width: 100%;
}
.kinescope-embed-responsive iframe {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
border: none;
}
.kinescope-embed-fixed {
display: inline-block;
max-width: 100%;
}
.kinescope-embed-fixed iframe {
display: block;
border: none;
max-width: 100%;
height: auto;
}
Usando o shortcode
Incorporação básica de vídeo
A abordagem mais simples — especifique a URL completa do vídeo:
{{< kinescope url="https://kinescope.io/pcFNnQGsD59CMKte2SQQaz" >}}
Ou use apenas o ID do vídeo:
{{< kinescope id="pcFNnQGsD59CMKte2SQQaz" >}}
Exemplo de incorporação de vídeo:
Incorporação de playlists
Para playlists, use a URL com o prefixo /pl/:
{{< kinescope url="https://kinescope.io/pl/5ifZjJLLGYncrHYBdPNhKE" >}}
Ou especifique o tipo e o ID:
{{< kinescope type="pl" id="5ifZjJLLGYncrHYBdPNhKE" >}}
Exemplo de incorporação de playlist:
Tamanho fixo do player
Por padrão, o player é responsivo e se adapta à largura do contêiner. Para tamanho fixo, especifique width e height:
{{< kinescope id="pcFNnQGsD59CMKte2SQQaz" width="560" height="315" >}}
Parâmetros de reprodução
O shortcode suporta a passagem de parâmetros via query string. Por exemplo, para reproduzir um segmento de vídeo:
{{< kinescope url="https://kinescope.io/pcFNnQGsD59CMKte2SQQaz" seek="60" duration="30" >}}
Este exemplo inicia o vídeo a partir do 60º segundo e reproduz apenas os próximos 30 segundos.
Exemplo com parâmetros:
Usando diferentes templates de player
Para aplicar um template de player específico, use o parâmetro player_id:
{{< kinescope id="9cdAfqbbPcwu9GJwyxZ6jA" player_id="1213d24d-4624-4764-bf40-0baaf743377d" >}}
Definindo a proporção de aspecto
Para formatos de vídeo não padrão, você pode alterar a proporção de aspecto (o padrão é 16:9, correspondendo a padding-top: 56.25%):
{{< kinescope id="..." ratio="75" >}}
O valor de ratio é especificado como porcentagem. Por exemplo:
56.25— proporção padrão 16:975— proporção 4:3100— vídeo quadrado 1:1
Exemplos de uso no conteúdo
Na documentação
Adicione vídeo a um artigo de documentação:
## Configurando a integração
Para começar com a integração, assista ao vídeo tutorial:
{{< kinescope url="https://kinescope.io/pcFNnQGsD59CMKte2SQQaz" >}}
Após assistir ao vídeo, passe para o próximo passo...
Em um blog
Incorpore vídeo em posts de blog:
---
title: "Novo Recurso do Kinescope"
date: 2025-12-25
---
O vídeo abaixo mostra o novo recurso da plataforma. Assista à demo:
{{< kinescope id="pcFNnQGsD59CMKte2SQQaz" >}}
Após o vídeo, adicione uma breve descrição e um link para o artigo detalhado, se necessário.
Em cursos online
Use playlists para aprendizado sequencial:
## Lição 1: Primeiros Passos
Assista a todos os vídeos na playlist:
{{< kinescope url="https://kinescope.io/pl/iUsqhEMVWJCcUqg9Ay9gmD" >}}
Como funciona (em detalhes)
Validação e tratamento de erros
O shortcode verifica automaticamente a correção dos parâmetros durante a construção do site:
- Se nem
urlnemidfor especificado, o Hugo retornará um erro durante a construção - Se a URL tiver um formato não suportado, a construção falhará com um erro
- Todos os erros são mostrados no console ao executar
hugoouhugo server
Exemplo de erro para uso incorreto:
ERROR: kinescope shortcode: either 'url' or 'id' parameter is required
O que a integração oferece
- Incorporação uniforme: vídeos e playlists são incorporados da mesma forma — via shortcode.
- Responsivo: o player se adapta à largura do contêiner.
- Parâmetros: configurações de reprodução podem ser passadas (
seek,duration,player_id, etc.). - Verificações em tempo de construção: erros de parâmetros são visíveis imediatamente durante a construção do site.
- Lazy loading: o iframe carrega de forma lazy para evitar sobrecarregar a página.
Lazy loading
Todos os iframes carregam automaticamente com o atributo loading="lazy", melhorando o desempenho da página.
Suporte a todos os parâmetros do Kinescope
O shortcode suporta todos os parâmetros que podem ser passados na URL do player:
seek— posição inicial de reprodução (em segundos)duration— duração do segmento (em segundos)player_id— ID do template do playerautoplay— reprodução automática do vídeo- E outros parâmetros da API do Kinescope
Basta adicioná-los como parâmetros do shortcode:
{{< kinescope id="..." seek="60" duration="30" autoplay="1" >}}
Compatibilidade
O shortcode funciona com:
- Hugo versão 0.100.0 e superior
- Qualquer tema Hugo
- Conteúdo em Markdown e HTML
- Renderizadores Goldmark e Blackfriday (quando
unsafe = trueestá habilitado na configuração)
Para o shortcode funcionar, habilite o seguinte em config.toml:
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
Isso permite que o Hugo processe o código HTML gerado pelo shortcode.
Suporte
Se você tiver perguntas sobre a integração com Hugo ou o uso do shortcode, entre em contato com o chat de suporte na interface do Kinescope — os especialistas vão ajudá-lo a configurar a incorporação de vídeo na sua documentação ou blog.
A documentação do Hugo está disponível no site oficial .
Pronto! Agora você pode incorporar vídeos e playlists do Kinescope na sua documentação ou blog Hugo.
O que fazer a seguir?
Após configurar a integração com Hugo, recomendamos:
- Incorporação — princípios gerais de incorporação de vídeo
- Personalizar o player — adapte a aparência do player à sua marca
- Configurar proteção de conteúdo — ative a criptografia DRM e marcas d’água para proteger o vídeo
- Restringir acesso por domínio — permita a visualização de vídeo apenas no seu site
Se tiver alguma dúvida, escreva para o chat de suporte na interface do Kinescope — nossos especialistas vão ajudar!