Account created on 16 April 2007, over 18 years ago
#

Merge Requests

More

Recent comments

🇩🇪Germany breidert

For reference: Drupal CMS SEO Tools

If we want to pick up the idea with the focus keyword, it would fit nicely as a new field called field_seo_focus_keyword and use it when generating content for field_seo_title and field_seo_description.

🇩🇪Germany breidert

We are currently doing an AI SEO project with one of our clients. On their side there is an experienced SEO specialist. From his side the main SEO works arises around the "focus keyword".

Currently we are thinking around the lines of adding a field to all content types called "Focus keyword". This will be used in various use cases such as generating title texts, preview texts (meta tags, cards, introductions, etc.), and content. It will also be used for internal linking to make sure the link texts use the focus keyword of the link target pages.

We are currently exploring what more we can do to make an SEO specialists day to day job working with content creators more efficient.

I think conceptually the issue could be split in SEO analysis (figure out what is going on) and SEO content creation (create or optimize content that ranks).

Once we have first versions, I will share the results with you.

🇩🇪Germany breidert

Since guardrails can appear in many places such as automators, agents, tools, content suggestions, CKEditor, etc. we need a list of configuration UIs where the functionality can be added. Best would be with screenshots as we might need UX work to create a pleasant configuration experience.

🇩🇪Germany breidert

We need something like this for Drupal AI as well.

🇩🇪Germany breidert

@kristen - should be not add the above as issue template?

I mean here: https://www.drupal.org/node/add/project-issue/ai

Instead of the existing default template:

<h3 id="summary-problem-motivation">Problem/Motivation</h3>


<h4 id="summary-steps-reproduce">Steps to reproduce (required for bugs, but not feature requests)</h4>
Please provide information like AI modules enabled, which AI provider, browser, etc.


<h3 id="summary-proposed-resolution">Proposed resolution</h3>


<h3 id="summary-remaining-tasks">Remaining tasks</h3>


<h3>Optional: Other details as applicable (e.g., User interface changes, API changes, Data model changes)</h3>
🇩🇪Germany breidert

I did an in depth review of the proposed documentation change.

I really like the quality and the clarify of the new "Issue guidelines". However, I find them a bit long and fear contributors might not read them. But after spending some time thinking about it, I could not suggest improvements or come up with a better way to document issues.

I only suggested some small text changes for which I felt they made the text more neutral. I left the suggestions as comments in the MR.

However, when my suggestions are accepted or declined the issue can be set to RTBC from my point of view.

🇩🇪Germany breidert

@lussoluca after speeking with @marcus_johansson we prefer the addon version. Please close the .ddev MR.

🇩🇪Germany breidert

I tested commands the MR, and it works after fixing one small error (I left a comment in the MR).

mkdir ai-dev && cd ai-dev
ddev config --project-type=drupal11 --docroot=web --php-version=8.3 --corepack-enable
ddev add-on get lussoluca/ddev-drupal-suite
ddev drupal-init 11.2.2
ddev drupal-get-module ai 1.2.x
ddev drupal-get-recipe ai_dev_recipe 1.0.x

The recipe applies nicely. I like how you are asked during installation to enter your keys for Anthropic and OpenAI.

🇩🇪Germany breidert

When navigating to https://new.drupal.org/ai/survey I see the survey is not using the full available width.

The survey is responsive, if possible change to use the full width.

🇩🇪Germany breidert

I like it, but I might be biased :-)

🇩🇪Germany breidert

@kristen I would suggest the following:

Bug

Title

Clear, concise summary of the problem (e.g., "Crash on login when username is blank")

Description

- What’s happening vs. what’s expected?
- Include any error messages, stack traces, or logs.
- If it’s a regression, mention when it last worked.
- Describe expected behavior

Steps to Reproduce in Drupal AI DDEV environment

1. Go to ‘...’
2. Click on ‘...’
3. See error

Environment

- Drupal version:
- Drupal AI version:
- Browser (if relevant):
- Any relevant config or flags

Todos

- Fix the bug
- Provide testing instructions in Drupal AI DDEV environment

Requirements / Acceptance Criteria

- When I follow the testing instructions I can verify the feature works

URLs (if applicable)

- Link to the affected page (can be relative)

Screenshots (if applicable)

- Provide a screenshot showing the issue

