Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Content Analysis #13

Open
ChrisB9 opened this issue Aug 23, 2020 · 3 comments
Open

Content Analysis #13

ChrisB9 opened this issue Aug 23, 2020 · 3 comments

Comments

@ChrisB9
Copy link

ChrisB9 commented Aug 23, 2020

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? -

For a website, the client (previous wordpress user) has asked to have a more options similar to those of the likes of yoast.
Now, while i don't think meta-keywords are a thing anymore, the only real difference seems to be a recommendation of how things can be approved.

This is how i could imagine this to look like for this extension too:
image

Additionally, the way you seem to have drafted that in your images with the blue checkmarks does seem like a good too:
image

I would create a PR for this but maybe you already have something similar in the pipeline. If not, then do you have ideas/concepts in this direction that way i can start on a solution and give it to my client.

@solverat
Copy link
Member

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.

@solverat solverat changed the title Wizzard for SEO-Improvements Content Analysis Aug 24, 2020
@ChrisB9
Copy link
Author

ChrisB9 commented Aug 24, 2020

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?

@solverat solverat added this to the 1.2.0 milestone Jan 18, 2021
@dpfahlbusch
Copy link

Is this still planned? :)

@solverat solverat removed this from the 1.2.0 milestone Nov 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants