npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@marcmeese/n8n-nodes-companions

v0.0.10

Published

N8N companion nodes for PostgreSQL conversation memory management and many other things

Readme

n8n Companion Nodes

Dieses Paket stellt n8n-Nodes für PostgreSQL Conversation Memory Management und weitere Quality-of-Life Funktionen bereit.

Die Memory Nodes ermöglichen es, Chat-Verläufe strukturiert in PostgreSQL zu speichern und abzurufen - ideal für KI-Assistenten und Chatbots.

Installation

In n8n Settings → Community Nodes:

@marcmeese/n8n-nodes-companions

Konfiguration

PostgreSQL-Credentials einrichten

  1. Gehe zu n8n → Credentials → New
  2. Wähle "Postgres"
  3. Gib deine PostgreSQL-Verbindungsdaten ein:
    • Host
    • Port
    • Database
    • User
    • Password
    • SSL (optional)
  4. Teste die Verbindung

Verfügbare Nodes

📊 Memory Management

Create Memory Table

Erstellt eine neue PostgreSQL-Tabelle für Conversation Memory.

Parameter:

  • Memory Bucket ID (string): Eindeutige ID des Memory Speichers (wird Teil des Tabellennamens)

Output: Erfolgsbestätigung mit Tabellennamen

Hinweis: Erstellt automatisch Indizes für optimale Performance


Delete Memory Table

Löscht eine komplette Memory-Tabelle inklusive aller Einträge.

Parameter:

  • Memory Bucket ID (string): ID des zu löschenden Memory Speichers
  • Confirm Deletion (boolean): Sicherheitsbestätigung (muss auf true gesetzt werden)

Output: Erfolgsbestätigung

⚠️ Warnung: Dieser Vorgang ist nicht umkehrbar!


Insert Memory Row

Fügt eine neue Nachricht in die Memory-Tabelle ein.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Chat ID (string): Chat-Identifikator (nicht unique)
  • User ID (string): Benutzer-Identifikator (nicht unique)
  • Message (string): Nachrichteninhalt
  • Role (dropdown): Rolle des Senders
    • User
    • Assistant
    • System

Output: Eingefügte Row mit ID und Zeitstempel


Fetch Memory Rows

Holt Einträge aus der Memory-Tabelle als strukturierte Daten.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Limit (number): Anzahl der zu holenden Einträge (Standard: 10)
  • Max Age (Hours) (number): Maximales Alter in Stunden (0 = unbegrenzt, Standard: 24)
  • Chat ID (string, optional): Filter nach Chat ID
  • User ID (string, optional): Filter nach User ID
  • Role (dropdown, optional): Filter nach Rolle (All/User/Assistant/System)

Output: Array von Memory-Rows mit allen Feldern (id, chat_id, user_id, message, role, created_at)

Hinweis: Gibt die ältesten passenden Einträge zurück (aufsteigend sortiert)


Fetch Memory Text

Holt Einträge aus der Memory-Tabelle und formatiert sie als lesbaren Text.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Limit (number): Anzahl der zu holenden Einträge (Standard: 10)
  • Max Age (Hours) (number): Maximales Alter in Stunden (0 = unbegrenzt, Standard: 24)
  • Chat ID (string, optional): Filter nach Chat ID
  • User ID (string, optional): Filter nach User ID
  • Role (dropdown, optional): Filter nach Rolle

Formatierungs-Optionen:

  • Include Row ID (boolean): Zeigt Row ID als (#ID)
  • Include Chat ID (boolean): Zeigt Chat ID als [Chat: CHAT_ID]
  • Include User ID (boolean): Zeigt User ID als [User: USER_ID]
  • Include Time (boolean): Zeigt Zeitstempel (DD.MM.YYYY HH:MM)
  • Include Role (boolean): Zeigt Rolle (User/Assistant/System) - Standard: true
  • Include Message (boolean): Zeigt Nachrichteninhalt - Standard: true

Output: Formatierter Text mit einem Eintrag pro Zeile

Beispiel-Output:

User: Hallo, wie geht es dir?
Assistant: Mir geht es gut, danke! Wie kann ich dir helfen?
User: Ich brauche Hilfe bei Python.

Delete Memory Rows

Löscht Einträge aus der Memory-Tabelle.

Parameter:

  • Memory Bucket ID (string): ID des Memory Speichers
  • Delete Strategy (dropdown): Lösch-Strategie
    • Delete Oldest X Rows: Löscht die X ältesten Einträge
    • Delete by Criteria: Löscht alle Einträge nach Kriterien
  • Confirm Deletion (boolean): Sicherheitsbestätigung

Bei "Delete Oldest X Rows":

  • Limit (number): Anzahl der zu löschenden Einträge (Standard: 5)

Bei "Delete by Criteria":

  • Max Age (Hours) (number): Lösche Einträge älter als X Stunden (Standard: 168 = 1 Woche)
  • Chat ID (string, optional): Filter nach Chat ID
  • User ID (string, optional): Filter nach User ID
  • Role (dropdown, optional): Filter nach Rolle

Output: Anzahl gelöschter Rows


Typische Workflows

Chat-Verlauf speichern und abrufen

  1. Create Memory Table - Erstelle Tabelle beim ersten Start
  2. Insert Memory Row - Speichere jede User- und Assistant-Nachricht
  3. Fetch Memory Text - Hole die letzten 20 Nachrichten für Context
  4. Delete Memory Rows - Lösche alte Nachrichten (>7 Tage) regelmäßig

Multi-User Chat-System

  • Nutze verschiedene Chat IDs für verschiedene Conversations
  • Nutze User ID um Nachrichten pro Benutzer zu filtern
  • Ein Memory Bucket kann mehrere Chats/User verwalten

Datenbank-Schema

Jede Memory-Tabelle hat folgende Struktur:

CREATE TABLE conversation_{bucket_id} (
  id SERIAL PRIMARY KEY,
  chat_id VARCHAR(255) NOT NULL,
  user_id VARCHAR(255) NOT NULL,
  message TEXT NOT NULL,
  role VARCHAR(50) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Indizes für Performance:

  • idx_{bucket_id}_chat_user auf (chat_id, user_id)
  • idx_{bucket_id}_created_at auf (created_at DESC)