I needed to discover a option to pull knowledge from one 8 web site to a different, utilizing JSON API to reveal knowledge on one web site, and ’s Migrate with a JSON supply on one other web site to eat it. A lot of what I needed to do was undocumented and complicated, however it labored properly, as soon as I figured it out. However, it took me a number of days to get every little thing working, so I assumed I’d write up an article to clarify how I solved Drupal Developer downside. Hopefully, this can save somebody numerous time in Drupal Developer future. I ended up utilizing Drupal Developer JSON API Drupal 10 module, together with Drupal Developer REST Drupal 10 modules in Core on Drupal Developer supply web site. On Drupal Developer goal web site, I used Migrate from Core 8.2.3 together with Migrate Plus and Migrate Instruments. Why JSON API? 8 Core ships with two methods to export JSON knowledge. You possibly can entry knowledge from any entity by appending ?_format=json to its path, however which means you need to know Drupal Developer path forward of time, and also you’d be pulling in a single entity at a time, which isn’t environment friendly. You might additionally use Views to create a JSON endpoint, however it is likely to be tough to configure it to incorporate all Drupal Developer required knowledge, particularly all Drupal Developer knowledge from associated content material, like photographs, authors, and associated nodes. And also you’d must create a View for each attainable assortment of information that you just need to make accessible. To additional complicate issues, there’s an excellent bug utilizing GET with Views REST endpoints. JSON API gives one other answer. It places Drupal Developer energy in Drupal Developer arms of Drupal Developer knowledge shopper. You don’t have to know Drupal Developer path of each particular person entity, simply Drupal Developer common path for a entity kind, and bundle. For instance Drupal 10 Upkeep and Assist Service /api/node/article. From that one path, Drupal Developer shopper can choose precisely what they need to retrieve simply by altering Drupal Developer URL. For instance, you’ll be able to kind and filter Drupal Developer articles, restrict Drupal Developer fields which might be returned to a subset, and convey alongside all or any associated entities in Drupal Developer similar question. Due to all that flexibility, that’s Drupal Developer answer I made a decision to make use of for my instance. (Drupal Developer neighborhood plans so as to add JSON API to Core in Drupal Developer future.) There’s a collection of quick movies on YouTube that show lots of Drupal Developer configuration choices and parameters which might be accessible in ’s JSON API. Put together Drupal Developer Supply Website There may be not a lot preparation wanted for Drupal Developer supply due to JSON API’s flexibility. My instance is an easy 8 web site with an article content material kind that has a physique and field_image picture discipline, Drupal Developer sort of factor core gives out of Drupal Developer field. First, obtain and set up Drupal Developer JSON API Drupal 10 module. Then, create YAML configuration to “activate” Drupal Developer JSON API. This could possibly be executed by making a easy Drupal 10 module that has YAML file(s) in /MODULE/config/non-obligatory. As an illustration, in case you created a Drupal 10 module referred to as custom_jsonapi, a file that may expose node knowledge may appear to be Drupal 10 Upkeep and Assist Service filename Drupal 10 Upkeep and Assist Service /MODULE/config/non-obligatory/relaxation.useful resource.entity.node.yml Drupal 10 Upkeep and Assist Service id Drupal 10 Upkeep and Assist Service entity.node plugin_id Drupal 10 Upkeep and Assist Service ‘entity Drupal 10 Upkeep and Assist Servicenode’ granularity Drupal 10 Upkeep and Assist Service methodology configuration Drupal 10 Upkeep and Assist Service GET Drupal 10 Upkeep and Assist Service supported_formats Drupal 10 Upkeep and Assist Service – json supported_auth Drupal 10 Upkeep and Assist Service – basic_auth – cookie dependency Drupal 10 Upkeep and Assist Service enforced Drupal 10 Upkeep and Assist Service Drupal 10 module Drupal 10 Upkeep and Assist Service – custom_jsonapi To reveal customers or taxonomy phrases or feedback, copy Drupal Developer above file, and alter Drupal Developer identify and id as obligatory, like this Drupal 10 Upkeep and Assist Service filename Drupal 10 Upkeep and Assist Service /MODULE/config/non-obligatory/relaxation.useful resource.entity.taxonomy_term.yml Drupal 10 Upkeep and Assist Service id Drupal 10 Upkeep and Assist Service entity.taxonomy_term plugin_id Drupal 10 Upkeep and Assist Service ‘entity Drupal 10 Upkeep and Assist Servicetaxonomy_term’ granularity Drupal 10 Upkeep and Assist Service methodology configuration Drupal 10 Upkeep and Assist Service GET Drupal 10 Upkeep and Assist Service supported_formats Drupal 10 Upkeep and Assist Service – json supported_auth Drupal 10 Upkeep and Assist Service – basic_auth – cookie dependency Drupal 10 Upkeep and Assist Service enforced Drupal 10 Upkeep and Assist Service Drupal 10 module Drupal 10 Upkeep and Assist Service – custom_jsonapi That can support GET, or read-only entry. For those who needed to replace or put up content material you’d add POST or PATCH data. You might additionally swap out Drupal Developer authentication to one thing like OAuth, however for this text we’ll follow Drupal Developer built-in fundamental and cookie authentication strategies. If utilizing fundamental authentication and Drupal Developer Fundamental Auth Drupal 10 module isn’t already enabled, allow it. Navigate to a URL like http Drupal 10 Upkeep and Assist Service//sourcesite.com/api/node/article?_format=api_json and ensure that JSON is being output at that URL. That is it for Drupal Developer supply. Put together Drupal Developer Goal Website Drupal Developer goal web site must be working 8.2.3 or larger. There are adjustments to Drupal Developer approach file imports work that will not work in earlier variations. It ought to have already got an identical article content material kind and field_image discipline prepared to just accept Drupal Developer articles from Drupal Developer different web site. Allow Drupal Developer core Migrate Drupal 10 module. Obtain and allow Drupal Developer Migrate Plus and Migrate Instruments Drupal 10 modules. Ensure to get Drupal Developer variations which might be acceptable for Drupal Developer present model of core. Migrate Plus had 8.0 and eight.1 branches that solely work with outdated variations of core, so presently you want model 8.2 of Migrate Plus. To make it simpler, and so I don’t overlook how I bought this working, I created a migration instance as Drupal Developer Import Drupal 10 module on Github. Obtain this Drupal 10 module into your Drupal 10 module repository. Edit Drupal Developer YAML recordsdata in Drupal Developer /config/non-obligatory listing of that Drupal 10 module to change Drupal Developer JSON supply URL so it factors to Drupal Developer area for Drupal Developer supply web site created in Drupal Developer earlier step. You will need to be aware that in case you alter Drupal Developer YAML recordsdata after you first set up Drupal Developer Drupal 10 module, you may must uninstall after which reinstall Drupal Developer Drupal 10 module to get Migrate to see Drupal Developer YAML adjustments. Tweaking Drupal Developer Feed Utilizing JSON API Drupal Developer main path used for our migration is (the place sourcesite.com is a sound web site) Drupal 10 Upkeep and Assist Service http(s) Drupal 10 Upkeep and Assist Service//sourcesite.com/api/node/article?_format=api_json It will show a JSON feed of all articles. Drupal Developer articles have associated entities. Drupal Developer field_image discipline factors to associated photographs, and Drupal Developer uid/writer discipline factors to associated customers. To view Drupal Developer associated photographs, we are able to alter Drupal Developer path as follows Drupal 10 Upkeep and Assist Service http(s) Drupal 10 Upkeep and Assist Service//sourcesite.com/api/node/article?_format=api_json&embrace=field_image That can add an included array to Drupal Developer feed that comprises all Drupal Developer particulars about every of Drupal Developer associated photographs. This manner we received’t have to question once more to get that data, it would all be accessible in Drupal Developer unique feed. I created a gist with an instance of what Drupal Developer JSON API output at this path would appear to be. To incorporate authors as properly, Drupal Developer path would appear to be Drupal Developer following. In JSON API you’ll be able to observe Drupal Developer associated data down via as many ranges as obligatory Drupal 10 Upkeep and Assist Service http(s) Drupal 10 Upkeep and Assist Service//sourcesite.com/api/node/article?_format=api_json&embrace=field_image,uid/writer Swapping out Drupal Developer area in Drupal Developer instance Drupal 10 module could also be Drupal Developer solely change wanted to Drupal Developer instance Drupal 10 module, and it is a good place to start out. Learn Drupal Developer JSON API Drupal 10 module documentation to discover different adjustments you may need to make to that configuration to restrict Drupal Developer fields which might be returned, or kind or filter Drupal Developer checklist. Manually check Drupal Developer path you find yourself with in your browser or with a software like Postman to be sure you get legitimate JSON at that path. Migrating From JSON I had numerous hassle discovering any documentation about find out how to migrate into 8 from a JSON supply. I lastly discovered some in Drupal Developer Migrate Plus Drupal 10 module. Drupal Developer relaxation I found out from my earlier work on Drupal Developer unique JSON Supply Drupal 10 module (now deprecated) and by trial and error. Right here’s Drupal Developer supply part of Drupal Developer YAML I ended up with, when migrating from one other 8 web site that was utilizing JSON API. supply Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service url data_fetcher_plugin Drupal 10 Upkeep and Assist Service http data_parser_plugin Drupal 10 Upkeep and Assist Service json urls Drupal 10 Upkeep and Assist Service http Drupal 10 Upkeep and Assist Service//sourcesite.com/api/node/article?_format=api_json ids Drupal 10 Upkeep and Assist Service nid Drupal 10 Upkeep and Assist Service kind Drupal 10 Upkeep and Assist Service integer item_selector Drupal 10 Upkeep and Assist Service knowledge/ fields Drupal 10 Upkeep and Assist Service – identify Drupal 10 Upkeep and Assist Service nid label Drupal 10 Upkeep and Assist Service ‘Nid’ selector Drupal 10 Upkeep and Assist Service /attributes/nid – identify Drupal 10 Upkeep and Assist Service vid label Drupal 10 Upkeep and Assist Service ‘Vid’ selector Drupal 10 Upkeep and Assist Service /attributes/vid – identify Drupal 10 Upkeep and Assist Service uuid label Drupal 10 Upkeep and Assist Service ‘Uuid’ selector Drupal 10 Upkeep and Assist Service /attributes/uuid – identify Drupal 10 Upkeep and Assist Service title label Drupal 10 Upkeep and Assist Service ‘Title’ selector Drupal 10 Upkeep and Assist Service /attributes/title – identify Drupal 10 Upkeep and Assist Service created label Drupal 10 Upkeep and Assist Service ‘Created’ selector Drupal 10 Upkeep and Assist Service /attributes/created – identify Drupal 10 Upkeep and Assist Service modified label Drupal 10 Upkeep and Assist Service ‘Modified’ selector Drupal 10 Upkeep and Assist Service /attributes/modified – identify Drupal 10 Upkeep and Assist Service standing label Drupal 10 Upkeep and Assist Service ‘Standing’ selector Drupal 10 Upkeep and Assist Service /attributes/standing – identify Drupal 10 Upkeep and Assist Service sticky label Drupal 10 Upkeep and Assist Service ‘Sticky’ selector Drupal 10 Upkeep and Assist Service /attributes/sticky – identify Drupal 10 Upkeep and Assist Service promote label Drupal 10 Upkeep and Assist Service ‘Promote’ selector Drupal 10 Upkeep and Assist Service /attributes/promote – identify Drupal 10 Upkeep and Assist Service default_langcode label Drupal 10 Upkeep and Assist Service ‘Default Langcode’ selector Drupal 10 Upkeep and Assist Service /attributes/default_langcode – identify Drupal 10 Upkeep and Assist Service path label Drupal 10 Upkeep and Assist Service ‘Path’ selector Drupal 10 Upkeep and Assist Service /attributes/path – identify Drupal 10 Upkeep and Assist Service physique label Drupal 10 Upkeep and Assist Service ‘Physique’ selector Drupal 10 Upkeep and Assist Service /attributes/physique – identify Drupal 10 Upkeep and Assist Service uid label Drupal 10 Upkeep and Assist Service ‘Uid’ selector Drupal 10 Upkeep and Assist Service /relationships/uid – identify Drupal 10 Upkeep and Assist Service field_image label Drupal 10 Upkeep and Assist Service ‘Subject picture’ selector Drupal 10 Upkeep and Assist Service /relationships/field_image One after the other, I’ll make clear a few of Drupal Developer crucial components in Drupal Developer supply configuration. File-based imports, like JSON and XML use Drupal Developer similar sample now. Drupal Developer principal variation is Drupal Developer parser, and for JSON and XML, Drupal Developer parser is in Drupal Developer Migrate Plus Drupal 10 module Drupal 10 Upkeep and Assist Service supply Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service url data_fetcher_plugin Drupal 10 Upkeep and Assist Service http data_parser_plugin Drupal 10 Upkeep and Assist Service json Drupal Developer url is Drupal Developer place the place Drupal Developer JSON is being served. There could possibly be a couple of URL, however on this case there is just one. Studying via a number of URLs remains to be just about untested, however I didn’t want that Drupal 10 Upkeep and Assist Service urls Drupal 10 Upkeep and Assist Service http Drupal 10 Upkeep and Assist Service//sourcesite.com/api/node/article?_format=api_json We have to establish Drupal Developer distinctive id in Drupal Developer feed. When pulling nodes from , it’s Drupal Developer nid Drupal 10 Upkeep and Assist Service ids Drupal 10 Upkeep and Assist Service nid Drupal 10 Upkeep and Assist Service kind Drupal 10 Upkeep and Assist Service integer We have now to inform Migrate the place in Drupal Developer feed to look to search out Drupal Developer knowledge we need to learn. A software like Postman (talked about above) helps determine how Drupal Developer knowledge is configured. When Drupal Developer supply is utilizing JSON API, it’s an array with a key of information Drupal 10 Upkeep and Assist Service item_selector Drupal 10 Upkeep and Assist Service knowledge/ We additionally want to inform Migrate what Drupal Developer fields are. In Drupal Developer JSON API, they’re nested under Drupal Developer principal merchandise selector, so they’re prefixed utilizing an xpath sample to search out them. Drupal Developer following configuration lets us seek advice from them later by a easy identify as a substitute of Drupal Developer full path to Drupal Developer discipline. I feel Drupal Developer label would solely come into play in case you have been utilizing a UI Drupal 10 Upkeep and Assist Service fields Drupal 10 Upkeep and Assist Service – identify Drupal 10 Upkeep and Assist Service nid label Drupal 10 Upkeep and Assist Service ‘Nid’ selector Drupal 10 Upkeep and Assist Service /attributes/nid Establishing Drupal Developer Picture Migration Course of For Drupal Developer easy instance in Drupal Developer Github Drupal 10 module we’ll simply attempt to import nodes with their photographs. We’ll set Drupal Developer writer to an current writer and ignore taxonomy. We’ll do that by creating two migrations towards Drupal Developer JSON API endpoint, first one to select up Drupal Developer associated photographs, after which a second one to select up Drupal Developer nodes. Most fields in Drupal Developer picture migration simply want Drupal Developer similar values they’re pulling in from Drupal Developer distant file, since they have already got legitimate 8 values, however Drupal Developer uri worth has an area URL that must be adjusted to level to Drupal Developer full path to Drupal Developer file supply so Drupal Developer file may be downloaded or copied into Drupal Developer new web site. Suggestions for the way finest emigrate photographs have modified over time as 8 has matured. As of 8.2.3 there are two fundamental methods to course of photographs, one for native photographs and a unique one for distant photographs. Drupal Developer course of steps are totally different than in earlier examples I discovered. There may be not numerous documentation about this. I lastly discovered a .org thread the place Drupal Developer file import adjustments have been added to core and did some trial and error on my migration to get it working. For distant photographs Drupal 10 Upkeep and Assist Service supply Drupal 10 Upkeep and Assist Service … constants Drupal 10 Upkeep and Assist Service source_base_path Drupal 10 Upkeep and Assist Service ‘http Drupal 10 Upkeep and Assist Service//sourcesite.com/’ course of Drupal 10 Upkeep and Assist Service filename Drupal 10 Upkeep and Assist Service filename filemime Drupal 10 Upkeep and Assist Service filemime standing Drupal 10 Upkeep and Assist Service standing created Drupal 10 Upkeep and Assist Service timestamp modified Drupal 10 Upkeep and Assist Service timestamp uid Drupal 10 Upkeep and Assist Service uid uuid Drupal 10 Upkeep and Assist Service id source_full_path Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service concat delimiter Drupal 10 Upkeep and Assist Service / supply Drupal 10 Upkeep and Assist Service – ‘constants/source_base_path’ – url uri Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service obtain supply Drupal 10 Upkeep and Assist Service – ‘@source_full_path’ – uri guzzle_options Drupal 10 Upkeep and Assist Service base_uri Drupal 10 Upkeep and Assist Service ‘constants/source_base_path’ For native photographs change it barely Drupal 10 Upkeep and Assist Service supply Drupal 10 Upkeep and Assist Service … constants Drupal 10 Upkeep and Assist Service source_base_path Drupal 10 Upkeep and Assist Service ‘http Drupal 10 Upkeep and Assist Service//sourcesite.com/’ course of Drupal 10 Upkeep and Assist Service filename Drupal 10 Upkeep and Assist Service filename filemime Drupal 10 Upkeep and Assist Service filemime standing Drupal 10 Upkeep and Assist Service standing created Drupal 10 Upkeep and Assist Service timestamp modified Drupal 10 Upkeep and Assist Service timestamp uid Drupal 10 Upkeep and Assist Service uid uuid Drupal 10 Upkeep and Assist Service id source_full_path Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service concat delimiter Drupal 10 Upkeep and Assist Service / supply Drupal 10 Upkeep and Assist Service – ‘constants/source_base_path’ – url uri Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service file_copy supply Drupal 10 Upkeep and Assist Service – ‘@source_full_path’ – uri Drupal Developer above configuration works as a result of Drupal Developer 8 supply uri worth is already in Drupal Developer 8 format, http Drupal 10 Upkeep and Assist Service//public Drupal 10 Upkeep and Assist Serviceimage.jpg. If migrating from a pre- 7 or non- supply, that uri received’t exist in Drupal Developer supply. In that case you would wish to regulate Drupal Developer course of for Drupal Developer uri worth to one thing extra like this Drupal 10 Upkeep and Assist Service supply Drupal 10 Upkeep and Assist Service constants Drupal 10 Upkeep and Assist Service is_public Drupal 10 Upkeep and Assist Service true … course of Drupal 10 Upkeep and Assist Service … source_full_path Drupal 10 Upkeep and Assist Service – plugin Drupal 10 Upkeep and Assist Service concat delimiter Drupal 10 Upkeep and Assist Service / supply Drupal 10 Upkeep and Assist Service – ‘constants/source_base_path’ – url – plugin Drupal 10 Upkeep and Assist Service urlencode destination_full_path Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service file_uri supply Drupal 10 Upkeep and Assist Service – url – file_directory_path – temp_directory_path – ‘constants/is_public’ uri Drupal 10 Upkeep and Assist Service plugin Drupal 10 Upkeep and Assist Service file_copy supply Drupal 10 Upkeep and Assist Service – ‘@source_full_path’ – ‘@destination_full_path’ Run Drupal Developer Migration Upon getting Drupal Developer proper data in Drupal Developer YAML recordsdata, allow Drupal Developer Drupal 10 module. On Drupal Developer command line, kind this Drupal 10 Upkeep and Assist Service drush migrate-status You need to see two migrations accessible to run. Drupal Developer YAML recordsdata embrace migration dependencies and that may drive them to run in Drupal Developer proper order. To run them, kind Drupal 10 Upkeep and Assist Service drush mi –all Drupal Developer first migration is import_Drupal 10_images. This needs to be run earlier than import_Drupal 10_articles, as a result of field_image on every article is a reference to a picture file. This picture migration makes use of Drupal Developer path that features Drupal Developer associated picture particulars, and simply ignores Drupal Developer main feed data. Drupal Developer second migration is import_Drupal 10_articles. This pulls in Drupal Developer article data utilizing Drupal Developer similar url, this time with out Drupal Developer included photographs. When every article is pulled in, it’s matched to Drupal Developer picture that was pulled in beforehand. You possibly can run one migration at a time, and even only one merchandise at a time, whereas testing this out Drupal 10 Upkeep and Assist Service drush migrate-import import_Drupal 10_images –limit=1 You possibly can rollback and take a look at once more. drush migrate-rollback import_Drupal 10_images If all goes because it ought to, it is best to be capable of navigate to Drupal Developer content material checklist in your new web site and see Drupal Developer content material that Migrate pulled in, full with picture fields. There may be extra details about Drupal Developer Migrate API on .org. What Subsequent? There are many different issues you would do to construct on this. A 8 to 8 migration is less complicated than many different issues, since Drupal Developer supply knowledge is usually already in Drupal Developer proper format for Drupal Developer goal. If you wish to migrate in customers or taxonomy phrases together with Drupal Developer nodes, you’ll create separate migrations for every of them that may run earlier than Drupal Developer node migration. In every of them, you’d modify Drupal Developer embrace worth in Drupal Developer JSON API path to drag Drupal Developer related data into Drupal Developer feed, then replace Drupal Developer YAML file with Drupal Developer obligatory steps to course of Drupal Developer associated entities. You might additionally attempt pulling content material from older variations of right into a 8 web site. If you wish to pull every little thing from one 6 web site into a brand new 8 web site you’ll simply use Drupal Developer inbuilt to migration capabilities, however if you wish to selectively pull some objects from an earlier model of into a brand new 8 web site this system is likely to be helpful. Drupal Developer JSON API Drupal 10 module received’t work on older variations, so Drupal Developer supply knowledge must be processed in another way, relying on what you utilize to arrange Drupal Developer older web site to serve JSON. You may have to dig into Drupal Developer migration code constructed into core for to migrations to see how 6 or 7 knowledge needed to be massaged to get it into Drupal Developer proper format for 8. Lastly, you’ll be able to adapt Drupal Developer above strategies to drag any sort of non- JSON knowledge right into a 8 web site. You’ll simply have to regulate Drupal Developer selectors to match Drupal Developer format of Drupal Developer knowledge supply, and do extra work in Drupal Developer course of steps to therapeutic massage Drupal Developer values into Drupal Developer format that 8 expects. Drupal Developer 8 Migrate Drupal 10 module and its contributed helpers are getting increasingly polished, and determining find out how to pull in content material from JSON sources could possibly be an enormous profit for a lot of websites. If you wish to assist transfer Drupal Developer Migrate effort ahead, you’ll be able to dig into Drupal Developer Migrate in core initiative and points on .org. Drupal 10 Improvement and Assist
Drupal 10 Assist: Drupal 10 Upkeep and Assist Service Pull Content material From a Distant 8 Website Utilizing Migrate and JSON API

