Skip to main content

ideon queue

What This Command Does

ideon queue manages the content queue — a global list of pending articles waiting to be written. Queue entries store a fully resolved snapshot of the write parameters at enqueue time, so they are self-contained and portable.

Subcommands

How It Works

When you add an article to the queue, Ideon resolves all parameters (publication defaults, series defaults, style, intent, length, content targets) and saves a snapshot to ~/.config/ideon/queue/<id>.json. Each entry is one file.

When you run ideon write --from-queue, the next pending entry is atomically claimed (renamed to .in-progress.json), written, and then deleted on success. If the write fails or is interrupted, the entry is automatically restored to pending.

Storage

Queue entries are stored as individual JSON files in ~/.config/ideon/queue/. Each file contains:

  • id — Unique identifier (UUID)
  • statuspending or in-progress
  • idea — The content idea
  • settings — Fully resolved AppSettings snapshot
  • publication — Full publication object (if specified)
  • series — Full series object (if specified)
  • job — Inlined job definition (if --job was used)
  • exportPath — Export destination (if --export was used)
  • addedAt — ISO timestamp

Atomic Guard

Queue operations use file rename as an atomic guard. When ideon write --from-queue picks up an entry, it renames <id>.json to <id>.in-progress.json. A second concurrent process will fail the rename and skip to the next entry.

On success, the .in-progress file is deleted. On failure or interruption, it is renamed back to .json with status: 'pending'.


ideon queue add

Add an article to the content queue.

Usage

ideon queue add [idea] [--idea <idea>] [--audience <description>] [--job <path>] [--primary <type=1>] [--secondary <type=count> ...] [--style <style>] [--intent <intent>] [--length <size-or-words>] [--publication <slug>] [--series <slug>] [--no-interactive] [--export <path>]

Options

ideon queue add accepts the same content-defining options as ideon write. Adding a new option to ideon write automatically makes it available in ideon queue add.

FlagRequiredTypeDescription
[idea]NostringPositional idea prompt.
--idea <idea>NostringExplicit idea prompt.
--audience <description>NostringAudience hint for shared-plan targeting.
--job <path>NostringPath to a JSON job definition. Settings are snapshotted at enqueue time.
--primary <type=1>Yes in non-interactivestringPrimary output target.
--secondary <type=count>Norepeatable stringSecondary output targets.
--style <style>NoenumWriting style.
--intent <intent>NoenumContent intent.
--length <size-or-words>Noenum or integerTarget length.
--publication <slug>NostringPublication for defaults and editorial policy.
--series <slug>NostringContent series for defaults and thematic context.
--keywords <keywords>NostringComma-separated SEO keywords. Supports compound keywords. Merges with series keywords.
--no-interactiveNobooleanFail instead of prompting for missing input.
--export <path>NostringExport destination after writing. Stored in queue entry.

Examples

# Queue a simple idea
ideon queue add "How AI changes technical publishing" --primary article=1 --style technical --intent tutorial

# Queue with publication and series
ideon queue add "Deep dive into RAG" --primary article=1 --publication tech-blog --series ai-deep-dives

# Queue with all options
ideon queue add "Our Q3 launch" --primary article=1 --secondary x-thread=2 --style professional --intent announcement --length large --publication blog --export ./out

# Queue from a job file
ideon queue add --job ./planned-article.json

Notes

  • All parameters are resolved and snapshotted at enqueue time. Changing publication or series defaults later does not affect already-queued entries.
  • The --export path is stored as-is. If the directory moves before writing, the export will fail at write time.
  • In interactive mode (TTY), missing style/intent/length/targets are prompted for, just like ideon write.

ideon queue list

List queued articles.

Usage

ideon queue list [--json] [--publication <slug>] [--status <status>]

Options

FlagTypeDescription
--jsonbooleanOutput as JSON array.
--publication <slug>stringFilter by publication slug.
--status <status>stringFilter by status: pending or in-progress. Defaults to all.

Examples

# List all queued articles
ideon queue list

# Filter by publication
ideon queue list --publication tech-blog

# JSON output for scripting
ideon queue list --json

# Show only pending entries
ideon queue list --status pending

ideon queue peek

Show the next pending article without consuming it.

Usage

ideon queue peek [--publication <slug>]

Options

FlagTypeDescription
--publication <slug>stringFilter by publication slug.

Examples

# See what's next
ideon queue peek

# See next for a specific publication
ideon queue peek --publication tech-blog

ideon queue remove

Delete a queued article by ID.

Usage

ideon queue remove <id> [--force]

Options

FlagRequiredTypeDescription
<id>YesstringQueue entry ID to delete.
--force / -fNobooleanSkip confirmation prompt.

Examples

# With confirmation prompt
ideon queue remove 550e8400-e29b-41d4-a716-446655440000

# Force delete
ideon queue remove 550e8400-e29b-41d4-a716-446655440000 --force

ideon queue clear

Delete all queued articles.

Usage

ideon queue clear [--force]

Options

FlagRequiredTypeDescription
--force / -fNobooleanSkip confirmation prompt.

Examples

# With confirmation prompt
ideon queue clear

# Force clear
ideon queue clear --force

Using the Queue with ideon write

Dequeue and Write

# Write the next pending article
ideon write --from-queue

# Write the next pending article for a specific publication
ideon write --from-queue --publication tech-blog

# Override queued settings at write time
ideon write --from-queue --style playful

Behavior

  • --from-queue picks the oldest pending entry, atomically claims it, and writes it.
  • On success, the queue entry is deleted.
  • On failure or Ctrl+C, the entry is automatically restored to pending.
  • Any CLI flags passed alongside --from-queue override the snapshotted settings.
  • If the queue is empty (or no entries match --publication), the command fails with an error.