private static function collectArticlePaths(string $root) : Collection
    {
        return Collection::make(Util::getFileList($root, ['md']))->map(function ($item) {
            return
                preg_match('/(.*)\/([0-9]{4}\/[0-9]{2}\/\w+)\/article\.md$/', $item, $m) === 1
                    && file_exists("{$m[1]}/{$m[2]}/config.yml")
                ? "{$m[1]}/{$m[2]}"
                : null;
        })->filter();
    }