Skip to main content
An article is a single page of content in your knowledge base. For fields and response details, see the API reference. Every command that takes an article ID accepts the article’s slug, its permalink identifier (a-XXXXXXXX), or its UUID. See Getting an article ID.

List articles

This command lists published articles by default; pass --state all to include drafts. Use this when you want to review what exists, filter by category or state, or collect IDs for another command.
Sample output (--json)
--state takes draft, published, archived or all. --search-term is a partial, case-insensitive match on title, slug and body; with --state draft or all it also matches unpublished draft revisions. It is not relevance ranked, so use search for that. --sort-by takes title, slug, state, category_name, views_count, created_at or updated_at, and --order-by takes asc or desc.

Search articles

This command runs a full-text search across your published articles, ranked by relevance. Use this when you know roughly what an article says but not where it lives; articles list --search-term filters the same corpus but returns the full list shape. For fields and response details, see the API reference.
The table shows the article ID, the matched snippet and the article URL. The snippet is flattened to plain text, so the highlight markup and the article’s own line breaks never break the column alignment. --json and --toon carry every field the API returns, including title, category, category_url, matched_title and matched_category.
Sample output (--json)

Show an article

This command shows the full record for one article, including its HTML body, author, category, and tags. Use this when you want to read or export an article after finding its ID from articles list or search.
Required arguments:
  • <id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
Sample output (--json)

Create an article

This command creates an article in a category. Use this when you want to publish content from a script or a content pipeline instead of the editor.
--category is the category path, most specific first: "Installation,Getting Started" places the article in Installation, whose parent is Getting Started. Names are matched, not IDs or slugs. --tags takes comma-separated tag names, and tags that do not exist are created. Omit --state and the article is created as a draft. Creating with --state published needs the Manage articles permission.
Sample output (--json)
With --quiet, this prints only the new article’s ID.

Update an article

This command updates an existing article’s title, body, slug, state, or category. Use this to publish a draft, correct content, rename an article’s URL, or move an article to another category.
Required arguments:
  • <id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
Only the flags you pass are changed. --tags replaces all tags, and an empty value removes them all. --related-articles replaces all related articles with the given IDs, slugs or permalink identifiers, and an empty value removes them all; an unknown article changes nothing. --note sets the internal note, and an empty value deletes it. --slug can be modified only while the article is published. --category is the category path, most specific first, and moves the article; categories that do not exist are created. Drafts need the Modify articles permission. Publishing, and any change to an already published article, also needs the Manage articles permission.
Sample output (--json)
An unlisted link is a secret URL that lets anyone view a published article without signing in. For fields and response details, see the API reference. This command shows the unlisted link an article already has. It never creates a link, so it fails when the article has none or the link has expired. Use this when you want to share a published article outside your knowledge base.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
Sample output (--json)
To create the first link, or to replace an expired one, use regenerate. The article must be published; a draft returns an error. This command issues a new unlisted link and invalidates the old URL immediately. Use this when a link has been shared too widely, or when you want the link to expire.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
The presets one_day, seven_days, and thirty_days compute the expiry on the server and reject --expiration-date. Use custom together with --expiration-date for an exact time; passing --expiration-date alone is treated as custom.
Sample output (--json)

Trash an article

This command moves an article to the trash. It stays there for 30 days before it is deleted for good. Needs the Manage articles permission. Use neetokb trash to restore it. A synced article cannot be trashed.
Required arguments:
  • <id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID

Trash articles in bulk

This command moves up to 100 articles to the trash. If one cannot be trashed, none are.

Archive and unarchive an article

Archiving turns an article into a draft and keeps it out of the public knowledge base. Unarchiving brings it back as a draft. List archived articles with neetokb articles list --state archived.
Required arguments:
  • <id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID

Discard a draft

This command throws away the unpublished draft changes of a published article. The live version stays. An article that is not published has no live version to keep, so the command is refused; trash the article instead.
Required arguments:
  • <id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID

Clone an article

This command copies an article into a new draft titled <title> - CLONED - <timestamp>.
Required arguments:
  • <id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID

Update articles in bulk

This command changes up to 100 articles at once. Give exactly one of --category-id, --state or --status. The change is all-or-nothing. --state also needs the Manage articles permission.
--state takes draft or published. --status takes archive or active.

Create articles in a batch

This command creates 1 to 25 articles from a JSON file, each with its own content. The file holds an array of articles, or an object with an articles array. Each article takes the same fields as create. The articles are saved in order, so a later article can name an earlier article’s slug in related_article_ids. The change is all-or-nothing: if one article fails, nothing is saved and the error names that article, counting from 1. Publishing also needs the Manage articles permission.
articles.json

Update articles in a batch

This command updates 1 to 25 articles from a JSON file, each with its own changes. Each item names the article in article_id and gives at least one of title, html_content, slug, state, category, tags, related_article_ids or note. An article may appear only once. The change is all-or-nothing, like batch create. Use bulk update instead to apply one change to many articles.
changes.json

Schedules

A schedule publishes or unpublishes an article at a future time. Creating a publish schedule also needs the Manage articles permission.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID

Create a schedule

This command schedules a publish or unpublish.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
The date must be in the future. When it has no offset, it is read in --time-zone. An article can have one schedule of each kind, and when it has both, the unpublish time must not come after the publish time.

Delete a schedule

This command deletes a schedule.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
  • <schedule-id> - Schedule ID from schedules list

Article SEO settings

These commands show and change the SEO settings of one article. For the whole knowledge base, see neetokb workspace seo.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID

Update article SEO settings

Only the flags you pass change.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
--keywords replaces the whole list. The cover image and the Google Analytics ID are not available here.

Revisions

A revision is a saved earlier version of an article.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID

Show a revision

This command shows a revision with its title and HTML content.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
  • <revision-id> - Revision ID from revisions list

Restore a revision

This command copies a revision into the draft of an article. The live content does not change until you publish the draft. A synced article cannot be restored.
Required arguments:
  • <article-id> - Article slug, permalink identifier (a-XXXXXXXX), or UUID
  • <revision-id> - Revision ID from revisions list