Git Product home page Git Product logo

codihaus / directus-extension-seo Goto Github PK

View Code? Open in Web Editor NEW
20.0 3.0 3.0 1.72 MB

Directus SEO Extension enhance Directus with powerful SEO scoring and validator and AI SEO from ChatGPT

Home Page: https://directus-extensions.codihaus.io

License: MIT License

TypeScript 17.24% Vue 21.27% JavaScript 61.32% SCSS 0.17%
directus-extension seo seo-friendly seo-optimization seo-tools directus-seo

directus-extension-seo's Introduction

Directus extension SEO

Installation via npm

Run the command at your Directus root project level

npm i directus-extension-seo

Setup

  1. Activate SEO Settings module:
  • After install, go to Settings menu and active the SEO Settings modules at Modules section.
  1. Go to module SEO Settings from modules bar
  2. Follow the setup wizard

Structure

directus-extension-seo's People

Contributors

codihaus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

directus-extension-seo's Issues

How to install?

I'm try to test your SEO extension, it's a great idea. Thanks for your job!

I'm trying to use inside a docker container: directus/directus:latest

Captura de tela de 2023-10-18 11-47-35

43 timing command:i Completed in 3272ms
44 verbose stack Error: Unsupported URL Type "workspace:": workspace:*
44 verbose stack     at unsupportedURLType (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/lib/npa.js:327:15)
44 verbose stack     at fromURL (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/lib/npa.js:387:13)
44 verbose stack     at Function.resolve (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/lib/npa.js:83:12)
44 verbose stack     at #nodeFromEdge (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:1048:22)
44 verbose stack     at #buildDepStep (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:917:35)
44 verbose stack     at #resolveLinks (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:1436:32)
44 verbose stack     at #buildDepStep (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:783:32)
44 verbose stack     at #buildDepStep (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:1035:30)
45 verbose cwd /directus
46 verbose Linux 5.15.0-86-generic
47 verbose node v18.18.0
48 verbose npm  v9.8.1
49 error code EUNSUPPORTEDPROTOCOL
50 error Unsupported URL Type "workspace:": workspace:*
51 verbose exit 1
52 timing npm Completed in 3406ms

Another way to install your extension?

Setup fails with Postgres

I've installed the plugin and ran the setup like instructed. After starting the setup it's trying to deploy changes in the Postgres database but fails. The setup keeps hanging because of it. The running container has all permissions to the Postgres database so I don't understand why it fails.

Is this a bug or did I miss something?

Here is the log:

