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
Maintainers
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.
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)
- Open your n8n instance
- Go to Settings > Community Nodes
- Select Install
- Enter
n8n-nodes-aemand install
Manual Installation
cd ~/.n8n
npm install n8n-nodes-aemDevelopment 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 startCredentials 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:
- Navigate to Adobe Developer Console
- Create a project and add AEM API
- Generate OAuth Server-to-Server credentials
- Download the service credentials JSON file
Resources & Operations
Asset
get- Get asset metadata by pathgetAll- List all assets in a foldercreate- Create/upload a new assetupdate- Update asset metadataupdateBinary- Update asset binary filedelete- Delete an assetcopy- Copy asset to new locationmove- Move asset to new locationgetRenditions- List all renditionscreateRendition- Create a new renditiondeleteRendition- Delete a rendition
Folder
get- Get folder metadatagetAll- List all subfolderscreate- Create a new folderupdate- Update folder propertiesdelete- Delete a foldercopy- Copy foldermove- Move folder
Content Fragment
get- Get content fragmentgetAll- List content fragmentscreate- Create content fragmentupdate- Update fragment elementsdelete- Delete fragmentgetVariations- List variationscreateVariation- Create variationpublish- Publish fragmentunpublish- Unpublish fragment
Content Fragment Model
get- Get model definitiongetAll- List all modelsgetFields- Get field definitions
GraphQL
query- Execute GraphQL queryqueryPersisted- Execute persisted querylistPersistedQueries- List persisted queriescreatePersistedQuery- Create persisted querydeletePersistedQuery- Delete persisted query
Page
get- Get page contentcreate- Create new pageupdate- Update page propertiesdelete- Delete pagecopy- Copy pagemove- Move pagepublish- Publish pageunpublish- Unpublish pagelock- Lock pageunlock- Unlock page
Comment
getAll- List comments on assetcreate- Add commentdelete- Delete commentreply- Reply to comment
Workflow
getAll- List workflow modelsstart- Start workflowgetInstances- List running instancesgetInstance- Get instance detailsterminate- Terminate workflowcomplete- Complete workflow step
Tag
get- Get tag detailsgetAll- List tags in namespacecreate- Create tagdelete- Delete taggetTagged- Get tagged content
User
get- Get user detailsgetAll- List userscreate- Create userupdate- Update userdelete- Delete usergetGroups- Get user's groupsaddToGroup- Add to groupremoveFromGroup- Remove from group
Replication
activate- Publish contentdeactivate- Unpublish contentgetQueue- Get queue statusclearQueue- 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
- Use service accounts with minimal required permissions
- Store credentials securely using n8n's credential management
- For Cloud Service, use OAuth 2.0 instead of Developer Tokens in production
- Regularly rotate credentials and review access permissions
- 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:coverageAuthor
Velocity BPA
- Website: velobpa.com
- GitHub: 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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Support
- GitHub Issues: Report bugs or request features
- Documentation: AEM API Documentation
- Email: [email protected]
Acknowledgments
- Adobe Experience Manager
- n8n - Workflow automation platform
- n8n Community - Community support and resources