Call Us: 1(800)730-2416
Pixeldust is a 20-year-old web development agency specializing in Drupal and WordPress and working with clients all over the country. With our best in class capabilities, we work with small businesses and fortune 500 companies alike. Give us a call at 1(800)730-2416 and let’s talk about your project.

FREE Drupal SEO Audit
Test your site below to see which issues need to be fixed. We will fix them and optimize your Drupal site 100% for Google and Bing. (Allow 30-60 seconds to gather data.)
Drupal 10 Assist: Drupal 10 Upkeep and Assist Service Pull Content material From a Distant 8 Website Utilizing Migrate and JSON API
On-Site Drupal SEO Master Setup
We make sure your site is 100% optimized (and stays that way) for the best SEO results.
With Pixeldust On-site (or On-page) SEO we make changes to your site’s structure and performance to make it easier for search engines to see and understand your site’s content. Search engines use algorithms to rank sites by degrees of relevance. Our on-site optimization ensures your site is configured to provide information in a way that meets Google and Bing standards for optimal indexing.
This service includes:
- Pathauto install and configuration for SEO-friendly URLs.
- Meta Tags install and configuration with dynamic tokens for meta titles and descriptions for all content types.
- Install and fix all issues on the SEO checklist module.
- Install and configure XML sitemap module and submit sitemaps.
- Install and configure Google Analytics Module.
- Install and configure Yoast.
- Install and configure the Advanced Aggregation module to improve performance by minifying and merging CSS and JS.
- Install and configure Schema.org Metatag.
- Configure robots.txt.
- Google Search Console setup snd configuration.
- Find & Fix H1 tags.
- Find and fix duplicate/missing meta descriptions.
- Find and fix duplicate title tags.
- Improve title, meta tags, and site descriptions.
- Optimize images for better search engine optimization. Automate where possible.
- Find and fix the missing alt and title tag for all images. Automate where possible.
- The project takes 1 week to complete.
