PHPackages                             projektgopher/scrawl - 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. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. projektgopher/scrawl

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

projektgopher/scrawl
====================

Lowest barrier to entry blogging solution for Laravel

v0.4.0(4y ago)216MITPHPPHP ^8.0

Since Sep 5Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ProjektGopher/scrawl)[ Packagist](https://packagist.org/packages/projektgopher/scrawl)[ Docs](https://github.com/projektgopher/scrawl)[ GitHub Sponsors](https://github.com/ProjektGopher)[ RSS](/packages/projektgopher-scrawl/feed)WikiDiscussions main Synced today

READMEChangelog (7)Dependencies (10)Versions (8)Used By (0)

[![](https://raw.githubusercontent.com/ProjektGopher/scrawl/main/resources/img/scrawl.svg)](https://scrawl.projektgopher.com/?ref=github)

verb. To write in a hurried or careless way.

### Just get writing.

[](#just-get-writing)

[![Latest Version on Packagist](https://camo.githubusercontent.com/e2ebfef61f02e70b0e5e3e187df42c1f18fb3c3d39b20c7843fee37326442a4f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f70726f6a656b74676f706865722f73637261776c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/projektgopher/scrawl)[![GitHub Tests Action Status](https://camo.githubusercontent.com/2dc8fbfdcb3c392ee637d42c0dcee4db7902fbe0f035cd0ea5b60db0d9e36b73/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f70726f6a656b74676f706865722f73637261776c2f72756e2d74657374733f6c6162656c3d7465737473)](https://github.com/projektgopher/scrawl/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/13a9dcaf87a04b11fd13bd894b73c6ca09bd2fb2d54d90467b9525510bdc76b0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f70726f6a656b74676f706865722f73637261776c2f436865636b253230262532306669782532307374796c696e673f6c6162656c3d636f64652532307374796c65)](https://github.com/projektgopher/scrawl/actions?query=workflow%3A%22Check+%26+fix+styling%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/a64045547b9268729e53650248236c037cc264bc8fd563a7dff469ffd2837149/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f70726f6a656b74676f706865722f73637261776c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/projektgopher/scrawl)

Scrawl is designed to be the lowest friction markdown file based single user blogging solution for Laravel

Documentation
-------------

[](#documentation)

For the full documentation, visit the [Scrawl home page](https://scrawl.projektgopher.com/?ref=github).

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

[](#installation)

You can install the package via composer:

```
composer require projektgopher/scrawl
```

You can publish the config file with:

```
php artisan vendor:publish --provider="Projektgopher\Scrawl\BlogServiceProvider" --tag="scrawl-config"
```

This is the contents of the published config file:

```
return [

    /**
     * These folders are located in the resources directory. We suggest
     * storing them in a directory named md (markdown) to follow
     * with the conventions of the resources directory.
     */
    "unpublished_directory" => "md/scrawl/unpublished",
    "published_directory" => "md/scrawl/published",
    "blog_directory" => "md/scrawl",

    "author_bio" => "",
    "author_name" => "",
    "author_link" => "",
    "author_photo" => "",
    "author_photo_alt" => "",

    "route_group" => "blog",

    "view" => [
        /**
         * Read the list of driver options below, and
         * choose the option that best suits you.
         */
        "driver" => "standalone",

        /**
         * Use "none" if you'd like to return the data as JSON.
         * Particularly useful for Vue or React based blogs.
         */
        "none" => "",

        /**
         * Use "custom" if you don't have a main layout file
         * but also don't want to use the one provided.
         */
        "custom" => "",

        /**
         * Use "standalone" if you don't have a main layout
         * file. Great for just getting started quickly.
         * You can alawys move to a layout based
         * setup later on.
         */
        "standalone" => "",

        /**
         * Use "x-component" if your views include a blade
         * layout component such as
         */
        "x-component" => [
            "component" => "layouts.app",
        ],

        /**
         * Use "blade-layout" if your views extend a
         * base layout using the @extends method.
         */
        "blade-layout" => [
            "extends" => "layouts.app",
            "section" => "body",
        ],
    ],

];
```

Usage
-----

[](#usage)

Scrawl is desgined to be used on the CLI. It will automatically register the blog routes, and requires no database as this package is file based, and meant to have your content comitted to the project. Only posts saved in the 'published' directory will be publicly accessible.

```
php artisan blog:make 'long title that should be sluggified'
```

This command will ensure that the unpublished directory exists, copy the .md blog post stub into the 'unpublished' directory with a sluggified title.

Now you can just get into writing your post in github flavored markdown without worrying about all the details.

```
php artisan blog:publish 'name of blog you would like to move to the published directory'
```

```
php artisan blog:unpublish 'name of the blog you should not have published yet'
```

Testing
-------

[](#testing)

```
vendor/bin/phpunit --testdox
```

Support us
----------

[](#support-us)

We invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can support us by [buying one of our paid products](https://spatie.be/open-source/support-us).

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards on [our virtual postcard wall](https://spatie.be/open-source/postcards).

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Len Woodward](https://github.com/ProjektGopher)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

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 ~5 days

Total

7

Last Release

1677d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/63312522f1920cf5b3c34ea474511a484162b36166a33ae4b9fde6c65ab2c2fc?d=identicon)[ProjektGopher](/maintainers/ProjektGopher)

---

Top Contributors

[![ProjektGopher](https://avatars.githubusercontent.com/u/1688608?v=4)](https://github.com/ProjektGopher "ProjektGopher (66 commits)")

---

Tags

blogbloggingblogging-enginelaravelphplaravelmarkdownbloglaravel blogProjektGopherscrawl

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/projektgopher-scrawl/health.svg)

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

###  Alternatives

[spatie/laravel-markdown-response

Serve markdown versions of your HTML pages to AI agents and bots

6512.6k](/packages/spatie-laravel-markdown-response)[guava/filament-knowledge-base

A filament plugin that adds a knowledge base and help to your filament panel(s).

206120.5k1](/packages/guava-filament-knowledge-base)[vormkracht10/laravel-mails

Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.

24149.7k](/packages/vormkracht10-laravel-mails)[torchlight/torchlight-commonmark

A Commonmark extension for Torchlight, the syntax highlighting API.

29256.6k6](/packages/torchlight-torchlight-commonmark)

PHPackages © 2026

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