Feature

Title

Short summary of the feature (e.g., "Add dark mode toggle in settings")

Description

- What is the feature?
- What problem does it solve or what value does it add?

User Story / Use Case

As a [type of user], I want to [goal] so that [benefit].

Todos

- Create concept
- Implement
- Provide testing instructions in Drupal AI DDEV environment
- Provide documentation

Requirements / Acceptance Criteria

- When I read the documentation I understand how the feature is supposed to work
- When I follow the testing instructions I can verify the feature works

Design / UI Notes

- Link to mockups, wireframes, or design files if available

Dependencies or Related Work

- Mention any backend work, third-party libraries, or affected components

URLs (if applicable)

- Link to spec, design, or existing feature area

Screenshots (if applicable)

- Add mockups, visual references, or examples

Task

Task Requirements

Title

Describe the task clearly (e.g., "Provide documentation for new contributors")

Description

- What needs to be done and why
- Not necessarily user-facing

Checklist / Subtasks

- Break down into actionable steps if helpful

Context / Background

- Link to related tickets, technical docs, Slack threads, etc.

Todos

- Describe what needs to be done

Requirements / Acceptance Criteria

- Describe what does “finished” looks like

🇩🇪Germany breidert

Effort Estimation based on current information

Re-Build Logging (Buckets 1-3 above): 10-15 days

The majority of the work goes into the re-creation of the AI logging sub-module, and updating the Extended Logger module.

Creating sensible management views (like number of tokens spent, or number of AI calls) does not take so much time. Most of the work for this would be to define what views make sense.

Creating a log export function does not take much time.

Create OTEL integration: 5-10 days

The creation of a new sub-module called AI Oberservability is not very difficult. The majority of the work flows into mapping AI event data to OTEL's traces, spans, attrributes, and events in a meaningful way. The module Opentelemetry also needs to be upgraded.

Delivery

