GithubHelp home page GithubHelp logo

Content Analysis about pimcore-seo HOT 3 OPEN

dachcom-digital avatar dachcom-digital commented on May 28, 2024
Content Analysis

from pimcore-seo.

Comments (3)

solverat avatar solverat commented on May 28, 2024 2

Hey @ChrisB9 thanks for your input. Great idea! A quality analysis tool is on our roadmap (like you, we also always end up in a "yoast-comparing" discussion 😄).

The idea would be to add a colored (red, orange, green) badge-tab to the right of the tab-panel:

image

Beside the two checks you've already mentioned, we also want to have some semantic checks. In summary:

  • Title
  • Description
  • Headline Count in Element (loop object by fielddefinition and documents by elements and filter wysiwyg, input elements)
  • Keyword/Keyphrase Density
  • Performance
  • ...

Technically all those "Modules" should be available as configurable and self-sustainable elements like the integrators already are. I think about a tagged symfony service and also a corresponding extjs object, for example:

Service

    SeoBundle\MetaData\Analysis\TitleDescriptionAnalyser:
        tags:
            - {name: seo.meta_data.analyser, identifier: title_description }

Php Class

<?php

namespace SeoBundle\MetaData\Analysis;

class TitleDescriptionAnalyser implements AnalyserInterface
{
    /**
     * {@inheritdoc}
     */
    public function analyse(array $elements, array $context)
    {
        return [];
    }
}

Extjs Module

pimcore.registerNS('Seo.MetaData.Analysis.TitleDescriptionAnalyser');
Seo.MetaData.Analysis.TitleDescriptionAnalyser = Class.create(Seo.MetaData.Analysis.AbstractAnalyser, {
 
    buildPanel: function () {
        return fields;
    },

    getRanking: function () {
        return 0;
    }

});

Controller

<?php

namespace SeoBundle\Controller\Admin;

class MetaDataController extends AdminController
{
    public function analyseElement(Request $request)
    {
        $data = [];
        $element = null; // @todo

        foreach($this->analysisManager->getAnalysers() as $name => $analyser) {
            $data[$name] = $analyser->analyse($element);
        }

        return $this->json([
            'data' => $data,
            'score' => $this->analysisManager->calculateScore($data)
        ]);
    }
}

But I'm not sure if we need a php class at all, since the analysis should work in real-time and with unpublished content. We should do some benchmark tests and POC first (change listener on all inputs could be a performance issue in extjs but also
watching the iframe element in document context could be a tricky one.)


However, this is just a rough idea how we could achieve this. For now, we should implement the basic structure + your suggested title/description module. There is no active sprint for this feature therefor we need to discuss this internally first.

from pimcore-seo.

ChrisB9 avatar ChrisB9 commented on May 28, 2024

Yea, yoast did put up a really good tool for clients :D

But thats very promising and looks like a good direction.
I could imagine a two-path analysis:

  • you already have a word-count, this could be extended with an condition, if number in range then green. This should normally not be too performance heavy
  • Then the semantic check, as you mentioned, should be analyzed with php because of easier extensibility.

Would it performance-wise make sense, to put all the data into the localstorage on-edit and then the sementic checker pulls it from there asynchronosly on-change:localstorage [element-id] -> semantic check. This should then remove your iframe issue. I am doing the same thing with my PageBuilder-Bundle and it currently seems to work without major speed-implications


Do you need any help with building that feature?

from pimcore-seo.

dpfahlbusch avatar dpfahlbusch commented on May 28, 2024

Is this still planned? :)

from pimcore-seo.

Related Issues (20)

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.