Control panel → Integrations — connect content sources and channels for accessing knowledge.
#Content sources
#Connected (always active)
| Source | Description |
|---|---|
| LiKE Editor | Built-in AI editor for creating articles |
| File import | Upload PDF, DOCX, TXT, MD, RTF, ZIP |
| Import by link | Google Docs, Dropbox, direct file links |
#Available connectors
| Source | Description | Mode |
|---|---|---|
| Wiki.js | Import or sync articles | Sync / Import |
| Confluence | Import from Atlassian Confluence Cloud (OAuth) | Sync / Import |
| Notion | Import pages and databases | Sync / Import |
| GitHub | Sync Wiki and Markdown files from repositories | Sync / Import |
| GitLab | Sync Wiki and Markdown files from projects | Sync / Import |
| Gitea | Sync Wiki and Markdown files from self-hosted Gitea | Sync / Import |
| Documentation site | A public site via its sitemap | Sync |
#Connecting GitHub
#Step 1 — Authorization
- In LiKE go to Integrations → GitHub → "Connect"
- Choose an authorization method:
| Method | Description |
|---|---|
| Personal Access Token (PAT) | Create a token in GitHub → Settings → Developer settings → Personal access tokens. Fine-grained (recommended): Repository access + Permissions → Contents: Read-only (Metadata: Read is added automatically); for organization repositories the token must be approved by the organization's owner. Classic: scope repo. Enterprise: specify the Base URL https://HOST/api/v3 |
| OAuth | Authorization via GitHub App — click "Authorize" and confirm access |
#Step 2 — Choosing content
- After connecting, a repository tree with folders and files is shown
- Check the specific files or folders to import (Selective Sync)
- Supported formats:
.md,.mdx, Wiki pages
#Step 3 — Running the sync
- Click "Sync"
- Progress is shown in real time
- Once finished, articles appear in the list with a GitHub label
#Connecting GitLab
#Step 1 — Authorization
- In LiKE go to Integrations → GitLab → "Connect"
- Choose an authorization method:
| Method | Description |
|---|---|
| Personal Access Token (PAT) | Create a token in GitLab → Preferences → Access Tokens. Scopes: api and read_user; the token role must be at least Reporter (Guest can't see code). Works for GitLab.com and self-hosted (for self-hosted, specify the instance's Base URL) |
| OAuth | Authorization via GitLab Application — click "Authorize" |
#Step 2 — Choosing content
- A project tree with Wiki pages and Markdown files is shown
- Check the specific pages to import (Selective Sync)
#Step 3 — Running the sync
Same as GitHub — click "Sync" and wait for it to finish.
#Connecting Gitea
Gitea is a self-hosted git platform. It connects via a Personal Access Token and a mandatory URL of your instance (there is no cloud Gitea by default).
#Step 1 — Create a token in Gitea
- In Gitea open Settings → Applications → Generate New Token
- Grant the scopes
read:repositoryandread:user - Copy the token
#Step 2 — Connect in LiKE
- In LiKE go to Integrations → Gitea → "Connect"
- Specify the Base URL of your instance (for example
https://gitea.company.com) — this field is mandatory, without it the connection won't go through - Paste the token
- Choose a space/collection and a mode (Sync — a continuous mirror / Import — a one-time copy)
OAuth 2.0 is also supported if the Gitea administrator has set up an OAuth application in advance. The primary path is the token.
#Step 3 — Choosing content and syncing
- A repository tree with Wiki pages and Markdown files (
.md,.mdx) is shown - Check the nodes you need (Selective Sync) and click "Sync"
- For auto-updates on push, set up a webhook — the secret is generated in the connector card. Articles from Gitea are read-only (as with GitHub/GitLab)
#File selection and sync filters (GitHub, GitLab, Gitea)
For git sources (GitHub, GitLab, and Gitea), the logic of choosing what to sync is more nuanced than a simple "repository on/off":
#What gets synced
| Source inside the repository | Included |
|---|---|
Wiki pages (<repo>.wiki) |
By default, all Wiki pages of the selected repository |
Markdown files in the main tree (*.md, *.mdx) |
By default, all Markdown files, unless filters are configured |
| README.md | Included as a separate article with the title = <repo-name> · README |
Documentation in /docs/** |
Included if the folder exists; the article name is taken from the # ... heading or the filename |
Non-Markdown files (.txt, .rst, .json, code) |
Not synced automatically — LiKE doesn't parse arbitrary formats |
#Path filters (selective sync)
You can narrow down exactly what to take from the repository:
docs/ and guides/, excluding internal/| Prefix | Action |
|---|---|
+ path/pattern |
Include — include files by pattern (glob syntax) |
- path/pattern |
Exclude — exclude files from the sync |
| (empty) | No filters: all Wiki + all .md/.mdx in the repository |
#Change detection (recent changes)
LiKE doesn't "download everything" on every run. Change detection is used:
- GitHub — via webhook (recommended) or polling using
If-Modified-Sinceheaders. The webhook reacts to a push instantly, polling — every 6/12/24/48 hours (depends on auto-sync). - GitLab — likewise: webhook or polling by
last_activity_atvia the Projects API. - Gitea — webhook (
X-Gitea-Signaturesignature) or polling. The push trigger fires only when*.md/*.mdxchanges.
Once a change is detected, only the affected files are synced; the rest of the corpus is not recomputed. This saves a lot of GitHub/GitLab API quota and execution time.
#Branch and tags
| Parameter | Default value |
|---|---|
| Branch | The repository's default branch (usually main / master) |
| Alternative branch | Can be specified explicitly (for example, sync with release/v2) |
| Tag-based sync | Optional: syncing by a version tag (for example, documentation for version v3.0) |
| Multi-branch | Pro+: you can sync several branches in parallel as different articles |
#History and conflicts
- Sync history — the "History" tab in the connector card: date, status (✅ ok / ⚠ warnings / ❌ error), the number of added / updated / deleted articles, run duration. Useful for debugging "why an article from the repository didn't appear."
- Edit conflicts — if an article from the source was edited in LiKE (for GitHub/GitLab this is not allowed by default — articles are read-only). If the mode is Import (a one-time copy), the articles become editable and the link to the source is broken.
#Selective Sync for other connectors
Notion, Confluence, Wiki.js — they have their own selection logic (a page tree), but the principle is the same:
- On connecting, the source's content tree is shown
- Checkboxes — mark the nodes you need
- The rest is not imported
- On a re-sync, only the selected items are updated
#Connecting Wiki.js
#Step 1 — Get a Wiki.js API token
- Open your Wiki.js → Administration → API Access
- Enable the API (if it's disabled)
- Click New API Key
- Name the key (for example
LiKE Integration) - Group: Administrators (access to all pages is required)
- Expiration: no expiration or 1 year
- Copy the generated token
#Step 2 — Connect in LiKE
- In LiKE go to Integrations → Wiki.js → "Connect"
- Enter the URL of your Wiki.js (for example
https://wiki.company.com) - Paste the API token
- Choose a mode:
| Mode | Description |
|---|---|
| Sync | A continuous link — changes in Wiki.js appear in LiKE automatically |
| Import | A one-time copy of all articles |
- Click Save
#Step 3 — Configure the sync
| Parameter | Description |
|---|---|
| Auto-sync | Enable/disable automatic updates |
| Interval | Every 6, 12, 24, or 48 hours |
| Language | Filter by article language (all / specific) |
#Connecting Confluence
Confluence connects via OAuth 2.0 — secure authorization without entering passwords.
#Step 1 — Click "Connect Confluence"
- In LiKE go to Control panel → Integrations
- Find the Confluence card → click "Connect"
- The Atlassian authorization window opens
#Step 2 — Authorize in Atlassian
- Sign in to your Atlassian account (if you haven't already)
- Atlassian shows a request: "LiKE is requesting access to your Confluence"
- Review the permissions — LiKE requests read-only: page content and the list of spaces
- Click "Accept"
#Step 3 — You return to LiKE
After confirmation you're automatically redirected back to Integrations. The Confluence card shows:
- Status: Connected
- Your Confluence site name
- A "Sync" button
#Step 4 — Run the sync
- Click "Sync" for the first import
- LiKE loads all pages from the accessible Confluence spaces
- Articles appear in the knowledge catalog
#Step 5 — Configure auto-sync
Open the settings (the gear icon on the Confluence card):
| Parameter | Description |
|---|---|
| Auto-sync | Enable automatic updates |
| Interval | Every 6, 12, 24, or 48 hours |
Articles from Confluence are read-only. To edit, change the original in Confluence, and LiKE will update on the next sync.
When disconnecting Confluence, you can keep a copy of the articles in LiKE (they become editable) or delete them.
#Connecting Notion
#Step 1 — Create an integration in Notion
- Open Notion → click your avatar (top-left corner) → Settings
- In the left menu choose My connections (or Integrations)
- Click Develop or manage integrations → New integration
- Enter a name (for example
LiKE Import), choose a workspace - Click Submit → copy the Internal Integration Secret (starts with
ntn_; for older integrations — withsecret_)
#Step 2 — Give the integration access to pages
By default, the integration has no access to any pages. You need to explicitly allow it:
- In Notion, open each page (or the parent page/database) you want to import
- Click ⋯ (three dots, top-right corner) → Connect to → choose your
LiKE Importintegration - Confirm access
#Step 3 — Connect in LiKE
- In LiKE → Control panel → Integrations → Notion → "Connect"
- Paste the Integration Secret (copied in step 1)
- Choose a space for the import (existing or create a new one)
- Choose a mode:
| Mode | Description |
|---|---|
| Sync | A continuous link — changes in Notion appear in LiKE automatically. Articles are read-only |
| Import | A one-time copy. Articles become editable in LiKE |
- Click "Connect"
- LiKE loads all pages the integration has access to
#Step 4 — Configure auto-sync
Open the settings (the gear icon on the Notion card):
| Parameter | Description |
|---|---|
| Auto-sync | Enable automatic updates |
| Interval | Every 6, 12, 24, or 48 hours |
When disconnecting Notion, you can keep a copy of the articles in LiKE (they become editable) or delete them.
#Connecting a documentation site
The connector pulls articles from a public site: it reads the sitemap and keeps a copy in LiKE. Useful when your documentation is already published — on your own domain, in Docusaurus, GitBook, Docsify and the like.
#Step 1 — the site address
Integrations → Documentation site → Connect site. Paste the address — any page will do, we take the whole site. The sitemap is found for you: first via robots.txt, then via /sitemap.xml.
#Step 2 — what we found
Press Check site. The scan saves nothing: it only reads the sitemap and shows how many pages were found and how many will be added once filters are applied. If there is no sitemap, the connection does not start and we say so plainly instead of quietly importing nothing.
#Step 3 — where to put it
Choose a space and a collection — the collection can be created right in the wizard. After Connect the crawl starts immediately: progress is visible on the connector card ("Crawling site 22 of 92") and in the background-jobs indicator.
#What is taken and what is not
- the page content is taken — without the site's menu, header and footer;
- Site sections limit the crawl by path (
/docs/,/guides/); leave empty to take the whole site; - service sections such as search and tags are skipped by default;
- Pages per run caps a single run — protection against very large sites;
- pages disallowed in
robots.txtare not fetched; their count is shown in the run summary.
#Repeat updates
With automatic sync on, we re-read the site on a schedule. Only changed pages are re-indexed — the run summary says exactly that: "added", "updated", "unchanged". Unchanged pages do not consume the indexing allowance.
Remove pages that disappeared is off by default: if a page is gone from the site, the article stays in your base. Turn it on when the copy must mirror the site strictly.
#Which sites will work and which will not
A public site with a sitemap will work — that is how most documentation generators are built. Everything else we turn down at the check step rather than after connecting:
| What gets in the way | What you will see |
|---|---|
No sitemap — neither in robots.txt nor at /sitemap.xml |
The connection will not start |
| The sitemap address returns something other than XML — usually a bot-protection page | The connection will not start |
| There is a sitemap, but after filters no pages are left in it | The connection will not start |
robots.txt disallows crawling the whole site |
The connection will not start |
robots.txt is unavailable because of a server error |
The connection will not start: "no answer" is not the same as "allowed" |
| The site is password-protected or reachable only from an internal network | The pages cannot be read |
| The content is drawn by scripts in the browser | The page may come out almost empty — we read the HTML as the server returned it |
Individual pages may still be left out after the site has connected: those disallowed in robots.txt, those answering with an error, those over 10 MB, or those returning something other than HTML. All of them appear in the run summary with the reason — "skipped" and "blocked by robots.txt".
Files (PDF, ZIP, images) are not taken from the site. There is a separate path for them — file import, with its own processing.
#Limitations
- one site per organisation;
- the site must be public — pages behind a password are not read;
- a sitemap is required: without one the connection will not be made;
- we respect
robots.txt, including the crawl delay it specifies.
Disconnecting. Synchronisation stops, and the articles already imported can be deleted or kept as ordinary ones — LiKE asks about that when you disconnect.
#File import
#Uploading files
- Control panel → Import
- Drag files in or click the upload zone
- Supported formats: PDF, DOCX, TXT, MD, RTF, ZIP
- The AI automatically generates a title and slug for each file
- Before publishing you can edit the title or open it in the editor
| Parameter | Description |
|---|---|
| Maximum size | 20 MB per file, 100 MB for a ZIP |
| Batch upload | Up to 10 files at a time |
| Language | Detected automatically |
#ZIP archives
Upload a ZIP archive with many documents — LiKE automatically unpacks and processes each file. Handy for migrating an entire knowledge base.
Supported files inside a ZIP: PDF, DOCX, TXT, MD, RTF. Other files (images, executables) are skipped.
#Import by link
Paste a link to a document — LiKE downloads and imports it:
- Control panel → Import → the "Import by link" section
- Paste a URL → click "Add"
- You can add up to 10 links at a time
- Click "Import"
Supported sources:
- Google Docs — automatically exported as DOCX
- Google Sheets — exported as CSV
- Dropbox — a direct file link
- Any direct URL to a PDF, DOCX, TXT, MD, or RTF file
#Default visibility
For each source you can configure a default visibility:
- Draft — articles are created hidden
- Team — visible to authorized users
- Public — visible to everyone, including anonymous users
Configured in Integrations → source card → Visibility.
#Access channels
Channels let your employees search for information through familiar tools.
#Slack bot
1. Click "Connect Slack" in the Integrations section
2. Authorize the LiKE app in your Slack workspace
3. Choose a channel for notifications
4. Done — employees use
/like question or @LiKE
Features:
/like how do I set up SSO?→ an AI answer right in Slack- Mentioning
@LiKEin any channel → an answer in the thread - Links to source articles (clickable)
#Telegram bot
1. Create a bot via @BotFather in Telegram
2. Copy the bot token
3. Paste the token into LiKE → Integrations → Telegram
4. Add the bot to the desired group
Features:
- Direct messages to the bot → an AI answer
- In a group chat:
/ask question→ an answer - Support for 25+ languages
#JS widget (for your website)
A floating AI search button to embed on any website. The most popular integration — a user sees a button in the corner of the page, clicks it, and a chat with the AI and search across your knowledge base opens.
#Simple installation
1. Integrations → Widgets → "+ Create widget" → give it a name and save
2. Copy the embed code (a `<script>` tag with a unique api-key)
3. Paste it before
</body> on any page of your website
#Basic parameters
| Parameter | Description |
|---|---|
| Name | The widget's internal name (for the admin panel, not visible to users) |
| Position | Bottom-left or bottom-right corner |
| Accent color | The color of the button and accents in the chat (taken from branding by default) |
| Hotkey | For example Ctrl+K / ⌘K to open the chat from the keyboard |
| Language | The chat UI language (auto-detected from <html lang> if not set) |
| Placeholder | The text in the input field ("Ask a question…") |
| Chat logo | Branding of the chat header (on plans with white-label) |
| "Powered by Lynkora" footer | Can be hidden on plans with white-label |
#Dual-auth: two authentication modes (ADR 0032)
In LiKE the widget can work in one of two modes — chosen at creation:
- Whitelist of URLs where the api-key is valid
- Scope =
__public__or specific public collections - Rate limit per api-key
- The company's internal portal
- An SSO-aware widget in your own product
- Sees the user's spaces
For details on configuring each mode and integrating with your backend, see API & widget.
#Scope: what the widget can find
When creating a widget, you set a scope — what exactly it searches:
Within a single widget you can combine several scope entries (for example, two collections from the same space).
#Multi-widget per tenant (ADR 0029 Stage 4)
Within an organization you can create several independent widgets with different scopes and modes:
| Widget | Scope | Where embedded |
|---|---|---|
Marketing site widget |
public_umbrella (Public KB) |
On yourcompany.com — anonymous |
Support center widget |
collection:faq-coll |
On support.yourcompany.com — FAQ only |
Intranet widget |
space:eng-space (by JWT) |
On intranet.yourcompany.com — corporate, sees spaces by permissions |
Each has its own api-key and usage analytics, and the key can be revoked independently. Management is in Integrations → Widgets → "+ Create".
#Session management (Session JWT mode)
In Session JWT mode, each user session has a unique sessionId. An admin can view the active sessions of a specific widget and forcibly revoke a token (for example, if compromise is suspected). The list is in Integrations → Widgets → [widget] → Sessions.
#iframe / Direct Link
Embed the full LiKE search interface on any page:
- Integrations → iframe → copy the code
- Paste
<iframe src="...">into your page - Or use the direct link to navigate (a full page, not an embed)
iframe and Direct Link also support dual-auth — chosen at creation.
#REST API
A full API for programmatic integration (for example, your own UI or integration with other systems):
- Integrations → API Keys → "Create key"
- Specify a name (what the key is for) and a scope (same as for a widget — public_umbrella / space / collection)
- Copy the key — it's shown only once, after reopening it will be masked
Use the key in the X-API-Key header or as a Bearer token.
Main endpoints:
| Endpoint | What it does |
|---|---|
POST /api/public/search |
AI search across the knowledge base (full flow: retrieval + answer + sources) |
POST /api/public/ask |
The same, without the AI answer — only a list of relevant articles |
GET /api/public/articles |
List of articles in the api-key's scope |
GET /api/public/articles/{id} |
Article content |
GET /api/public/collections |
The scope's collection tree |
Limits: rate limits depend on the plan and are tied to the api-key. Exceeding them returns HTTP 429 with a Retry-After header. The exact values for your plan are on the Plans page and in the admin panel.
Full API documentation: API & widget.
#Languages
LiKE supports 25+ languages for AI search and cross-language search (the interface itself is available in 11 UI locales):
Русский, English, Deutsch, Français, Español, Português, Italiano, Nederlands, Polski, Čeština, Svenska, Dansk, Suomi, Română, Magyar, Hrvatski, Türkçe, Afrikaans, Kiswahili, Bahasa Indonesia, Tiếng Việt, Українська, Српски, Български, Ελληνικά, 한국어, 日本語, 中文, हिन्दी, ไทย, עברית, العربية.
Cross-language search: a question in one language → an answer from articles in another.