Jul 03 23:13:15 dev docker[1428]: directus-1  | [23:13:15] GET /extensions 200 18ms
Jul 03 23:13:41 dev docker[1428]: directus-1  | [23:13:41.525] INFO: Extensions reloaded
Jul 03 23:13:41 dev docker[1428]: directus-1  | [23:13:41.526] INFO: Added extensions: directus-extension-seo
Jul 03 23:13:42 dev docker[1428]: directus-1  | [23:13:41] POST /extensions/registry/install 204 8.1s
Jul 03 23:13:42 dev docker[1428]: directus-1  | [23:13:41] GET /extensions 200 95ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:45] GET /admin/settings/marketplace/extension/8105060d-1bb8-4fc7-b0bd-e178bb3d0752 304 20ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:46] GET /extensions/sources/index.js 200 84ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:46] GET /favicon.ico 404 45ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:46] POST /auth/refresh 200 89ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:46] GET /server/info 304 55ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:46] GET /auth?sessionOnly 304 60ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:46] GET /translations?fields[]=language&fields[]=key&fields[]=value&filter[language][_eq]=en-US&limit=-1 304 28ms
Jul 03 23:13:46 dev docker[1428]: directus-1  | [23:13:46] GET /users/me?fields[]=*&fields[]=avatar.id&fields[]=role.admin_access&fields[]=role.app_access&fields[]=role.id&fields[]=role.enforce_tfa 200 49ms
Jul 03 23:13:47 dev docker[1428]: directus-1  | [23:13:47] GET /permissions?filter[role][_eq]=8935844c-8e7b-4dcf-80c8-f5f71d72a612 304 148ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:47] GET /fields 304 878ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /presets?filter[role][_eq]=8935844c-8e7b-4dcf-80c8-f5f71d72a612&filter[user][_null]=true&limit=-1 200 145ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /presets?filter[user][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&limit=-1 200 187ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /collections 304 204ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /presets?filter[role][_null]=true&filter[user][_null]=true&limit=-1 200 157ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /relations 304 239ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /settings 304 191ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /dashboards?fields[]=*&sort[]=name&limit=-1 304 115ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /panels?fields[]=*&sort[]=dashboard&limit=-1 304 148ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /flows?fields[]=*&fields[]=operations.*&limit=-1 304 114ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /notifications?filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox&aggregate[count]=id 304 103ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /translations?fields[]=language&fields[]=key&fields[]=value&filter[language][_eq]=en-US&limit=-1 304 20ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /notifications?filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox&aggregate[countDistinct]=id 304 136ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /notifications?aggregate[countDistinct]=id 304 119ms
Jul 03 23:13:48 dev docker[1428]: directus-1  | [23:13:48] GET /notifications?limit=25&fields[]=id&fields[]=subject&fields[]=message&fields[]=collection&fields[]=item&fields[]=timestamp&sort[]=-timestamp&page=1&filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox 304 109ms
Jul 03 23:13:49 dev docker[1428]: directus-1  | [23:13:48] PATCH /users/me/track/page 204 25ms
Jul 03 23:13:49 dev docker[1428]: directus-1  | [23:13:49] GET /extensions/registry/extension/8105060d-1bb8-4fc7-b0bd-e178bb3d0752 304 676ms
Jul 03 23:13:49 dev docker[1428]: directus-1  | [23:13:49] GET /extensions 304 16ms
Jul 03 23:13:58 dev docker[1428]: directus-1  | [23:13:57] GET /notifications?filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox&aggregate[countDistinct]=id 304 26ms
Jul 03 23:13:58 dev docker[1428]: directus-1  | [23:13:57] GET /notifications?aggregate[countDistinct]=id 304 19ms
Jul 03 23:13:58 dev docker[1428]: directus-1  | [23:13:57] GET /notifications?limit=25&fields[]=id&fields[]=subject&fields[]=message&fields[]=collection&fields[]=item&fields[]=timestamp&sort[]=-timestamp&page=1&filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox 304 12ms
Jul 03 23:13:58 dev docker[1428]: directus-1  | [23:13:58] PATCH /users/me/track/page 204 16ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /notifications?aggregate[countDistinct]=id 304 67ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /notifications?filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox&aggregate[countDistinct]=id 304 75ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /folders?sort=name&limit=-1 304 143ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /admin/assets/Inter-MediumItalic-eHnJB7Jg.woff2 200 35ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /roles?aggregate[countDistinct]=id 304 128ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /roles?limit=25&fields[]=icon&fields[]=name&fields[]=description&fields[]=id&sort[]=id&page=1&filter[admin_access][_eq]=false 304 142ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /roles?filter[admin_access][_eq]=false&aggregate[countDistinct]=id 304 120ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] GET /notifications?limit=25&fields[]=id&fields[]=subject&fields[]=message&fields[]=collection&fields[]=item&fields[]=timestamp&sort[]=-timestamp&page=1&filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox 304 35ms
Jul 03 23:14:02 dev docker[1428]: directus-1  | [23:14:01] PATCH /users/me/track/page 204 33ms
Jul 03 23:14:05 dev docker[1428]: directus-1  | [23:14:04] PATCH /settings 200 61ms
Jul 03 23:14:05 dev docker[1428]: directus-1  | [23:14:04] GET /auth?sessionOnly 304 56ms
Jul 03 23:14:05 dev docker[1428]: directus-1  | [23:14:04] GET /server/info 304 51ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /items/seo_advanced_setting?aggregate[count]=* 403 58ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /items/seo_advanced_setting?limit=-1&fields[]=collection&fields[]=enabled&fields[]=is_static 403 73ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /items/seo_setting/setup 403 87ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /notifications?aggregate[countDistinct]=id 304 128ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /notifications?filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox&aggregate[countDistinct]=id 304 135ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /items/seo_advanced_setting?aggregate[count]=* 403 48ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /notifications?limit=25&fields[]=id&fields[]=subject&fields[]=message&fields[]=collection&fields[]=item&fields[]=timestamp&sort[]=-timestamp&page=1&filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox 304 98ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /notifications?aggregate[countDistinct]=id 304 34ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /notifications?filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox&aggregate[countDistinct]=id 304 27ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] GET /notifications?limit=25&fields[]=id&fields[]=subject&fields[]=message&fields[]=collection&fields[]=item&fields[]=timestamp&sort[]=-timestamp&page=1&filter[_and][0][recipient][_eq]=b8723ad2-b302-420a-9b50-67028c28131a&filter[_and][1][status][_eq]=inbox 304 24ms
Jul 03 23:14:06 dev docker[1428]: directus-1  | [23:14:06] PATCH /users/me/track/page 204 23ms
Jul 03 23:14:08 dev docker[1428]: directus-1  | [23:14:08] GET /collections 304 26ms
Jul 03 23:14:08 dev docker[1428]: directus-1  | [23:14:08] POST /collections 200 332ms
Jul 03 23:14:08 dev docker[1428]: directus-1  | [23:14:08] GET /collections 200 42ms
Jul 03 23:14:09 dev docker[1428]: directus-1  | [23:14:09] POST /collections 200 273ms
Jul 03 23:14:09 dev docker[1428]: directus-1  | [23:14:09] GET /collections 200 43ms
Jul 03 23:14:09 dev docker[1428]: directus-1  | [23:14:09] POST /collections 200 339ms
Jul 03 23:14:09 dev docker[1428]: directus-1  | [23:14:09] GET /collections 200 22ms
Jul 03 23:14:09 dev docker[1428]: database-1  | 2024-07-03 23:14:09.687 UTC [857] ERROR:  foreign key constraint "seo_detail_image_share_foreign" cannot be implemented
Jul 03 23:14:09 dev docker[1428]: database-1  | 2024-07-03 23:14:09.687 UTC [857] DETAIL:  Key columns "image_share" and "id" are of incompatible types: character varying and uuid.
Jul 03 23:14:09 dev docker[1428]: database-1  | 2024-07-03 23:14:09.687 UTC [857] STATEMENT:  alter table "seo_detail" add constraint "seo_detail_image_share_foreign" foreign key ("image_share") references "directus_files" ("id") on delete SET NULL
Jul 03 23:14:09 dev docker[1428]: directus-1  | [23:14:09] POST /relations 500 29ms
Jul 03 23:14:10 dev docker[1428]: directus-1  | [23:14:09.695] ERROR: alter table "seo_detail" add constraint "seo_detail_image_share_foreign" foreign key ("image_share") references "directus_files" ("id") on delete SET NULL - foreign key constraint "seo_detail_image_share_foreign" cannot be implemented
Jul 03 23:14:10 dev docker[1428]: directus-1  |     err: {
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "type": "DatabaseError",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "message": "alter table \"seo_detail\" add constraint \"seo_detail_image_share_foreign\" foreign key (\"image_share\") references \"directus_files\" (\"id\") on delete SET NULL - foreign key constraint \"seo_detail_image_share_foreign\" cannot be implemented",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "stack":
Jul 03 23:14:10 dev docker[1428]: directus-1  |           error: alter table "seo_detail" add constraint "seo_detail_image_share_foreign" foreign key ("image_share") references "directus_files" ("id") on delete SET NULL - foreign key constraint "seo_detail_image_share_foreign" cannot be implemented
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at Parser.parseErrorMessage (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/parser.js:283:98)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at Parser.handlePacket (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/parser.js:122:29)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at Parser.parse (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/parser.js:35:38)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at Socket.<anonymous> (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/index.js:11:42)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at Socket.emit (node:events:517:28)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at addChunk (node:internal/streams/readable:368:12)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at readableAddChunk (node:internal/streams/readable:341:9)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at Readable.push (node:internal/streams/readable:278:10)
Jul 03 23:14:10 dev docker[1428]: directus-1  |               at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "length": 242,
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "name": "error",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "severity": "ERROR",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "code": "42804",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "detail": "Key columns \"image_share\" and \"id\" are of incompatible types: character varying and uuid.",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "file": "tablecmds.c",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "line": "8782",
Jul 03 23:14:10 dev docker[1428]: directus-1  |       "routine": "ATAddForeignKeyConstraint"
Jul 03 23:14:10 dev docker[1428]: directus-1  |     }

TypeError: V.replace is not a function

Hi,

Once i installed this extension on a new instance, and created a Pages collection, added this extension, filled in the meta-title and description, i get the following error:

TypeError: V.replace is not a function
    at Be (index.js:17427:42)
    at index.js:16944:144
    at At.fn (runtime-core.esm-bundler-zlSgKseS.js:9:9380)
    at At.run (runtime-core.esm-bundler-zlSgKseS.js:9:1517)
    at get value (runtime-core.esm-bundler-zlSgKseS.js:9:9624)
    at index.js:17520:29
    at s (runtime-core.esm-bundler-zlSgKseS.js:13:4787)
    at lc (runtime-core.esm-bundler-zlSgKseS.js:13:22035)
    at Proxy.<anonymous> (index.CqRcnUtk.entry.js:3475:128585)
    at en (runtime-core.esm-bundler-zlSgKseS.js:13:5097)
 at Be (index.js:17427:42):
 function Be(V = "") {
      var J;
      return (J = V == null ? void 0 : V.replace(/(<([^>]+)>)/gi, "").replaceAll(`
`, " ")) == null ? void 0 : J.substring(0, 255);
    }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.