SendBySound.com
Sharing a short piece of text between devices has never been as smooth as it should be. Most of us default to emailing ourselves, trying to AirDrop across incompatible ecosystems, or reading a password aloud while hoping no one mishears the fifth character.
Tools like QR codes already solve part of this problem. They work well, and they are widely supported. But sometimes you want something even simpler or just a little more fun.
That is where SendBySound fits in.
What It Does
SendBySound is a free web app at SendBySound.com that transfers text through sound. Open the site on two devices, type your message, and press send. One device plays a short sequence of tones, the other listens and decodes the text. Once the page loads, it works entirely offline.
There is no pairing, no accounts, and no installation.
How It Compares to QR Codes
QR codes are great in most situations. They are fast, reliable, and familiar. SendBySound is simply a different way to approach the same problem, and it can be useful in places where a sound-based interaction feels more natural.
A few examples:
- When the receiving device does not have a camera, or the camera is already in use.
- When you want to share across a short distance without positioning devices relative to each other.
- When generating or displaying a QR code is not as convenient.
- When you want a hands-free option.
- Or simply because sending little chirps between devices is fun.
SendBySound is not a replacement for QR codes. It is another tool you can reach for depending on the situation.
Everyday Uses
- Sharing a WiFi password without typing it out.
- Sending a link from a laptop to a phone without emailing yourself.
- Passing a verification code when your authenticator is on another device.
- Sharing small bits of information in classrooms or group settings.
If the devices can make and hear sound, you can use them.
Privacy and Simplicity
All processing happens locally in the browser. Nothing is sent to a server. The short-range nature of sound keeps transmission limited to the nearby environment.
Try It Out
If you're looking for a quick, offline-friendly, and slightly playful way to transfer text between devices, visit SendBySound.com and give it a try.
If you’d like, I can also format this for Markdown, generate an excerpt for the homepage, or create an OpenGraph description for link previews.
Audit Export Plugin
Audit Export is provided via a WordPress plugin that gives administrators and developers a clear, structured view into how their site is put together. It inspects plugins, themes, content types, taxonomies, menus, widgets, users, roles, and general site configuration, then turns all of that into exportable, script-friendly reports. Think of it as a regular health report for your WordPress installation, only with fewer lecture slides and more CSVs.
At the time of writing, the plugin is pending review for inclusion in the official WordPress.org plugin directory. Once it is approved, you will be able to install it like any other plugin. Until then, you can follow it on the Audit Export plugin page.
Who is Audit Export for?
Agencies managing lots of client sites
If you maintain a portfolio of WordPress installations, you need consistent answers to simple questions:
- What plugins are installed and which need updates?
- How many posts, pages, or products are we dealing with?
- How are user roles configured on each site?
Audit Export gives you standardized reports you can automate across environments and pipe into whatever dashboard or inventory system you are already using.
DevOps and engineering teams
You live in terminals, not in wp-admin. Audit Export integrates with WP-CLI, so you can run audits, export data, manage cron, and test remote connections using commands like wp audit-export run --all or wp audit-export export plugins --format=json. (WP-CLI)
Site administrators and content managers
If you are responsible for “keeping the site clean,” the plugin helps answer:
- Which post types are actually in use, and how full are they?
- Do we have menus that are no longer assigned anywhere?
- Which widget areas are full of mystery legacy widgets?
Security and compliance teams
The Users and Roles audit and the Plugins audit give you a structured snapshot of who can do what and which plugins may need attention, which is exactly the sort of thing security and compliance checklists like to nag you about.
Freelancers and consultants
Starting a new engagement with a “mature” WordPress site can be… exciting. Running Audit Export once gives you a quick, trustworthy inventory of the install so you can talk about scope and risk from a position of knowledge instead of vibes.
What the plugin actually audits
Out of the box, Audit Export ships with eight audit types grouped into general, system, content, and user categories:
- Site Report: PHP version, WordPress version, URL, active theme, multisite status, debug mode, timezone, and SSL usage.
- Plugins: Installed plugins with version, author, status (active, inactive, network), whether they are network-activated, and whether updates are available.
- Themes: Installed themes with status, parent/child relationships, and update availability.
- Content Types: All meaningful post types with published/draft/private/trash counts, plus flags for public and hierarchical. System-only types like
revisionandoembed_cacheare excluded to keep the signal high. - Taxonomies: Taxonomy labels, term counts, whether they are public/hierarchical, and which post types they attach to.
- Menus: Menu names, IDs, item counts, assigned locations, and last modified dates.
- Widgets: Widget areas (sidebars), their IDs, and which widgets are currently active.
- Users and Roles: Role names, display labels, user counts, capability counts, and a “key capabilities” summary for each role.
All of these audits share a consistent internal structure (headers + data rows) so they are easy to export and automate against.
How do you use it day to day
Via the WordPress admin
After activation, you get an Audit Export section in the admin menu. From there, you can:
- Run individual audits from the UI
- View stored report data from the database
- Configure file export (where CSVs are stored)
- Turn cron processing on or off and tune its frequency
- Configure remote posting (URL, auth, timeouts, SSL verification, debug mode)
Exports can be saved to the filesystem (uploads directory or wp-content) under a configurable subdirectory like audit-export/, making it easy to pick them up with other tools.
Via WP-CLI
If you prefer the command line, the plugin registers a full command namespace: wp audit-export. You get subcommands for:
wp audit-export list– list all audits and when they last ranwp audit-export run– run one, several, or all audits, with output as table, CSV, JSON, or YAMLwp audit-export export– export a specific audit to a file or stdoutwp audit-export cron– check status, enable/disable, run cron jobs manuallywp audit-export test-connection– test the remote endpointwp audit-export force-post– push a specific audit to the remote APIwp audit-export info– show plugin version and configuration at a glance
Because it is all WP-CLI, you can slot these commands directly into deployment scripts, CI pipelines, or scheduled tasks on your host. If you are new to WP-CLI, the WP-CLI docs and command list are helpful references. (WP-CLI)
Scheduled audits with WP-Cron
For ongoing visibility, Audit Export hooks into WP-Cron so audits can run automatically on a schedule. You can: (WordPress Developer Resources)
- Enable cron processing
- Run audits on every cron invocation (for high-traffic, high-change sites)
- Set a custom interval in minutes (for example, every 60, 1440, or 10,080 minutes)
- Set a maximum processing time per audit to avoid long-running jobs
This lets you keep a fresh set of reports without anyone having to remember to click “Run audit.”
Optional remote posting
If you operate a central dashboard or monitoring system, the plugin can POST audit results to a remote endpoint, using no auth, Basic auth, or a Bearer token. It sends structured JSON with site metadata (name, host, versions) and the report data (headers, rows, counts), so your external system can store or visualize it.
Hooks let you customize the target URL, the payload, the site info fields, or even the request arguments (headers, timeouts) before the request goes out.
Example use cases
Here are some concrete patterns where Audit Export fits nicely into real workflows.
1. Site documentation and handoffs
When finishing a build or inheriting an existing project, you can generate a complete structural snapshot for your records and for the client:
wp audit-export run --allwp audit-export export site_report --file=docs/site-report.csvwp audit-export export plugins --file=docs/plugins.csvwp audit-export export content_types --file=docs/content-types.csvwp audit-export export users_roles --file=docs/users-roles.csv
Drop those into your project docs or attach to your ticket system so “what does this site look like” is always answered with data, not guesswork.
2. Migration planning
Before migrating to a new host or refactoring the architecture, you can:
- Export plugins and themes as JSON for programmatic analysis
- Inspect content volume by post type to plan migrations and backfills
- Identify custom post types and taxonomies that need special handling
- Spot inactive or duplicate plugins that should not make the trip
All of that comes from the existing audits; no custom scripts are required.
3. Change tracking during development
As part of deployment or release pipelines, you can generate snapshots into timestamped directories:
SNAPSHOT_DIR="snapshots/$(date +%Y%m%d-%H%M%S)"mkdir -p "$SNAPSHOT_DIR"
wp audit-export run --allfor audit in site_report plugins themes content_types taxonomies menus widgets users_roles; do wp audit-export export "$audit" --file="$SNAPSHOT_DIR/$audit.csv"done
Now you have a simple, file-based audit trail of structural changes over time, and you can diff snapshots when debugging “it worked last week” incidents.
4. Client reporting and account management
Combine cron scheduling with exports or remote posting to generate weekly or monthly reports for clients:
- A system section summarizing PHP and WordPress versions, debug status, SSL, and timezone (Site Report)
- A plugin inventory with update flags (Plugins)
- A content overview by post type (Content Types)
- A roles overview that highlights who has elevated capabilities (Users and Roles)
You can wrap this in a script that outputs HTML or Markdown, then email or post it into a reporting dashboard.
5. Security and compliance checks
For teams that need regular reviews:
- Use the Plugins audit to identify extensions with updates available.
- Use Users and Roles to monitor admin counts and high-privilege roles.
- Use Site Report to confirm debug mode is off in production and SSL is active.
You can even hook into the post-processing actions to send alerts when certain conditions are met, such as “any plugin has Update Available = Yes” or “administrator count > 2”.
6. Multi-site or multi-environment inventory
Because Audit Export can post to a remote API, you can install it on dev, staging, and production (or across many client sites), then centralize the reports.
Your central service receives JSON payloads that include site information, audit name, headers, and data rows, which you can then aggregate into one view.
Similar tools in the WordPress ecosystem
Audit Export focuses on structured configuration and usage reporting, especially around plugins, themes, content types, and roles. It complements, rather than replaces, some existing tools you might already use:
- WP Activity Log (formerly WP Security Audit Log)
Provides a detailed activity log of user actions and site changes, with real-time monitoring and reporting. It is excellent for “who did what and when” style security and accountability. (WordPress.org) - Stream
Tracks user and system actions in a real-time activity stream, with filtering by user, role, context, and IP, plus integrations for alerts and webhooks. Helpful for debugging and real-time oversight. (WordPress.org) - Query Monitor
A developer tools panel that focuses on performance and debugging: database queries, hooks, HTTP calls, and more. It gives you deep insight into how your code behaves on a request-by-request basis. (WordPress.org) - Core Site Health
Built into WordPress itself, Site Health runs a series of checks on configuration and performance and reports issues directly in wp-admin. Audit Export is complementary here: Site Health focuses on diagnostics, while Audit Export focuses on structured reporting and external consumption. (WordPress.org)
Put simply: activity log plugins tell you what happened, Query Monitor tells you how it happened, Site Health tells you how WordPress feels about it, and Audit Export gives you the structured configuration snapshot you can ship off to spreadsheets, dashboards, and other systems.
Recap
Audit Export, provided as a WordPress plugin, gives you repeatable, scriptable insight into how a site is structured and configured:
- Eight core audits covering plugins, themes, content types, taxonomies, menus, widgets, users, roles, and general system info
- Tight WP-CLI integration for automation and CI
- Scheduled runs via WP-Cron
- CSV and JSON exports, with optional filesystem storage
- Remote posting for centralized dashboards and multi-site reporting
- An extensible architecture for adding custom audits and customizing the payloads
If you manage more than one WordPress site, collaborate in a team, or just like your configuration data neat and exportable, this plugin is designed to slide into your workflow without much fuss.
Saplings AI MCP
The Saplings AI MCP Recipe turns your Drupal site into a fully compliant Model Context Protocol (MCP) server by installing and configuring AI Core, AI Agents, the MCP module, and other required dependencies. Once applied, your Drupal installation can talk directly to MCP-aware clients, execute AI functions, and invoke agents, extending your site with a wide range of AI-powered workflows. Drupal’s robust content model and modular architecture make it an ideal MCP server, especially when its content is exposed as resources and combined with AI tools for dynamic content generation and management.
Features
- Installs AI Core, AI Agents, the MCP module, and other necessary modules.
- Configures a general-purpose MCP server to support seamless interaction with connected MCP clients.
- Enables execution of AI functions and invocation of agents from your Drupal site.
- Allows customization so Drupal content can be exposed as MCP resources and used as AI tools for workflow automation.
- Keeps configuration open-ended so you can further tune the MCP module, such as pointing it at different LLM providers or adding custom tools and resources as your use cases grow.
Installation Instructions
1. Preparation
Ensure your Drupal installation is up to date. It is recommended to take a full backup of your site before applying the recipe.
2. Dependencies
Verify that Composer is installed on your server, since several dependencies are managed through it.
3. Install the recipe
Use Composer to install the Saplings AI MCP recipe:
composer require drupal/ai_saplings_mcp
4. Enable the modules
After installation, enable the recipe and its modules using Drush (or through the Drupal admin UI):
drush recipe ../recipes/ai_saplings_mcp
5. Test the configuration
Confirm that your setup is working by connecting an MCP client to your Drupal site and testing basic interactions such as listing resources or invoking a simple tool.
Further Configuration
The recipe provides a sensible default MCP server configuration, but you are encouraged to refine it to match your environment:
- Adjust the MCP server settings provided by the MCP module, including authentication and endpoint options.
- Swap in different LLM backends or AI providers through Drupal’s AI configuration if you prefer alternate models.
- Define additional tools and resources that expose Drupal content, search, or custom workflows to your MCP clients.
Once configured, your Drupal site becomes a powerful, AI-aware MCP server that can plug cleanly into modern LLM tooling.
Media Dupe Detect
Media Dupe Detect is a Drupal module that enhances the core Media and Media Library experience by automatically identifying duplicate file uploads.
When a user uploads a file through a Media Library widget, the module compares the file hash against existing files. If a match is found, the user is prompted to reuse the existing media item instead of creating a new one.
Features
Media Dupe Detect integrates with the Media Library widget and provides:
- Detection of duplicate media items based on file hash
- A prompt to reuse existing media items when a duplicate is found
- A role-based permission that allows trusted users to bypass duplicate detection
- Field-level configuration so duplicate checks can be enabled per media field
Typical use cases include:
- Keeping the Media Library clean and organized
- Preventing unnecessary duplication of images and documents
- Supporting large teams and editorial workflows where many users upload assets
Configuration
After installing and enabling the module and its dependencies:
- Go to the Form display configuration for the content type or entity type that uses a media field (for example:
Structure → Content types → Your type → Manage form display). - On the Media Library widget for the media field, click the gear icon to open the widget settings.
- Enable the Detect duplicates option to turn on duplicate detection for that field.
- Navigate to People → Permissions and use the Bypass media duplicate upload prevention permission to allow specific roles to upload duplicates when needed.
The module does not add any new configuration pages or content types. All behavior is controlled through existing form display settings and permissions.
Requirements
Media Dupe Detect relies on Drupal core media functionality and file hashing:
- Drupal core Media (version 10 or 11)
- Drupal core Media Library
- File Hash module, used to compute and compare file hashes
For more details, downloads, and issue tracking, see the Media Dupe Detect project page.
Audit Export Module
Audit Export is a flexible auditing and reporting module for Drupal 7 through 11. It gives administrators and developers a clear view into how their site is structured, where things are configured, and what might need attention. Think of it as a periodic check-up for your Drupal installation, minus the waiting room.
Features
Comprehensive Entity Audits
Review the structure and configuration of content entities, user roles, menus, taxonomy vocabularies, and views. If Drupal stores it, you can probably audit it.
Automated Reports via Cron
Schedule recurring audits with Drupal cron to keep continuous visibility into site configuration.
CSV Export for External Tools
Export audit data as CSV for dashboards, spreadsheets, or external analysis systems.
Drush Integration
Run audits and export reports from the command line using Drush. Ideal for CI/CD pipelines and automation-heavy workflows.
Custom Audit Plugins
Extend the module by building your own audit plugins for custom requirements.
Optional Remote Posting
Send audit results to external APIs or monitoring platforms for centralized reporting.
Similar Modules
You may also want to explore Site Audit.
Post-Installation
Visit /admin/config/system/audit-export to access the admin UI and run audits. Reports can be exported from the UI or generated using:
drush audit-export:rundrush audit-export:export
Requirements
- Drupal 7.x through 11.x
- Drush (optional but recommended)
Supporting the Module
Contributions and feedback are welcome. Submit issues or pull requests on the Audit Export project page.
Drupal + NextJS Starter
Drupal 11 + Next.js Starter Kit
A modern headless CMS starter that combines Drupal 11 as the content management backend with Next.js 15 as the frontend framework.
Features
- Backend: Drupal 11 with JSON:API, Simple OAuth authentication
- Frontend: Next.js 15 with App Router, TypeScript, Tailwind CSS
- Content Types: Pages, Articles, Events with image fields
- Authentication: OAuth2 client credentials flow
- Development: Docksal containerized environment
Prerequisites
- Docksal is installed and running
- Docker and Docker Compose (installed with Docksal)
Installation
1. Clone and Initialize
git clone git@github.com:willjackson/drupal-nextjs-starter.git d11-nextjs-starter
cd d11-nextjs-starter
fin initInitialize with Options:
# Initialize with sample content
fin init --content
# Initialize with AI Tools
fin init --ai
# Initialize with both content and AI Tools
fin init --content --aiExplore this project to try out Drupal and see its utility as a viable, well-supported backend for Next.js. Start managing content with Drupal while leveraging Next.js for a dynamic frontend experience. Invitation is open to use this starter kit and discover its capabilities.
Drupal Docksal Starter Template
This project provides a clean, Composer-managed Drupal 11 starter site tailored for a smooth development experience with Docksal. It’s intentionally minimal, containing only Drupal core with no contributed modules or themes, making it ideal for developers who want full control over their project’s architecture from the first commit.
What’s Included
This starter ships with a preconfigured Docksal setup using the default LAMP stack, complete with image version pinning to ensure consistent environments. It also includes examples of PHP and MySQL configuration overrides, giving developers a convenient place to adjust settings without touching global system configs.
To streamline setup, the project includes a customizable fin init script that takes care of local bootstrapping tasks. Out of the box, it installs Drupal via Drush and prepares the environment, but you can extend it for tasks such as database imports, enabling modules, preparing settings files, running updates, or managing caches.
Getting Started
If you haven’t installed Docksal yet, begin with the official setup guide at https://docs.docksal.io/getting-started/setup/.
Once your environment is ready, clone the project:
git clone https://github.com/willjackson/Docksal-Drupal-11-Starter.git drupal11
cd drupal11
Run the initialization process:
fin init
This command installs Drupal, configures the environment, and prints login credentials to the terminal. When the process completes, your new site will be available at:
http://drupal11.docksal.site
Learn More
You can explore the full project, view the fin init script, and check out environment configuration examples on GitHub at https://github.com/willjackson/Docksal-Drupal-11-Starter.
This starter aims to provide a clean, dependable foundation for any Drupal 11 build running on Docksal, giving you a predictable environment and a blank slate to develop the features your project actually needs.
Drupal Recipe Explorer
The Drupal Recipe Explorer is a resource for developers and site builders who want a clearer way to discover and evaluate Drupal recipes. Recipes are lightweight Composer packages of type drupal-recipe that bundle modules, configuration, and optional patches to deliver ready-made site-building patterns. Unlike full distributions, they can be applied at any point in a site's lifecycle, added or removed as needed, and combined to suit specific project goals.
A typical recipe defines required modules and themes, includes default configuration, and may provide configuration actions that adjust existing settings. Every recipe contains a recipe.yml file describing its purpose, classification, dependencies, and configuration.
To use a recipe, add it to your project with Composer:
composer require drupal/example_recipe
Then apply it with the core recipe script:
php core/scripts/drupal recipe ../recipes/[recipe-name] -v
or with Drush:
drush recipe ../recipes/[recipe-name] -v
The Drupal Recipe Explorer aggregates recipe data from multiple sources. Packagist packages from the Drupal vendor and selected contributors form the primary index, while GitHub and Drupal.org’s GitLab repositories are parsed to capture metadata, dependencies, and patches. The browser provides a searchable and filterable list of all discovered recipes, along with direct links to their source code and regularly refreshed data.
If you want to contribute your own recipe, you can create a General Project on Drupal.org, ensure your composer.json file uses the drupal-recipe type, include a complete recipe.yml, and publish it for others to use.
For more information, you can visit the project page at https://drupal-recipe-explorer.netlify.app, explore the Distributions and Recipes Initiative on Drupal.org, review the GitLab repository, check the Recipes Cookbook, or join the #distributions-and-recipes Slack channel.