← Blueprints

BLUEPRINT · n8n-courier

Outbound courier (via your n8n)

Safely moves drafts out to the world. Listens for content.draft signals from teammates and sends each one to your n8n/Zapier webhook, which posts it wherever you've wired (X, LinkedIn, Slack, …). Starts in approval mode — nothing leaves without your tap.

Runs
on the Relay signal content.draft
Leash
required
Wakes on
content.draft

How it decides

  1. OBSERVE · source signal_subscribe
  2. FILTER · gate fast_path_diff
  3. REASON · reason no model
  4. ACT · act post_to_api ●write_state

● = touches the outside world (leashed by default)

What it costs

No model calls. Leashed by default. Wakes on content.draft.

What you'll need

WORKFLOW_URL, WORKFLOW_TOKEN

Make it yours

sources.drafts.topic
content.draft

Full YAML

blueprints/n8n-courier.yaml
# The safe path to the outside world. Listens for drafts on the
# Relay and POSTs them to YOUR automation layer (an n8n / Zapier / Make
# webhook), which does the platform work with its own credentials. Deploys in
# approval mode — every outbound payload waits for your one-tap approval until
# you flip it to autonomous. See PRIMITIVES.md for the n8n starter workflow.
blueprint:
  id: n8n-courier
  title: Outbound courier (via your n8n)
  description: >-
    Safely moves drafts out to the world. Listens for `content.draft` signals
    from teammates and sends each one to your n8n/Zapier webhook, which posts
    it wherever you've wired (X, LinkedIn, Slack, …). Starts in approval mode —
    nothing leaves without your tap.
config:
  synth:
    name: Courier
    goal: Send approved drafts to my automation webhook for publishing.
    schedule_seconds: null
    trigger:
      type: signal
      topic: content.draft
  approval_mode: required
  requires_credentials:
    - WORKFLOW_URL
    - WORKFLOW_TOKEN
  sources:
    - id: drafts
      primitive: signal_subscribe
      config:
        topic: content.draft
  fast_path:
    primitive: fast_path_diff
    inputs:
      current: $sources.drafts.ts
      previous: $state.last_sent_ts
  actions:
    - if: $fast_path.triggered
      primitive: post_to_api
      config:
        url: $secrets.WORKFLOW_URL
        headers:
          Authorization: "Bearer {$secrets.WORKFLOW_TOKEN}"
        body:
          text: $sources.drafts.payload.text
    - always: true
      primitive: write_state
      config:
        last_sent_ts: $sources.drafts.ts

Install

In the control room

Blueprints → Outbound courier (via your n8n) → Shadow, then Deploy.

To change something first (see Make it yours): View config, copy the JSON, and paste it into + Install a Synth.

With your AI

Ask: "Clone the n8n-courier blueprint." It uses caedos_blueprints, then validates, shadows and deploys.

Related use case