GitHub Actions: gere um flipbook automaticamente a cada release
Use o GitHub Actions para gerar um flipbook FlipLink a cada release. Crie o PDF, rode a CLI, capture a URL e comente de volta.
Publicado em 21 de junho de 2026 · 6 min read
Se a sua documentação, suas notas de release ou seu catálogo de produtos ficam como um PDF no seu repositório, não há motivo para publicar o flipbook na mão. Com o GitHub Actions e a CLI do FlipLink, toda vez que você lança uma release dá para criar o PDF, transformá-lo em um flipbook publicado e postar a URL ao vivo direto na release — tudo sem encostar no painel.
Esta é a versão nativa do GitHub para publicação de flipbook com CI/CD. Se você usa outro runner (GitLab CI, CircleCI, uma máquina com cron), os passos se traduzem facilmente — só muda o formato do YAML.
O que vamos construir
Um workflow que dispara em uma release publicada e:
- Faz o checkout do repositório e cria (ou localiza) o PDF que você quer publicar.
- Instala a CLI do FlipLink.
- Cria e publica um flipbook a partir desse PDF, autenticando com uma chave de API guardada como secret do repositório.
- Captura a URL ao vivo do flipbook a partir da saída em JSON.
- Comenta essa URL de volta na release para que sua equipe receba o link na hora.
É um exemplo clássico de automação: um evento dispara, um script roda, um artefato é entregue.
Passo 1 — Guarde sua chave de API como secret do repositório
Nunca cole uma chave de API em um arquivo de workflow. Os arquivos de workflow ficam no seu repositório — qualquer pessoa com acesso de leitura (e todo fork) pode vê-los. Use um secret criptografado em vez disso:
- Faça login em
https://go.fliplink.me, abra a página Subscription e copie sua chave de API. - No seu repositório do GitHub, vá em Settings → Secrets and variables → Actions.
- Clique em New repository secret.
- Dê o nome
FLIPLINK_API_KEYe cole a chave como valor. - Clique em Add secret.
O workflow lê a chave via secrets.FLIPLINK_API_KEY e a expõe à CLI como a variável de ambiente FLIPLINK_API_KEY. A CLI verifica essa variável de ambiente automaticamente, então não é preciso nenhum passo de config set-key no CI.
Passo 2 — O arquivo de workflow
Crie o .github/workflows/publish-flipbook.yml:
name: Publish flipbook on release
on:
release:
types: [published]
permissions:
contents: write # needed to edit the release notes in the last step
jobs:
flipbook:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
# Replace this with however you produce the PDF.
# If the PDF is committed in the repo, you can delete this step.
- name: Build the PDF
run: |
mkdir -p dist
# e.g. your doc tooling outputs dist/release-notes.pdf
ls -lh dist/release-notes.pdf
- name: Install FlipLink CLI
run: npm install -g fliplink-cli
- name: Create and publish flipbook
id: flipbook
env:
FLIPLINK_API_KEY: ${{ secrets.FLIPLINK_API_KEY }}
run: |
ID=$(fliplink flipbook create ./dist/release-notes.pdf \
--title "Release ${{ github.event.release.tag_name }}" \
--name "release-${{ github.event.release.tag_name }}" \
--json | jq -r '.ID')
fliplink flipbook publish "$ID"
URL=$(fliplink flipbook share-link "$ID" --json | jq -r '.URL')
echo "id=$ID" >> "$GITHUB_OUTPUT"
echo "url=$URL" >> "$GITHUB_OUTPUT"
echo "Published flipbook: $URL"
- name: Comment the URL on the release
uses: actions/github-script@v7
with:
script: |
const url = "${{ steps.flipbook.outputs.url }}";
const release = context.payload.release;
await github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: release.id,
body: `${release.body || ""}\n\nFlipbook published: ${url}`
});
Algumas observações sobre o passo de criação:
fliplink flipbook create ./path.pdffaz o upload do PDF e retorna o novo flipbook. Com--jsonvocê recebe a resposta bruta, ejq -r '.ID'extrai o ID.fliplink flipbook publish "$ID"coloca o flipbook no ar. (Criar um flipbook não o publica — publicar é um passo separado e explícito.)fliplink flipbook share-link "$ID"retorna a URL pública do visualizador, que capturamos da mesma forma comjq.- Gravamos
ideurlem$GITHUB_OUTPUTpara que os passos seguintes possam referenciá-los comosteps.flipbook.outputs.url.
Tudo aqui usa apenas comandos documentados da CLI e a flag --json. Se você precisar de uma ação que a CLI não cobre, recorra ao escape hatch fliplink api — veja a documentação da CLI para a superfície completa, ou a referência da API para cada endpoint.
Experimente o FlipLink Grátis
Converta seu PDF em segundos. Sem cadastro, sem cartão de crédito — basta enviar o arquivo.
Drop your PDF here or click to browse
Máx 40MB
Os planos pagos a partir de $39 aumentam esse limite para 150 MB.
Passo 3 — Comentando a URL de volta
A forma mais limpa de mostrar a URL é comentá-la na própria release. O passo actions/github-script acima faz isso. Se você preferir a CLI do GitHub (gh já vem instalado nos runners hospedados pelo GitHub), esta linha única também funciona:
- name: Comment via gh
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release view "${{ github.event.release.tag_name }}" \
--json body --jq '.body' > old-body.txt
printf '\n\nFlipbook: %s\n' "${{ steps.flipbook.outputs.url }}" >> old-body.txt
gh release edit "${{ github.event.release.tag_name }}" \
--notes-file old-body.txt
Isso anexa o link do flipbook às notas de release, deixando-o visível bem onde as pessoas leem o changelog. Escolha o que combina mais com os hábitos da sua equipe — os dois leem a URL do mesmo steps.flipbook.outputs.url.
Notas sobre cache e desempenho
Algumas coisas que mantêm este workflow rápido e previsível:
- Faça cache do npm. Adicione
cache: npmao passosetup-nodese o seu repositório tiver um lockfile — isso acelera a instalação da CLI e de qualquer ferramenta de PDF em execuções repetidas. - Fique de olho no rate limit. A API do FlipLink permite 300 requisições por minuto por chave. Uma única release publica um flipbook, então você está bem longe do teto — mas se você espalhar muitos PDFs em um job só, espace as chamadas.
- Trate as falhas. A CLI sai com
0em caso de sucesso,1em erro de requisição/HTTP e2em erro de aplicação. Como cada comando do blocorunpode falhar, o passo falha de forma clara se algo der errado — que é exatamente o que você quer no CI. - Mantenha o gatilho enxuto.
types: [published]significa que o workflow roda uma vez, quando você de fato publica uma release — não em rascunhos nem em edições antes da publicação. Isso evita flipbooks duplicados por acidente.
Para finalizar
Com um arquivo de workflow e um secret de repositório, toda release agora entrega um flipbook publicado e posta o link de volta para sua equipe — zero passos manuais. A partir daqui você pode converter em lote uma pasta inteira, montar pipelines mais ricos com jq ou mover a lógica para um agente de IA. Todos os padrões se apoiam na mesma CLI.
Leitura relacionada
Pronto para Criar Seu Primeiro Flipbook?
Transforme seus PDFs em flipbooks e documentos interativos. Comece com o Lifetime Deal da FlipLink: acesso vitalício a partir de apenas $39.
Pague Uma Vez, Use Para Sempre
10, 50 ou 100 flipbooks · Todos os 35 recursos · Domínios ilimitados
Sem planos. Sem restrições de recursos. Cada código LTD desbloqueia tudo.
- Cada recurso liberado — sem limites
- Acumulável — compre mais códigos quando quiser
- Substituível — troque o antigo por um novo
- Domínios próprios ilimitados (CNAME)
- Sem taxas recorrentes, nunca
Leituras Relacionadas
Automatize a publicação de flipbooks no CI/CD com a CLI do FlipLink
Automatize a publicação de flipbooks em qualquer pipeline de CI/CD com a CLI do FlipLink — crie, publique, capture a URL e falhe rápido com exit codes.
Converta em Lote uma Pasta de PDFs em Flipbooks
Converta PDF em flipbook em lote a partir de uma pasta inteira com um único loop de shell usando a CLI do FlipLink — capture as URLs em CSV e pule arquivos com erro.
FlipLink CLI vs. API vs. MCP: qual integração você deve usar?
CLI, API ou MCP no FlipLink: compare esforço, público e caso de uso e veja o mesmo flipbook criado de três formas. Escolha a integração certa.