It is planned that EPAM delivers above functionality with their own team. Communication with the core maintainers Marcus and Artem will be via a dedicated channel in Slack (#ai-obersability).

First the new logging will be developed, then the OTEL integration.

🇩🇪Germany breidert

> The About you should be the first step

Not sure, usually you do it the other way around. Personal stuff at the end. I think if people filled out the complete survey, they would like to get the results. Therefore, they would also fill out the about you section on the last page.

🇩🇪Germany breidert

@pdjohnson - please add the survey to DO/ai in a sensible place with supporting text.

On the page this HTML code has to be placed

<iframe src="//www.1xinternet.com/en/webform/custom_drupal_ai_features/share/iframe-resizer/4.2.10" title="Drupal AI Features Survey | 1xINTERNET" class="webform-share-iframe" frameborder="0" allow="geolocation; microphone; camera" allowtransparency="true" allowfullscreen="true" style="width:1px;min-width:100%"></iframe>
<script src="//cdn.jsdelivr.net/gh/davidjbradshaw/iframe-resizer@4.2.10/js/iframeResizer.min.js"></script>
<script>iFrameResize({}, '.webform-share-iframe');</script>
🇩🇪Germany breidert

General questions about AI usage in organizations were added with the option to specify.

  • Are you using AI in your daily work?
  • Is your organization using AI already?
🇩🇪Germany breidert

Additional information from weekly meeting:

The UI/UX has to make it simple to create and manage guardrails. However, since there are many things to configure, this could become complex.

Guardrails can be general and apply to general functionality such as AI Translation or Content Suggestions, where you might just need to block things like PII data or flag things like <script> tags.

Guardrails can also be very specific and be tied to a single agent or a tool.

A specific example of a guardrail for a single agent might be something like:
“Check that the text in the image only includes cooking instructions—nothing else.”
You’d only want that guardrail running for the agent that generates food recipes—not every AI process.

A UI/UX should work for all use cases.

🇩🇪Germany breidert

AI bots are becoming a real issue. Many of our clients face massive bot hits and we have to spend a lot of energy on traffic shaping on the CDN/WAF level.

Note that CDN providers such as Cloudflare make it really easy (or even default settings) to block AI scrapers:

I think the traffic part is not what we can influence, that happens before traffic hits Drupal websites.

But what we can do is provide functionality to make sure the AI(s) we use (in our agentic systems) can be restricted to deliver ethical results.

IMO the way to go is to provide string guardrail functionality with sensible defaults. There is already an issue for guardrails Create the concept of Guardrail agents Active , and we are currently looking for contributors that are willing to take this on.

🇩🇪Germany breidert

@matthews - in the end we need providers listed for the different model types on /admin/config/ai/settings (Image Classification, Image to Video, Speech to Text, etc.).

🇩🇪Germany breidert

@darren oh

On Drupal.org you can add general projects. Here is the documentation for general projects .

These can contain arbitrary code as for example DDEV installation scripts.

They are also used for recipes (for example this one which we contributed earlier this year).

🇩🇪Germany breidert
  • Updated Brand guide agent
  • Remove Idea generator
  • Remvoed Control Center Agent
🇩🇪Germany breidert

Introduction text was update from

Thank you for participating in this survey! The Drupal AI initiative is working hard to integrate powerful AI capabilities into Drupal including advancements in agentic capabilities and Model Context Protocol (MCP) support.

In parallel with these core development efforts, we are also building production-ready features that can be used immediately on Drupal websites. To ensure we prioritize the development of the most valuable "ready-to-use" functionalities, we need your insights.

This survey presents various AI functionalities we intend to build that are focused on immediate application. We ask you to assess the value each functionality would bring to your work. Your feedback is important in helping us prioritize our development roadmap and deliver features that truly make a difference in your day-to-day operations.

The survey should take approximately 10-15 minutes to complete. Your responses will be kept confidential and used solely for product development purposes.

to

Thank you for taking the time to complete this survey.

The Drupal AI Initiative is working to deliver a range of new ready-to-use AI capabilities for Drupal. These will help you gain immediate value from AI, with minimal technical barriers to adoption.

We ask you to assess the value each functionality would bring to your work. Your feedback is important in helping us prioritize our development roadmap and deliver features that truly make a difference in your day-to-day operations.

The survey should take around 10-15 minutes to complete. All responses are confidential and will be used solely to guide product development.
🇩🇪Germany breidert

Other (please specify) was fixed for industry and role.

🇩🇪Germany breidert

More topics:

  • We have a concept for AI Logging and AI telemetry, I would like to present the meta issue for this.
  • We will conduct a contribution survey for AI features that organizations would like to have. This should be mentioned.
  • I am currently working on a concept of UX. Not the concept itself, but the issue, what should be covered in the concept. I would like to mention this, too.
🇩🇪Germany breidert

Additional information: At 1xINTERNET we use an bash script to setup a local development environment. For reference I added the docker compose file for Milvus vector database and the relevant parts of the installation script.

# Add RAG support.
if [ "${rag}" == "true" ]; then
  echo "Enable Milvus vector database"
  mv .ddev/example.docker-compose.milvus.yaml .ddev/docker-compose.milvus.yaml
  ddev restart
fi
🇩🇪Germany breidert

I created a survey, that can be tested here: https://www.1xinternet.com/en/drupal-ai-initiative-features-roadmap?auHa...

It can also be embedded on DO (here is a test):

The configuration of the survey is attached as YML.

🇩🇪Germany breidert

IMO the jobs run like this:

Issue fork repository:

  1. js_build - Rebuilds JS but does not commit changes and pushes, because there is no access token.
  2. phpunit - Run test with rebuilt JS

The build JS is saved as an artifact and used for testing.

Main repository (after merging, or with direct commits):

  1. js_build - Rebuilds JS, commits and pushes changes (if any) with an access token. The commit is run with option -o ci.skip to prevent the same pipeline from being triggered.
  2. phpunit - Run test with rebuilt JS

I think this is correct. Tests are always run with the latest JS code. The latest JS code becomes part of the repository and will be part of releases.

🇩🇪Germany breidert

Idea:

  1. In the Gitlab pipeline we build the js artifacts for ai_ckeditor and push them to the repository
  2. Gitlab is configured not to run the pipleline again because of the commit message [ci skip]

Todo:

The build runner needs access permissions to push to the Gitlab repository.

Future:

The process should be generic for all sub-modules of ai.

Something like this:

.gitlab-ci.yml

js_build:
  stage: build
  script:
    -|
      modules=$(find modules -maxdepth 1 -mindepth 1 -type d)
      for module in ${modules[@]}; do
         pushd ${module}
         if [ -f ./build.sh ]; then ./build.sh; rm -rf node_modules; fi
         popd
      done
🇩🇪Germany breidert

breidert made their first commit to this issue’s fork.

🇩🇪Germany breidert

I tested this locally, and the code works fine.

🇩🇪Germany breidert

The following issues were mentioned as blockers in the last AI meeting:

🇩🇪Germany breidert

This was a false positive, the functionality works correctly.

🇩🇪Germany breidert

Good point Dale!

If it is enabled by default via update_hook, people see the new functionality and can turn it off. I guess it is the maintainer to decide :-)

