PHPackages                             phptek/staticsiteconnector - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. phptek/staticsiteconnector

AbandonedSilverstripe-vendormodule[Database &amp; ORM](/categories/database)

phptek/staticsiteconnector
==========================

Full automated content migration from any site into Silverstripe.

0.7.3(3y ago)314[11 issues](https://github.com/phptek/silverstripe-exodus/issues)BSD-3-ClausePHP

Since Sep 3Pushed 3y ago2 watchersCompare

[ Source](https://github.com/phptek/silverstripe-exodus)[ Packagist](https://packagist.org/packages/phptek/staticsiteconnector)[ RSS](/packages/phptek-staticsiteconnector/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (6)Versions (17)Used By (0)

Silverstripe Exodus
===================

[](#silverstripe-exodus)

[![CI](https://github.com/phptek/silverstripe-exodus/actions/workflows/ci.yml/badge.svg)](https://github.com/phptek/silverstripe-exodus/actions/workflows/ci.yml)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/6de80d633b9739ca177a497bc20c4a0715a4c1fcadb2d014574e7465601558bc/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f70687074656b2f73696c7665727374726970652d65786f6475732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/phptek/silverstripe-exodus/?branch=master)[![License](https://camo.githubusercontent.com/cb9215d2ce7e7c160134efc7c9fe7845df8d9d57650bd0de412c85e362a815e1/68747470733a2f2f706f7365722e707567782e6f72672f70687074656b2f73696c7665727374726970652d65786f6475732f6c6963656e73652e737667)](https://github.com/phptek/silverstripe-exodus/blob/master/LICENSE.md)[![Packagist Version](https://camo.githubusercontent.com/771c6845c38c348c9ec7cafeae11080537d02fc111b1b175251701e096d6a8f9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f70687074656b2f73696c7665727374726970652d65786f647573)](https://camo.githubusercontent.com/771c6845c38c348c9ec7cafeae11080537d02fc111b1b175251701e096d6a8f9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f70687074656b2f73696c7665727374726970652d65786f647573)

Introduction
------------

[](#introduction)

Exodus is a content migration tool that follows the ETL standard ([**Extract Transform Load**](https://en.wikipedia.org/wiki/Extract,_transform,_load)). It will consume content from virtually any website, regardless of its underlying CMS technology and import it as native content objects (`SiteTree`, `File` etc) into a Silverstripe instance.

Exodus crawls the source website's DOM and caches matching URLs to the local filesystem. It will then normalise page-URLs by stripping file-extensions, slashes and implementation-specific strings and run a site-scrape which imports content as native Silverstripe objects into your site-tree and assets hierarchy.

Please [See the docs index](./docs/en/index.md).

[![Migration into Silverstripe CMS](./docs/exodus.png "Migration into Silverstripe CMS")](./docs/exodus.png)

How it works
------------

[](#how-it-works)

**Extract** is analogous to the module's "Crawl" mode. Given a URL, the tool will crawl the target website and cache a collection of matching URLs to the local filesystem.

**Transform** is the process of normalising the URLs cached in crawl mode and which are unique to the source system (Drupal, Wordpress or Plone). This is automatic and occurs with the selection made in the main "URL Processing" selection. This may be trial and error until the crawl process completes.

**Load** is analogous to the module's "Import" mode and is where the hard work of tweaking your crawl settings pays off, allowing you to import the content located at each cached URL into your site-tree and assets store.

Please [See the docs index](./docs/en/index.md).

Migration
---------

[](#migration)

Please [See the migration docs](./docs/en/index.md).

Requirements
------------

[](#requirements)

- PHP ^7||^8

Installation
------------

[](#installation)

```
composer require --dev phptek/silverstripe-exodus

```

You'll need to setup PHP to allow for long-running processes. Depending on the number of URLs in the target site which need to be crawled, and your configuration, you may be looking at upwards of 20-30m. Therefore configure the following, depending on your setup:

```
# Tell PHP itself to allow for long-running processes in php.ini
max_execution_time 72000

```

```
# Tell php-fpm to not stop reading after 20m in nginx.conf
fastcgi_read_timeout 72000;

```

```
# Tell php-fpm to increase the no. of available child process up from the default of 5 in www.conf
pm.max_children = 25

```

Please see the included [Migration](docs/en/howto.md) document which describes exactly how to configure the tool to perform a content migration.

Please also [see the rest of the docs](./docs/en/index.md).

History
-------

[](#history)

This module was originally written in 2012 by then Silverstripe Ltd CEO [Sam Minnee](https://github.com/sminnee/) and was known as the "Static Site Connector" module. It was used successfully on dozens of occassions to import content for new Silverstripe projects being built by the company at that time and was subsequently improved upon over the years by other Silverstripe employees.

Around 2015-2016 the module was archived by Sam and subsequently picked-up and improved by [Russell Michell](https://github.com/phptek/).

In 2022 Russell saw a need for the tool again for an upcoming gig and modified it once again to work with Silverstripe v4.

Contributers
------------

[](#contributers)

In order of no. commits:

- [Russell Michell](https://github.com/phptek/)
- [Sam Minnee](https://github.com/sminnee/)
- [Stig Lindqvist](https://github.com/stojg)
- [Mike Parkhill](https://github.com/mparkhill)

Credit also goes to [Marcus Nyholt](https://github.com/nyeholt/) for the use of the External Content module on top of which Exodus itself is built. The module in its current state actually includes the [`nyeholt/silverstripe-external-content`](https://github.com/nyeholt/silverstripe-external-content) package and bakes it in as a sub-directory rather than using Composer.

...it was just easier that way.

Support Me
----------

[](#support-me)

If you like what you see, support me! I accept Bitcoin:

   [![Bitcoin](https://camo.githubusercontent.com/bf9c656e311cb8e1c8f7d578156a9e405cf337b889d0ad436f876f06dc0c36a5/68747470733a2f2f626974636f696e2e6f72672f696d672f69636f6e732f6c6f676f5f696f732e706e67)](https://camo.githubusercontent.com/bf9c656e311cb8e1c8f7d578156a9e405cf337b889d0ad436f876f06dc0c36a5/68747470733a2f2f626974636f696e2e6f72672f696d672f69636f6e732f6c6f676f5f696f732e706e67)     **3KxmqFeVWoigjvXZoLGnoNzvEwnDq3dZ8Q**

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~24 days

Recently: every ~2 days

Total

10

Last Release

1124d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/30dea83801428834fb2e1bee1e6e2925e5d7876877fef189dc7f6c8f2878af14?d=identicon)[phptek](/maintainers/phptek)

---

Top Contributors

[![phptek](https://avatars.githubusercontent.com/u/478440?v=4)](https://github.com/phptek "phptek (106 commits)")

---

Tags

migrationsilverstripecontentimportextracttransformconnecttransformerimporterscrapeextractoretlscrapermigrateloadmigratorstaticsiteconnectorexodus

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/phptek-staticsiteconnector/health.svg)

```
[![Health](https://phpackages.com/badges/phptek-staticsiteconnector/health.svg)](https://phpackages.com/packages/phptek-staticsiteconnector)
```

###  Alternatives

[flow-php/etl

PHP ETL - Extract Transform Load - Abstraction

374468.4k48](/packages/flow-php-etl)[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

81733.7k](/packages/flow-php-flow)[fab2s/yaetl

Widely Extended Nodal Extract-Transform-Load ETL Workflow AKA NEJQTL or Nodal-Extract-Join-Qualify-Tranform-Load

64181.0k](/packages/fab2s-yaetl)[flow-php/parquet

PHP ETL - library for reading and writing Parquet files

56143.1k8](/packages/flow-php-parquet)[flow-php/array-dot

PHP ETL - Array Dot functions

14374.1k3](/packages/flow-php-array-dot)[laurentvw/scrapher

A web scraper for PHP to easily extract data from web pages

192.5k1](/packages/laurentvw-scrapher)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
