diff --git a/config/schema/g2.schema.yml b/config/schema/g2.schema.yml
index 80efb04..ead7ee6 100644
--- a/config/schema/g2.schema.yml
+++ b/config/schema/g2.schema.yml
@@ -233,3 +233,19 @@ g2.settings:
               entry pages, and G2 own pages, typically for SEO purposes.
               The value can include @title which, if not empty, will be replaced
               by the standard Drupal site name.</p>
+
+
+filter_settings.g2_automatic:
+  type: filter
+  label: 'G2 Automatic'
+  mapping:
+    stop_list:
+      type: sequence
+      label: 'Igored entries'
+      sequence:
+        type: string
+
+filter_settings.g2_definition:
+  type: filter
+  label: 'G2 Definition'
+  mapping: {}
diff --git a/src/Plugin/Filter/Automatic.php b/src/Plugin/Filter/Automatic.php
new file mode 100644
index 0000000..03e24bc
--- /dev/null
+++ b/src/Plugin/Filter/Automatic.php
@@ -0,0 +1,87 @@
+<?php
+
+namespace Drupal\g2\Plugin\Filter;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\filter\FilterProcessResult;
+use Drupal\filter\Plugin\FilterBase;
+
+/**
+ * Provides a 'Automatic' filter.
+ *
+ * @Filter(
+ *   id = "g2:automatic",
+ *   title = @Translation("Automatically wrap G2 entries found in content with <code>&lt;dfn/&gt;</code> elements"),
+ *   type = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE,
+ *   settings = {
+ *     "stop_list" = "",
+ *   },
+ *   description=@Translation("Automatically wrap recognized G2 entries in <code>&lt;dfn/&gt;</code> elements, except for those in your configured stop list. This filter is only useful along with the <code>&lt;dfn/&gt;</code> conversion filter, and <em>must</em> be applied before it."),
+ *   weight = -1,
+ * )
+ */
+class Automatic extends FilterBase {
+
+  /**
+   * The name of the single settings for this filter.
+   */
+  const STOP = 'stop_list';
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsForm(array $form, FormStateInterface $formState) {
+    $form[static::STOP] = [
+      '#type' => 'textarea',
+      '#title' => $this->t('Stop list'),
+      '#default_value' => $this->settings[static::STOP] ?? '',
+      '#description' => $this->t('Enter G2 entries that must never be automatically wrapped in a &lt;dfn/&gt; element, one per line. You will still be able to define them by adding the &lt;dfn/&gt; element manually.'),
+      '#element_validate' => [[$this, 'validateStopList']],
+    ];
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function process($text, $langcode) {
+    // @DCG Process text here.
+    $example = $this->settings['example'];
+    $text = str_replace($example, "<b>$example</b>", $text);
+    return new FilterProcessResult($text);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function tips($long = FALSE) {
+    return $this->t('Some filter tips here.');
+  }
+
+  /**
+   * Form element validation handler.
+   *
+   * Deduplicates and sorts entries.
+   *
+   * @param array $element
+   *   The stop_list form element.
+   * @param \Drupal\Core\Form\FormStateInterface $formState
+   *   The form state.
+   */
+  public function validateStopList(array &$element, FormStateInterface $formState) {
+    // Web submissions add CR, just ignore them.
+    $nocr = str_replace("\r", "", $element['#value']);
+    $array = explode("\n", $nocr);
+    $filtered = array_map("trim", $array);
+    $nonEmpty = array_filter($filtered);
+    sort($nonEmpty);
+    $values = array_unique($nonEmpty);
+    $value = implode("\n", $values);
+    $formState->setValueForElement($element, $value);
+    if ($value !== $nocr) {
+      $this->messenger()
+        ->addStatus("Your G2 stop list has been filtered and reordered.");
+    }
+  }
+
+}
diff --git a/src/Plugin/Filter/Definition.php b/src/Plugin/Filter/Definition.php
index 64f560b..c105a82 100644
--- a/src/Plugin/Filter/Definition.php
+++ b/src/Plugin/Filter/Definition.php
@@ -4,7 +4,6 @@ namespace Drupal\g2\Plugin\Filter;
 
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
-use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Link;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Render\RendererInterface;
@@ -20,13 +19,12 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *
  * @Filter(
  *   id = "g2:dfn",
- *   title = @Translation("Link to G2 definitions using &lt;dfn&gt;
- *   elements."),
+ *   title = @Translation("Convert <code>&lt;dfn/&gt</code> elements into links to definitions in the G2 glossary."),
  *   type = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE,
  *   settings = {},
- *   description=@Translation("Wrap &lt;dfn&gt; elements around the words for
- *   which you want a link to the matching G2 entries, like this:
- *   &lt;dfn&gt;UTF-8&lt;/dfn&gt;"), weight = 0,
+ *   description=@Translation("Wrap <code>&lt;dfn&gt;</code> elements around the words for which you want a link to the matching G2 entries, like this: <code>&lt;dfn&gt;UTF-8&lt;/dfn&gt;</code>. This filter <em>must</em> appear after the automatic <code>&lt;dfn/&gt;</code> wrapping filter."),
+ *   description=@Translation("Converts <code>&lt;dfn&gt;some entry&lt;/dfn&gt;</code> elements into links to the matching G2 entry, or a homonyms disambiguation page if multiple entries match the given string. This filter <em>must</em> be applied after the automatic <code>&lt;dfn/&gt;</code> wrapping filter."),
+ *   weight = 0,
  * )
  */
 class Definition extends FilterBase implements ContainerFactoryPluginInterface {
@@ -223,18 +221,6 @@ class Definition extends FilterBase implements ContainerFactoryPluginInterface {
     return $result;
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  public function settingsForm(array $form, FormStateInterface $form_state) {
-    // No settings at this point. To add some, insert elements in the existing
-    // $form, including a #element_validate to validate them.
-    $form['description'] = [
-      '#markup' => '<p>Wrap <code>&lt;dfn&gt;</code> elements around the words for which you want a link to the matching G2 entries, like this: <code>&lt;dfn&gt;UTF-8&lt;/dfn&gt;</code></p>',
-    ];
-    return $form;
-  }
-
   /**
    * {@inheritDoc}
    */
@@ -245,16 +231,4 @@ class Definition extends FilterBase implements ContainerFactoryPluginInterface {
     return $ret;
   }
 
-  /**
-   * Form element validation handler.
-   *
-   * @param array $element
-   *   The G2 settings form element.
-   * @param \Drupal\Core\Form\FormStateInterface $formState
-   *   The form state.
-   */
-  public static function validateOptions(array &$element, FormStateInterface $formState) {
-    // Validate data from $formState->getValue(['filters', 'g2', 'settings'])).
-  }
-
 }
