Asyntai AI Chatbot Docs Sync
Keep the AI chatbot on your website current with the documentation in your repository
Asyntai is an AI chatbot that answers your website visitors from your own content. This plugin sends the documentation in your repository to the chatbot's knowledge base on every pipeline run, so visitors get the answer that matches the version you just shipped.
- One entry per file. The entry title is the file path, with your
title_prefixin front. A file keeps the same entry on every run, so a pipeline that runs on every commit never makes duplicates. - Changed files are replaced. When the text of a file changes, the plugin replaces its entry with the new text.
- Unchanged files are left alone. A file whose text matches the stored entry is skipped, so a run with no documentation change sends nothing.
- Deleted files can be removed. With
prune: trueand atitle_prefix, the plugin removes the entries of files that are gone. It touches only entries that carry your prefix.
Hidden folders such as .git are not read. Files under 10 characters are skipped. The log shows one line per file (added, updated, unchanged, deleted or skip) and a summary.
Settings
| Settings Name | Default | Description |
|---|---|---|
api_key |
none | Your Asyntai API key. Required. Pass it from a secret with from_secret. |
path |
none | The folder or file to send, relative to the repository root, for example docs or README.md. Required. |
patterns |
*.md,*.mdx,*.txt |
File patterns to include, as a list or comma separated text. |
exclude |
none | Patterns to skip, as a list or comma separated text, for example [CHANGELOG.md, drafts/*]. |
title_prefix |
none | Text put in front of every entry title, for example "Docs / ". |
website_id |
your first website | The Asyntai website to write to. |
prune |
false |
Remove entries that carry your title_prefix and whose file is gone from the repository. |
dry_run |
false |
List the files and send nothing. Useful on pull requests. |
debug |
false |
Print every API call the plugin makes. The key is never printed. |
base_url |
https://asyntai.com |
The Asyntai address. Change it only for a private install. |
Example
Send the docs folder on every push to main:
steps:
- name: sync-docs
image: asyntai/woodpecker-ai-docs-sync:1
settings:
api_key:
from_secret: asyntai_api_key
path: docs
when:
- event: push
branch: main
Send two folders with a prefix, and remove the entries of deleted files:
steps:
- name: sync-docs
image: asyntai/woodpecker-ai-docs-sync:1
settings:
api_key:
from_secret: asyntai_api_key
path: docs
patterns: ["*.md", "*.mdx"]
exclude: [CHANGELOG.md, drafts/*]
title_prefix: "Docs / "
prune: true
when:
- event: push
branch: main
Check a pull request without sending anything:
steps:
- name: check-docs
image: asyntai/woodpecker-ai-docs-sync:1
settings:
path: docs
dry_run: true
when:
- event: pull_request
Setup
- Create an Asyntai account on a paid plan. The knowledge base API is part of every paid plan.
- Sign in to Asyntai, open Settings, then API, and copy your API key.
- In Woodpecker open the repository Settings, then Secrets. Add a secret named
asyntai_api_keywith the key as the value. - Add the step to your
.woodpecker.yaml.
Full guide: asyntai.com/documentation/integrations/woodpecker-ci/