Use the power of AI to generate meaningful and accurate content.

Please contact us at or for a demo. Anytime. Until then, enjoy our little videos


Simplidh creativity studio is available as

  • Office 365/Word Add-in

  • Web Application

  • FirstSpirit Module

You will need to request your own client account with us. Once we have discussed all the details, you will receive your very own client id which you can use to access all available service interfaces.

Office 365

You can install our add-in via the ribbon path Insert - Add-ins - Upload My Add-in - Browse


Once uploaded, a new panel will be available that you can access via a dedicated icon


Web Application

The web application can be accessed via the url


All you have to do is to install the FSM. The module contains 3 components

  • The AI service connector and configuration

  • The ContentCreator component

  • A Java Library to use the AI service in your own scripts and workflows.

The Java documentation can be found here: here


You can use your very own client id in our service configuration component. If you wand to use our Java Library, you will also receive what we call a direct access key to create short lived authorisation tokens with our API in your FirstSpirit scripts and workflows.

Installing the ContentCreator component

You need to add the ContentCreator component to your ContentCreator webserver. Once it is added, you only need to click the install button and deploy it automatically (standard FirstSpirit method).

When accessing ContentCreator, you will find a new icon at the top which allows you to open our creativity web application.


Using the Java API

Our Java API is simple and flexible. You can access the API easily via factory methods.

The Java documentation can be found here: here

Development Options

To avoid using the real AI API, you can create a test service connection which provides sample results just as if you had called the API.

import com.simplidh.api.IGhostwritRIO;
import com.simplidh.api.GhostwritRApi;

IGhostwritRIO api = GhostwritRApi.test(context, "en");

Once everything is finished, you only need to replace our API factory method from .test(…​) to .get(…​).

A sample test snipped looks like this:

import com.simplidh.api.IGhostwritRIO;
import com.simplidh.api.GhostwritRApi;

IGhostwritRIO api = GhostwritRApi.get(context, "en");

final IGeneratedText pGeneratedText = api.createText("What is Smart Living?");
final List<String> vsParagraphs = pGeneratedText.getText();

Production code example

API results can then be integrated into your FirstSpirit pages/sections as needed. An entire script might look similar to this one (please be aware that it lacks all kinds of validation checks so use with caution).

import de.espirit.firstspirit.ui.operations.ShowFormDialogOperation;
import de.espirit.firstspirit.ui.operations.RequestOperation;

	lang = context.getProject().getMasterLanguage();

	pageElem = context.getElement();
	page = null;

	if (pageElem instanceof
		tmp = ( pageElem;
		page = tmp.getPage();
		page = ( pageElem;

	body = page.getBodyByName("content");

	pTemplateStore = (TemplateStoreRoot)context.getProject().getUserService().getStore(, false);
	tpl = pTemplateStore.getSectionTemplates().getTemplate("text_picture_table");

	pForm = context.requireSpecialist(FormsAgent.TYPE).getForm(context.getScript().getGomSource());

	operation = context.requireSpecialist(OperationAgent.TYPE).getOperation(ShowFormDialogOperation.TYPE);
	operation.setTitle("Create Section");

	result = operation.perform(pForm, context.getProject().getLanguages());

	text = result.get(lang, "sc_keyword").get().toString();
	if (text == "")
		throw new IllegalStateException("Error");

	api = com.simplidh.api.GhostwritRApi.get(context, "en");
	list = api.createText(text).getText();;

	txt = "";
	for (_val : list)
		txt += "<p>" + _val + "</p>";

	body.setLock(true, false);

	pSection = body.createSection("ghostwritr", tpl);
	pSection.setLock(true, false);

	pFormData = pSection.getFormData();

	pFormData.get(lang, "st_headline").set(text);
	dom = pFormData.get(lang, "st_text").get();


	pFormData.get(lang, "st_text").set(dom);

	pSection.setLock(false, false);
	context.logError(err.getMessage(), err);

	request = context.requestSpecialist(OperationAgent.TYPE).getOperation(RequestOperation.TYPE);
	request.perform("Something did not quite work..");