This project is not covered by Drupal’s security advisory policy.
Livefeed adds live blogs to Drupal. Reporters post short updates with text, images and video, and readers see them appear without reloading the page. It is built for news coverage of events, elections, incidents and sports, on sites that are mostly served from a cache or CDN.
Readers get the first updates rendered on the server, then poll a small, cacheable JSON endpoint. That works behind any reverse proxy, without extra infrastructure. For updates within a second, enable the optional Pusher adapter. It works with Pusher or with a self-hosted, Pusher-compatible server such as Soketi.
Live blog operations are also available as Tool API tools, so AI assistants (over MCP), workflows and Drush can find live blogs, read updates, post updates and close a live blog, using the same rules as the editor.
Features
- Live updates without reloading. Polling every 20 seconds by default. The endpoint sends a public
max-ageand a cache tag, so a page cache or CDN can serve it to every reader. Tabs in the background keep checking at a slower rate and show the number of new updates in the page title. - Instant updates (optional). The Livefeed Pusher submodule signals readers' browsers to fetch new updates at once. It works with Pusher and with Soketi, and readers fall back to polling if the connection drops. Editors see how many readers are following the live blog.
- Fast editing for reporters. A post form above the live blog with CKEditor 5:
- drag-and-drop uploads, with alternative text required for images, and an optional caption and credit per image or video
- YouTube and Vimeo links
- a highlight option, an adjustable publication time and "pin to top"
- drafts
- inline editing and deleting, with conflict detection
- autosave of unsaved text
- Key moments and pinned updates. Highlighted updates are listed as key moments at the top, also when they are not loaded yet. One update can be pinned above all others, for example "What we know so far".
- Place it anywhere. Every live blog has its own page, and you can place it with:
- a Paragraphs paragraph type
- a block (block layout, Layout Builder and Canvas)
- a Drupal Canvas component
All three render the same output.
- Automation.
- Livefeed ECA adds ECA events (update published, changed or deleted; live blog closed or reopened), conditions and actions. For example, notify subscribers when a highlight is published, or close live blogs that have been quiet for six hours.
- Livefeed Tool describes four operations once as Tool API tools: find live blogs, list updates, post an update, and close or reopen a live blog. Verified with AI assistants over MCP Server.
- Tokens for live blogs and updates, for Pathauto, Metatag and workflows.
- Cache friendly. The page stays fully cacheable for anonymous readers; the post form and edit buttons are lazy builders. A closed live blog becomes a regular page with all updates.
- Accessible.
- New updates do not interrupt screen readers; readers who have scrolled down get a "new updates" button.
- The editor works with the keyboard alone.
- Highlights and pinned updates have text labels, not only color.
- Lightweight front end.
- Single directory components.
- Vanilla JavaScript; the polling script is under 8 kB.
- No frameworks, no jQuery, no external scripts in the core module.
- Responsive images, click-to-play embeds and videos without autoplay.
- SEO. schema.org
LiveBlogPostingstructured data, and a shareable link for every update. - Safe by default. Strict text format, CSRF protection on all changes, and a configurable limit on editor actions per minute.
- Uses your site's media. Images, video files and remote videos come from your existing media types; upload limits come from those types. The module creates no roles, media types or fields.
Requirements
- Drupal 10.3 or 11, PHP 8.3 or higher.
- Core modules: Media, File, Image, Filter, Options, Text, Breakpoint, Responsive Image.
Submodules have their own requirements:
- Livefeed Paragraphs: Paragraphs. Inline Entity Form is optional: with it, editors create the live blog inside the paragraph.
- Livefeed Canvas: Drupal Canvas (Drupal 11.3 or higher).
- Livefeed Pusher: Pusher API 3.x, plus a Pusher account or a Pusher-compatible server.
- Livefeed ECA: ECA 2.1 (Drupal 10.3) or 3 (Drupal 11).
- Livefeed Tool: Tool API 1.0 beta (Drupal 10.5 or higher). For AI assistants, also MCP Server with its Tool API bridge.
Installation
Install as you would normally install a contributed Drupal module. For further information, see Installing Drupal Modules.
composer require drupal/livefeed drush en livefeed livefeed_paragraphs
Configuration
- Grant Post to livefeeds to your editorial role. Anonymous and authenticated users can view live blogs by default.
- Review the settings at Configuration » Content authoring » Livefeed:
- polling interval
- how the author is shown (nothing, the user name or a fixed name such as "Newsroom")
- which media types reporters may add
- the maximum number of editor actions per user per minute
- Create a live blog at Content » Livefeeds, and place it with a paragraph, block or Canvas component.
- When the event is over, set the live blog to Closed.
For instant updates, enable Livefeed Pusher and configure Pusher API in settings.php. For a self-hosted server, enter its host and port in the Livefeed settings. The README describes a local setup with Soketi in DDEV, and how to connect an AI assistant over MCP.
For developers
- Render a live blog anywhere with the
livefeedrender element:['#type' => 'livefeed', '#livefeed' => $livefeed]. - React to changes with the
livefeed.post.changedandlivefeed.status.changedevents. - Change what push adapters send with
hook_livefeed_push_payload_alter(). - Use the tools from PHP, Drush (
drush tool:run livefeed_tool:post_update) or any Tool API invoker. - Override the components from your theme, or adjust the colors with CSS custom properties.
- Design decisions are documented in
DECISIONS.md.
Project status
Livefeed is in active development on the 1.0.x branch. It is tested on Drupal 10 and 11, with automated tests for the core module and every submodule. Livefeed Tool builds on Tool API, which is still in beta, so its tools may change with Tool API. Livefeed Canvas cannot be used together with Display Builder or UI Patterns 2 for now, because of an open compatibility issue in Canvas (#3552818).
Similar projects
Liveblog is an earlier live blog module for Drupal. Livefeed takes a different approach:
- dedicated, lightweight entities instead of nodes
- cache-friendly polling as the baseline, with push as an option
- placement through Paragraphs, blocks and Canvas
The data model is kept migration-friendly, and a migration path is planned.
Project information
- Project categories: Content display, Media, Site structure
- Ecosystem: Pusher API
- Created by immoreel on , updated
This project is not covered by the security advisory policy.
Use at your own risk! It may have publicly disclosed vulnerabilities.
Releases
Development version: 1.0.x-dev updated 15 Oct 2026 at 17:16 UTC