🇩🇪Germany breidert

First version was created and all plugins were updated.

It looks like this:

However, this might be a breaking change, because all existing plugins would have to be updated.

🇩🇪Germany breidert

The code in the MR works nicely. You get the same btton in a baloon menu.

The result looks like this:

🇩🇪Germany breidert

Screenshots of new functionality provided in MRs:

🇩🇪Germany breidert

We are working on this at 1xINTERNET, and could contribute our work.

🇩🇪Germany breidert

I tested this locally and it works. Also in combination with https://www.drupal.org/project/ai/issues/3509363#comment-16018217 Allow other modules to provide styles for Deep Chat Active

🇩🇪Germany breidert

I tested it locally and the code works.

🇩🇪Germany breidert

This was fixed and can be reviewed on /documentation/image-credits

🇩🇪Germany breidert

Here is a screen recording of the current status: https://www.drupal.org/files/issues/2025-01-14/screen-capture-drupal-cms...

When testing you might want to delete the content that comes with individual recipes fiest:

#!/bin/bash

# Define the recipes to delete content from
recipes=("drupal_cms_blog" "drupal_cms_case_study" "drupal_cms_events" "drupal_cms_news" "drupal_cms_person" "drupal_cms_project")

# Find all directories matching the pattern recipes/*/content
for folder in recipes/*/content; do
  for recipe in "${recipes[@]}"; do
    if [[ "$folder" == *"$recipe"* ]]; then
      echo "Deleting folder: $folder"
      rm -rf "$folder"
      break
    fi
  done
🇩🇪Germany breidert

I think we should close this issue and start a new one.

We have already started to work on demo content, it is getting quite nice: https://www.drupal.org/project/drupal_cms_demo_content

From my perspective there are several aspects to the topic of content strategy.

  1. Information Architecture / Data model - how we create content recipes
  2. Demo content - presenting demo content
  3. On-boarding new users - through demo content and explanations

I suggest closing this issue and start new ones.

🇩🇪Germany breidert

For blog and news items it is still showing.

For testing you can enable demo content, then you have content for all content types. When searching for 'drupalcon' you see news and blog items:

ddev composer require drupal/drupal_cms_demo_content
ddev drush recipe ../recipes/drupal_cms_demo_content
ddev drush recipe ../recipes/drupal_cms_search
ddev drush sapi-r
ddev drush sapi-i
ddev launch /search?text=drupalcon

🇩🇪Germany breidert

I reviewed and it looks good.

For reviewing I went to https://www.1xinternet.de/en/drupal-cms-start-demo and started a full demo with demo content for a better search experience.

Initially the search is only in the sidebar, because the main menu is crowded. For testing the search with the desktop menu I disabled some menu entries.

All search UIs look nice.

🇩🇪Germany breidert

Updated testing instructions

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
🇩🇪Germany breidert

Updated testing instructions

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
🇩🇪Germany breidert

Updated testing instructions

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
🇩🇪Germany breidert

Updated testing instructions

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
🇩🇪Germany breidert

Updated testing instructions

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
🇩🇪Germany breidert

Documentation for user management was provided.

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
🇩🇪Germany breidert

Documentation foverview was provided, but needs more work.

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
🇩🇪Germany breidert

Documentation for content management was provided, but needs more work.

Testing locally:

  1. Install Drupal CMS locally following the instructions in the README.md of the project
  2. Require demo content recipe: ddev composer require drupal/drupal_cms_demo_content
  3. Re-install with demo content: ddev drush si ../recipes/drupal_cms_demo_content

Tesing using Drupal CMS online demo:

  1. Go to https://www.1xinternet.de/en/drupal-cms-start-demo
  2. Request demo with demo content (default option)
Production build 0.71.5 2024