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

n8n-nodes-aem

v1.0.0

Published

A comprehensive n8n community node for Adobe Experience Manager providing 11 resources and 70+ operations for DAM, content fragments, pages, GraphQL, and workflow automation.

Downloads

100

Readme

n8n-nodes-aem

[Velocity BPA Licensing Notice]

This n8n node is licensed under the Business Source License 1.1 (BSL 1.1).

Use of this node by for-profit organizations in production environments requires a commercial license from Velocity BPA.

For licensing information, visit https://velobpa.com/licensing or contact [email protected].

A comprehensive n8n community node for Adobe Experience Manager (AEM) providing enterprise-grade content management automation. This integration enables content teams, developers, and marketers to automate asset management, content fragment operations, page publishing, GraphQL queries, and headless content delivery across both AEM 6.5 and AEM as a Cloud Service deployments.

n8n AEM License

Features

  • 11 Resource Categories with 70+ operations for complete AEM automation
  • Dual Authentication Support - Basic Auth (AEM 6.5) and OAuth 2.0 (Cloud Service)
  • Digital Asset Management - Full DAM operations including renditions and metadata
  • Content Fragments - Create, update, and manage headless content
  • GraphQL Integration - Execute queries and manage persisted queries
  • Page Management - Full page lifecycle with publish/unpublish workflows
  • Workflow Automation - Start, monitor, and control AEM workflows
  • User & Group Management - Manage users and group memberships
  • Replication Control - Activate/deactivate content to publish instances
  • Event Triggers - Poll-based triggers for content changes

Installation

Community Nodes (Recommended)

  1. Open your n8n instance
  2. Go to Settings > Community Nodes
  3. Select Install
  4. Enter n8n-nodes-aem and install

Manual Installation

cd ~/.n8n
npm install n8n-nodes-aem

Development Installation

# 1. Extract the zip file
unzip n8n-nodes-aem.zip
cd n8n-nodes-aem

# 2. Install dependencies
npm install

# 3. Build the project
npm run build

# 4. Create symlink to n8n custom nodes directory
# For Linux/macOS:
mkdir -p ~/.n8n/custom
ln -s $(pwd) ~/.n8n/custom/n8n-nodes-aem

# For Windows (run as Administrator):
# mklink /D %USERPROFILE%\.n8n\custom\n8n-nodes-aem %CD%

# 5. Restart n8n
n8n start

Credentials Setup

AEM 6.5 (Basic Authentication)

