diff --git a/packages/nodes-base/nodes/Ghost/Ghost.node.ts b/packages/nodes-base/nodes/Ghost/Ghost.node.ts
index 36733028cb..de6a521aaf 100644
--- a/packages/nodes-base/nodes/Ghost/Ghost.node.ts
+++ b/packages/nodes-base/nodes/Ghost/Ghost.node.ts
@@ -195,6 +195,14 @@ export class Ghost implements INodeType {
if (contentFormat === 'html') {
post.html = content;
qs.source = 'html';
+ } else if (contentFormat === 'lexical') {
+ const lexical = validateJSON(content);
+ if (lexical === undefined) {
+ throw new NodeOperationError(this.getNode(), 'Content must be a valid JSON', {
+ itemIndex: i,
+ });
+ }
+ post.lexical = content;
} else {
const mobileDoc = validateJSON(content);
if (mobileDoc === undefined) {
@@ -293,6 +301,15 @@ export class Ghost implements INodeType {
post.html = updateFields.content || '';
qs.source = 'html';
delete updateFields.content;
+ } else if (contentFormat === 'lexical') {
+ const lexical = validateJSON((updateFields.contentJson as string) || undefined);
+ if (lexical === undefined) {
+ throw new NodeOperationError(this.getNode(), 'Content must be a valid JSON', {
+ itemIndex: i,
+ });
+ }
+ post.lexical = updateFields.contentJson;
+ delete updateFields.contentJson;
} else {
const mobileDoc = validateJSON((updateFields.contentJson as string) || undefined);
if (mobileDoc === undefined) {
diff --git a/packages/nodes-base/nodes/Ghost/PostDescription.ts b/packages/nodes-base/nodes/Ghost/PostDescription.ts
index 8d344e5a50..de01ce27b5 100644
--- a/packages/nodes-base/nodes/Ghost/PostDescription.ts
+++ b/packages/nodes-base/nodes/Ghost/PostDescription.ts
@@ -114,6 +114,10 @@ export const postFields: INodeProperties[] = [
name: 'Mobile Doc',
value: 'mobileDoc',
},
+ {
+ name: 'Lexical',
+ value: 'lexical',
+ },
],
default: 'html',
description: 'The format of the post',
@@ -150,6 +154,22 @@ export const postFields: INodeProperties[] = [
description:
'Mobiledoc is the raw JSON format that Ghost uses to store post contents. Info.',
},
+ {
+ displayName: 'Content (JSON)',
+ name: 'content',
+ type: 'json',
+ displayOptions: {
+ show: {
+ source: ['adminApi'],
+ resource: ['post'],
+ operation: ['create'],
+ contentFormat: ['lexical'],
+ },
+ },
+
+ default: '',
+ description: 'Lexical is the JSON format returned by the Ghost Default editor',
+ },
{
displayName: 'Additional Fields',
name: 'additionalFields',
@@ -395,6 +415,10 @@ export const postFields: INodeProperties[] = [
name: 'Mobile Doc',
value: 'mobiledoc',
},
+ {
+ name: 'Lexical',
+ value: 'lexical',
+ },
],
default: ['mobiledoc'],
},
@@ -532,6 +556,10 @@ export const postFields: INodeProperties[] = [
name: 'Plaintext',
value: 'plaintext',
},
+ {
+ name: 'Lexical',
+ value: 'lexical',
+ },
],
default: ['html'],
description:
@@ -593,6 +621,10 @@ export const postFields: INodeProperties[] = [
name: 'Mobile Doc',
value: 'mobiledoc',
},
+ {
+ name: 'Lexical',
+ value: 'lexical',
+ },
],
default: ['mobiledoc'],
},
@@ -636,6 +668,10 @@ export const postFields: INodeProperties[] = [
name: 'Mobile Doc',
value: 'mobileDoc',
},
+ {
+ name: 'Lexical',
+ value: 'lexical',
+ },
],
default: 'html',
description: 'The format of the post',
@@ -707,6 +743,18 @@ export const postFields: INodeProperties[] = [
description:
'Mobiledoc is the raw JSON format that Ghost uses to store post contents. Info..',
},
+ {
+ displayName: 'Content (JSON)',
+ name: 'contentJson',
+ type: 'json',
+ displayOptions: {
+ show: {
+ '/contentFormat': ['lexical'],
+ },
+ },
+ default: '',
+ description: 'Lexical is the JSON format returned by the Ghost Default editor',
+ },
{
displayName: 'Featured',
name: 'featured',