Woodpecker CI Integration
Send your documentation to your chatbot on every push
Overview
Your documentation lives in a repository that Woodpecker CI builds. Your chatbot answers from the Asyntai knowledge base. The Asyntai AI Chatbot Docs Sync plugin keeps the two the same.
Merge a change to a page, and the chatbot answers from the new page by the end of the pipeline. Your writers keep their normal workflow, and your visitors get the current answer.
How It Works
The plugin is one step in your pipeline. The step reads the files you point it at, compares them with your knowledge base, and sends what changed.
- A new file becomes a new knowledge base entry.
- A changed file replaces its entry.
- A file with the same text is left alone, so a run costs nothing against your daily limit.
- With
pruneon, an entry whose file is gone is removed.
The entry title is the file path, so you can find every page in Knowledge Base in your dashboard. Each run ends with a line that counts what it did.
Requirements
- A Woodpecker CI server with the Docker or Kubernetes backend
- An Asyntai account on the Starter plan or higher, because the plugin uses the Asyntai API
Installation
Follow these steps to add the plugin to your pipeline:
Get Your API Key
Sign in to Asyntai, open Settings, then API, and copy your API key.
Add a Secret
In Woodpecker, open the repository Settings → Secrets. Add a secret named asyntai_api_key and paste your key as the value.
Add the Step
Open .woodpecker.yaml and add the step:
steps:
- name: send-docs-to-asyntai
image: asyntai/woodpecker-ai-docs-sync:1
settings:
api_key:
from_secret: asyntai_api_key
path: docs
when:
- event: push
branch: main
Push and Watch
Push the change. Open the pipeline in Woodpecker and open the send-docs-to-asyntai step. The last line counts how many entries the run added, updated, or left alone.
Settings
| Setting | Default | What it does |
|---|---|---|
api_key | required | Your Asyntai API key. Pass it with from_secret. |
path | required | The file or folder to read, relative to the repository root. |
patterns | *.md,*.mdx,*.txt | File patterns to include, as a list or comma separated text. |
exclude | empty | Patterns to skip, for example [drafts/*]. |
title_prefix | empty | Text put in front of every entry title. Use it when several repositories feed one chatbot. |
website_id | empty | Which website to fill. Empty means the first website of the account. |
prune | false | Delete entries whose file is gone. Needs title_prefix. |
dry_run | false | List the files and send nothing. |
debug | false | Print every API call the plugin makes. |
Several Repositories, One Chatbot
Give each repository its own title_prefix, for example product-docs/ and handbook/. Then turn prune on. Each pipeline only touches the entries that carry its own prefix.
settings:
api_key:
from_secret: asyntai_api_key
path: docs
title_prefix: product-docs/
prune: true
Tip: Add a second step with dry_run: true and when: [{event: pull_request}]. The step then lists the files it would send, so a reviewer sees the effect before the branch is merged. A dry run needs no secret.
Removing It
Delete the step from .woodpecker.yaml. The entries already in your knowledge base stay. Remove them in Knowledge Base in your dashboard if you want them gone.
Plans & Pricing
The plugin is free. It uses the Asyntai API, which needs the Starter plan or higher. View pricing.
Need Help?
If you have any questions or run into issues, contact us at [email protected].