| Field | Description | |-------|-------------| | Deployment Type | Select "AEM 6.5" | | AEM Host | Your AEM instance URL (e.g., https://author.example.com) | | Username | AEM username | | Password | AEM password |

AEM as a Cloud Service (OAuth 2.0)

| Field | Description | |-------|-------------| | Deployment Type | Select "Cloud Service" | | AEM Host | Cloud Service URL (e.g., https://author-p12345-e67890.adobeaemcloud.com) | | Client ID | Service Account Client ID | | Client Secret | Service Account Client Secret | | Technical Account ID | Technical Account ID from Adobe Developer Console | | Organization ID | Adobe Organization ID | | IMS Host | Adobe IMS host (default: ims-na1.adobelogin.com) | | Meta Scopes | Required scopes for API access |

To obtain Cloud Service credentials:

  1. Navigate to Adobe Developer Console
  2. Create a project and add AEM API
  3. Generate OAuth Server-to-Server credentials
  4. Download the service credentials JSON file

Resources & Operations

Asset

  • get - Get asset metadata by path
  • getAll - List all assets in a folder
  • create - Create/upload a new asset
  • update - Update asset metadata
  • updateBinary - Update asset binary file
  • delete - Delete an asset
  • copy - Copy asset to new location
  • move - Move asset to new location
  • getRenditions - List all renditions
  • createRendition - Create a new rendition
  • deleteRendition - Delete a rendition

Folder

  • get - Get folder metadata
  • getAll - List all subfolders
  • create - Create a new folder
  • update - Update folder properties
  • delete - Delete a folder
  • copy - Copy folder
  • move - Move folder

Content Fragment

  • get - Get content fragment
  • getAll - List content fragments
  • create - Create content fragment
  • update - Update fragment elements
  • delete - Delete fragment
  • getVariations - List variations
  • createVariation - Create variation
  • publish - Publish fragment
  • unpublish - Unpublish fragment

Content Fragment Model

  • get - Get model definition
  • getAll - List all models
  • getFields - Get field definitions

GraphQL

  • query - Execute GraphQL query
  • queryPersisted - Execute persisted query
  • listPersistedQueries - List persisted queries
  • createPersistedQuery - Create persisted query
  • deletePersistedQuery - Delete persisted query

Page

  • get - Get page content
  • create - Create new page
  • update - Update page properties
  • delete - Delete page
  • copy - Copy page
  • move - Move page
  • publish - Publish page
  • unpublish - Unpublish page
  • lock - Lock page
  • unlock - Unlock page

Comment

  • getAll - List comments on asset
  • create - Add comment
  • delete - Delete comment
  • reply - Reply to comment

Workflow

  • getAll - List workflow models
  • start - Start workflow
  • getInstances - List running instances
  • getInstance - Get instance details
  • terminate - Terminate workflow
  • complete - Complete workflow step

Tag

  • get - Get tag details
  • getAll - List tags in namespace
  • create - Create tag
  • delete - Delete tag
  • getTagged - Get tagged content

User

  • get - Get user details
  • getAll - List users
  • create - Create user
  • update - Update user
  • delete - Delete user
  • getGroups - Get user's groups
  • addToGroup - Add to group
  • removeFromGroup - Remove from group

Replication

  • activate - Publish content
  • deactivate - Unpublish content
  • getQueue - Get queue status
  • clearQueue - Clear queue

Trigger Node

The AEM Trigger node supports polling-based triggers for:

  • Asset created/modified/deleted
  • Content Fragment created/modified
  • Page created/modified/published/unpublished
  • Workflow completed/failed

Configure watch paths and filters to monitor specific content areas.

Usage Examples

Upload an Asset

{
  "resource": "asset",
  "operation": "create",
  "folderPath": "/content/dam/myproject",
  "fileName": "hero-image.jpg",
  "binaryPropertyName": "data"
}

Execute GraphQL Query

{
  "resource": "graphql",
  "operation": "query",
  "endpoint": "mysite",
  "query": "{ articleList { items { _path title author } } }"
}

Publish a Page

{
  "resource": "page",
  "operation": "publish",
  "pagePath": "/content/mysite/en/about"
}

AEM Concepts

Assets HTTP API

The Assets HTTP API provides RESTful access to AEM Assets using Siren hypermedia format. All asset operations use paths starting with /content/dam.

Content Fragments

Content Fragments are structured content pieces with models defining their schema. They support variations for channel-specific content and are used for headless content delivery.

GraphQL API

AEM's GraphQL API enables efficient content delivery for headless applications. Persisted queries improve performance by caching query definitions.

Replication

Replication syncs content between author and publish instances. Activation publishes content; deactivation removes it from publish.

Error Handling

The node handles common AEM errors:

  • 401 Unauthorized: Invalid credentials or expired token
  • 403 Forbidden: Insufficient permissions
  • 404 Not Found: Resource doesn't exist
  • 409 Conflict: Resource already exists
  • 500 Server Error: AEM internal error

Enable "Continue on Fail" to process all items even when errors occur.

Security Best Practices

  1. Use service accounts with minimal required permissions
  2. Store credentials securely using n8n's credential management
  3. For Cloud Service, use OAuth 2.0 instead of Developer Tokens in production
  4. Regularly rotate credentials and review access permissions
  5. Use environment variables for sensitive configuration

Development

# Install dependencies
npm install

# Build the project
npm run build

# Run linting
npm run lint

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

Author

Velocity BPA

Licensing

This n8n community node is licensed under the Business Source License 1.1.

Free Use

Permitted for personal, educational, research, and internal business use.

Commercial Use

Use of this node within any SaaS, PaaS, hosted platform, managed service, or paid automation offering requires a commercial license.

For licensing inquiries: [email protected]

See LICENSE, COMMERCIAL_LICENSE.md, and LICENSING_FAQ.md for details.

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Support

Acknowledgments