# WordLift Documentation > --- url: https://docs.wordlift.io/ --- # Overview | WordLift Developer Documentation Version Notice Latest Release: 3.7.0 (October 2025) - Now with Enhanced Google Knowledge Graph integration, AI Sub-Agent workflows via MCP, and Google Discover analytics! # ๐Ÿ‘‹ Welcome to WordLift AI-Powered Platform / Knowledge Graph Builder for SEO & Marketing Teams SEO AutomationMarketing AutomationAI-Powered ## What's WordLift, anyway?[โ€‹](#whats-wordlift-anyway "Direct link to What's WordLift, anyway?") Think of WordLift as your AI-powered marketing companion that turns your content into a powerful Knowledge Graph. But what does that actually mean? Imagine you're building with LEGOยฎ blocks. Your content pieces are like individual LEGOยฎ blocks, and WordLift helps you: * ๐Ÿ”— Connect them in meaningful ways (that's the Knowledge Graph part) * ๐Ÿ” Make them discoverable by both humans and machines * ๐Ÿค– Turn them into automated marketing workflows and AI applications ## How does it work?[โ€‹](#how-does-it-work "Direct link to How does it work?") ### The Secret Sauce: Semantic Technology[โ€‹](#the-secret-sauce-semantic-technology "Direct link to The Secret Sauce: Semantic Technology") Remember the LEGOยฎ analogy? Here's what happens behind the scenes: 1. **Analyze Search Demand** ๐Ÿ” * [Google Sheets Add-on](/seo-add-on-google-sheets/introduction/) for keyword research 2. **Build Knowledge Graph** ๐Ÿ—๏ธ * [Analytics Import](/knowledge-graph/analytics-api/) for performance tracking * [Botify Connector](/knowledge-graph/botify/) for enterprise insights * [Sitemap Import](/knowledge-graph/sitemap-import/) for existing content * [Product Knowledge Graph Builder](/product-knowledge-graph-builder/introduction/) for e-commerce using Google Merchant Center * [WordLift Cloud](/cloud/) for entity annotation 3. **Optimize & Create** โœจ * [Agent WordLift](/agent-wordlift/) for AI SEO optimization * [Content Generation](/content-generation/) for creating new content at scale * [AI & LLM Integrations](/llm-connectors/wordlift-reader/) for building AI applications using LlamaIndex ๐Ÿฆ™ 4. **Automate, Scale & Reporting** ๐Ÿš€ * [Zapier Integration](/marketing-automation/zapier/introduction/) for workflow automation * [Power Automate Connector](/marketing-automation/power-automate/introduction/) for Microsoft ecosystem * [Looker Studio Connector](/looker-studio-connector/introduction/) for semantic analytics and dashboarding ## Who's it for?[โ€‹](#whos-it-for "Direct link to Who's it for?") ### ๐Ÿ› ๏ธ Technical Folks[โ€‹](#๏ธ-technical-folks "Direct link to ๐Ÿ› ๏ธ Technical Folks") You love APIs, code, and building things? We've got: * [API Reference](/category/api/) for custom development * [GraphQL API](/api/graphql/graphql-support/) for flexible queries * Custom integrations and enterprise solutions ### ๐Ÿ“ Content Teams[โ€‹](#-content-teams "Direct link to ๐Ÿ“ Content Teams") More into creating great content? Use our: * [Agent WordLift](/agent-wordlift/) for AI SEO optimization * [WordPress Plugin](/wordpress-plugin/) for easy content optimization * [WooCommerce SEO](/woocommerce/introduction/) for e-commerce * [Google Sheets Add-on](/seo-add-on-google-sheets/introduction/) for keyword research ### ๐ŸŽฏ Marketing Teams[โ€‹](#-marketing-teams "Direct link to ๐ŸŽฏ Marketing Teams") Need to show results? Get: * [Analytics Import](/knowledge-graph/analytics-api/) for performance tracking * [Zapier Integration](/marketing-automation/zapier/introduction/) for automation * [Looker Studio Connector](/looker-studio-connector/introduction/) for reporting ### ๐Ÿข Enterprise Teams[โ€‹](#-enterprise-teams "Direct link to ๐Ÿข Enterprise Teams") Looking to scale? Access: * [WordLift Cloud](/cloud/) for enterprise deployment * [Botify Connector](/knowledge-graph/botify/) for enterprise SEO * [Power Automate](/marketing-automation/power-automate/introduction/) for Microsoft integration ## Quick Start Options[โ€‹](#quick-start-options "Direct link to Quick Start Options") * AI SEO Agent * API * Google Sheets ``` # Start with Agent WordLift 1. Open Agent WordLift 2. Get instant SEO optimization 3. Let AI work for you! ``` [Start with Agent WordLift โ†’](/agent-wordlift/) ``` # For developers & custom integrations pip install wordlift-client # Python, Node.js, PHP clients available ``` [Explore API Documentation โ†’](/category/api/) ``` # Start with SEO analysis 1. Install the Google Sheets add-on 2. Connect your Search Console 3. Analyze your search data ``` [Start SEO Analysis โ†’](/seo-add-on-google-sheets/introduction/) ## Key Features[โ€‹](#key-features "Direct link to Key Features") ### ๐Ÿ” Search Intelligence[โ€‹](#-search-intelligence "Direct link to ๐Ÿ” Search Intelligence") * Advanced entity-based gap analysis for SEO * AI SEO Agent for search intent insights * Tailored strategies for content discovery and visibility ### ๐Ÿ—๏ธ Knowledge Graph[โ€‹](#๏ธ-knowledge-graph "Direct link to ๐Ÿ—๏ธ Knowledge Graph") * Fully automated RDF-based Knowledge Graph * Schema.org markup for enhanced search visibility * Advanced entity creation and management * Product catalog enrichment with structured data and support for GS1 Digital Link ### ๐Ÿค– AI & Content Automation[โ€‹](#-ai--content-automation "Direct link to ๐Ÿค– AI & Content Automation") * Scalable content generation and optimization workflows * Neural search and Graph Retrieval Augmented Generation (RAG) * AI-powered SEO Agent for smarter workflows * End-to-end workflow automation with integrations (Zapier, Power Automate) ## Ready to start?[โ€‹](#ready-to-start "Direct link to Ready to start?") Choose your path: ### ๐Ÿš€ Quick Start (No Code)[โ€‹](#-quick-start-no-code "Direct link to ๐Ÿš€ Quick Start (No Code)") 1. [Try Agent WordLift](/agent-wordlift/) for instant SEO optimization 2. [Use Google Sheets Add-on](/seo-add-on-google-sheets/introduction/) for search analysis 3. [Install WordPress Plugin](/wordpress-plugin/) for content optimization ### ๐Ÿ’ป Developer Path[โ€‹](#-developer-path "Direct link to ๐Ÿ’ป Developer Path") ``` pip install wordlift-client # It's that simple! ``` Then [grab your API key](https://wordlift.io/pricing/) You can also jumpstart a Knowledge Graph using our [getting-started-notebook](https://github.com/wordlift/getting-started-notebook): ``` # Clone the repository git clone https://github.com/wordlift/getting-started-notebook.git cd getting-started-notebook # Install dependencies using Poetry poetry install # Configure with your WordLift Key and sitemap URL # Then run the notebook jupyter notebook getting_started_notebook.ipynb ``` ### ๐Ÿค Enterprise Setup[โ€‹](#-enterprise-setup "Direct link to ๐Ÿค Enterprise Setup") [Let's talk!](https://wordlift.io/demo) We'll create a custom plan for you. --- ๐ŸŽฎ **Ready to level up your marketing game?**Start by [understanding what your audience wants](/seo-add-on-google-sheets/introduction/) โ†’ Need help? [Drop us a line](mailto:support@wordlift.io) ๐Ÿ’Œ --- --- url: https://docs.wordlift.io/agent-wordlift/ --- # Overview | WordLift Developer Documentation Version Notice Latest Release: 3.8.0 (November 2025) - Now with AI-accessible documentation (llms.txt/llms-full.txt), Google Search Console URL Inspections API, Enhanced Google Knowledge Graph integration and AI Sub-Agent workflows via MCP! # ๐Ÿค– Welcome to Agent WordLift - Your Marketing & AI SEO Agent Your AI-Powered SEO Companion for Smart Content Optimization SEO AutomationContent IntelligenceAI-Powered ## Quick Start Options[โ€‹](#quick-start-options "Direct link to Quick Start Options") * Optimize Content * Social Media * Product Content ``` # Optimize Your Content 1. Check content-query match 2. Create internal links 3. Get SEO optimization tips ``` [Start Optimizing โ†’](/agent-wordlift/workflows/analyzing-query-match/) ``` # Create Social Content 1. Generate LinkedIn posts 2. Create Twitter threads 3. Build content buckets ``` [Start Creating โ†’](/agent-wordlift/workflows/create-social-media-posts/) ``` # Enhance Product Content 1. Write SEO descriptions 2. Generate product highlights 3. Build internal links ``` [Start Writing โ†’](/agent-wordlift/workflows/create-product-description/) ## Explore Our Tools[โ€‹](#explore-our-tools "Direct link to Explore Our Tools") ### ๐ŸŽฏ Core Features[โ€‹](#-core-features "Direct link to ๐ŸŽฏ Core Features") * [Getting Started Guide](/agent-wordlift/getting-started/) \- Your first steps with Agent WordLift * [Tips & Best Practices](/agent-wordlift/tips/) \- Get the most out of the AI * [Feature Highlights](/agent-wordlift/highlights/) \- What makes Agent WordLift special * [Prompt Library](/agent-wordlift/prompt-reference/) \- Ready-to-use prompts ### ๐Ÿ› ๏ธ Popular Workflows[โ€‹](#๏ธ-popular-workflows "Direct link to ๐Ÿ› ๏ธ Popular Workflows") #### Content Strategy[โ€‹](#content-strategy "Direct link to Content Strategy") * [Keyword Research](/agent-wordlift/workflows/keyword-discovery/) * [GSC Integration](/agent-wordlift/workflows/google-search-console/) * [Enhanced Entity Research](/agent-wordlift/workflows/enhanced-entity-research/) * [Instagram Indexing Analysis](/agent-wordlift/workflows/instagram-indexing-analysis/) * [Reddit Content Research](/agent-wordlift/workflows/research-content-ideas/) * [Newsletter Ideas](/agent-wordlift/workflows/ideas-for-newsletters/) * [Local SEO Analysis](/agent-wordlift/workflows/local-seo-analysis/) #### Content Optimization[โ€‹](#content-optimization "Direct link to Content Optimization") * [Content Quality Evaluation](/agent-wordlift/workflows/content-evaluation/) * [Query Match Analysis](/agent-wordlift/workflows/analyzing-query-match/) * [Internal Linking](/agent-wordlift/workflows/create-internal-links/) * [Authorship Markup](/agent-wordlift/workflows/adding-authorship-markup/) * [Cannibalization Prevention](/agent-wordlift/workflows/keyword-cannibalization/) ### ๐ŸŽจ Content Creation[โ€‹](#-content-creation "Direct link to ๐ŸŽจ Content Creation") #### Product Content[โ€‹](#product-content "Direct link to Product Content") * [Product Descriptions](/agent-wordlift/workflows/create-product-description/) * [FAQs Generation](/agent-wordlift/workflows/faq/) #### Social Media[โ€‹](#social-media "Direct link to Social Media") * [Social Posts](/agent-wordlift/workflows/create-social-media-posts/) * [Content Buckets](/agent-wordlift/workflows/create-social-media-content-buckets/) ## Extended Features[โ€‹](#extended-features "Direct link to Extended Features") ### ๐Ÿ”Œ Integrations[โ€‹](#-integrations "Direct link to ๐Ÿ”Œ Integrations") * [Available Integrations](/agent-wordlift/integrations/) * [Data Privacy & Security](/agent-wordlift/data-privacy-and-security/) ### ๐Ÿ“š Resources[โ€‹](#-resources "Direct link to ๐Ÿ“š Resources") * [FAQ](/agent-wordlift/faq/) * [Workflows](/agent-wordlift/workflows/) ### ๐Ÿ’ก Support[โ€‹](#-support "Direct link to ๐Ÿ’ก Support") * [Getting Help](/agent-wordlift/getting-started/#getting-help) * [Community](https://wordlift.io/community) Development Status Agent WordLift is constantly evolving. While it's already powerful, we're always working to make it better. Remember to verify critical information and use it as a smart assistant rather than a replacement for human judgment. --- ๐ŸŽฎ **Ready to supercharge your SEO?** [Get started with your first optimization โ†’](/agent-wordlift/getting-started/) Need help? [Check our FAQ](/agent-wordlift/faq/) or [drop us a line](mailto:support@wordlift.io) ๐Ÿ’Œ --- --- url: https://docs.wordlift.io/agent-wordlift/data-privacy-and-security/ --- # ๐Ÿ›ก๏ธ Data Privacy and Security | WordLift Developer Documentation # Our Commitment to Your Data At WordLift, we take data privacy and security very seriously. We are committed to **safeguarding any data entrusted to us** and have implemented **robust security measures** to ensure its protection. ## Our Security Measures[โ€‹](#our-security-measures "Direct link to Our Security Measures") * **Secure access controls:** Each user has a dedicated, temporary workspace that stores files only during active use. These workspaces are automatically deleted after inactivity, minimizing data retention. * **Encryption at rest:** All data sources connected to WordLift are encrypted using the industry-standard AES-256 algorithm, including any PII (personally identifiable information) that may be detected, such as names, addresses, or social security numbers. This ensures confidentiality even if storage systems are compromised. ## Our Service Provider's Data Security[โ€‹](#our-service-providers-data-security "Direct link to Our Service Provider's Data Security") We partner with Microsoft, which adheres to the following data privacy principles for the [Azure OpenAI Service](https://azure.microsoft.com/en-us/products/ai-services/openai-service): * **No data usage for model training:** Azure OpenAI does not use any data you submit (prompts, completions, embeddings, or training data) to train or improve its models. This ensures your data is used solely for the intended purpose within WordLift's functionalities. * **Limited data retention:** Azure OpenAI stores your prompts and completions for up to 30 days solely for abuse monitoring and human review. This data is deleted unless legal requirements dictate otherwise. Customers can also apply to disable abuse monitoring, in which case their data is not stored. WordLift doesnโ€™t have access to your prompts and completions at all unless we mutually agree to do so to improve the service. * **Industry-standard security practices:** Azure OpenAI employs rigorous security measures, including: * **Double encryption at rest:** Your data is encrypted by default with Microsoft's AES-256 and can be optionally encrypted with your key. * **Limited human access:** Only authorized Microsoft personnel can access flagged data for abuse monitoring using secure methods with strict access controls. ## Transparency and Access to Information[โ€‹](#transparency-and-access-to-information "Direct link to Transparency and Access to Information") We believe in transparency and empower you to access information about your data and how it is handled. * **Azure OpenAI Service data privacy:** For further details on Azure OpenAI's security measures and data usage policies, please refer to their documentation: [Azure OpenAI Data Privacy](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/data-privacy) * **WordLift's terms of service:** Our terms of service outline our commitment to data privacy and security in greater detail. You can access them here: [WordLift Terms of Service](https://wordlift.io/terms-of-service/) * **WordLiftโ€™s Privacy Policy:** Other companies track your conversations to create detailed profiles about you. We developed Agent WordLift to adhere to a strict privacy policy. You can access it here: [WordLift Privacy Policy](https://wordlift.io/privacy-policy/) By choosing WordLift, you can be confident that your data is protected by industry-leading security practices and handled with the utmost care. We are committed to providing all our users with a safe and secure environment. --- --- url: https://docs.wordlift.io/agent-wordlift/faq/ --- # ๐Ÿ™‹๐Ÿฝโ€โ™€๏ธ Frequently Asked Questions | WordLift Developer Documentation # Frequently Asked Questions ## How does Agent WordLift work?[โ€‹](#how-does-agent-wordlift-work "Direct link to How does Agent WordLift work?") Agent WordLift is [a smart assistant for SEO](https://wordlift.io/blog/en/autonomous-ai-agents-in-seo/). It leverages AI to understand and enhance web content, making it more discoverable and relevant to users and search engines. Its use of a knowledge graph, NLP, and semantic SEO techniques, combined with continuous learning and automation, makes it **a powerful tool for improving online visibility and engagement**. **[Agent WordLift](https://wordlift.io/ai-seo-agent/) uses knowledge graph data, WordLift APIs, and various language models in synergy**. At its core, it is a Multi-Agent System (MAS) that uses a knowledge graph to understand and organize information in a structured form, like a human brain's _long-term memory_. It then uses the language model and APIs to process queries and content in natural language. ## What can I do with Agent WordLift?[โ€‹](#what-can-i-do-with-agent-wordlift "Direct link to What can I do with Agent WordLift?") [Agent WordLift](https://wordlift.io/ai-seo-agent/) is designed to **automate various tasks to enhance SEO and content marketing**. Here are a few types of tasks that you can automate using Agent WordLift: 1. **Content Analysis**: Agent WordLift can analyze text or webpages to extract meaningful insights, such as entities and keywords. This helps understand the content's focus and how it can be optimized for better search engine visibility. 2. **Entity and Keyword Extraction**: It can automatically identify and extract entities and keywords from content, making it easier to optimize articles, blog posts, and web pages for specific topics or search queries. 3. **Content Expansion**: Based on specified entities, Agent WordLift can expand the content of a given URL, adding depth and detail to ensure comprehensive coverage of a topic. 4. **SEO Score Analysis**: The agent can assess the SEO relevance and trustworthiness of content about specific keywords and search intent, providing insights for optimization. 5. **Keyword Suggestions**: It generates keyword suggestions to improve SEO and content discoverability, helping identify related keywords, their search volume, and other relevant metrics. 6. **Entity Gap Analysis**: Agent WordLift can identify the gap between entities in your content and those in top-ranking content for specific queries, guiding content enhancement. 7. **Content Creation**: Leveraging insights from domain-specific searches and broad analyses, Agent WordLift can assist in creating new content that is optimized for both users and search engines. 8. **Fact-Checking**: The agent can check statements or claims, assessing their accuracy and providing a factuality score. 9. **Google Trends Analysis**: Agent WordLift integrates with the WordLift Google Trends API to analyze the seasonality of keywords. This feature allows the agent to understand and leverage the seasonality of search terms, providing insights into peak times and trends for better content planning and optimization. By automating these tasks, Agent WordLift significantly streamlines the SEO and content optimization process, making it easier for content creators and marketers to achieve their goals. ## What is the technology behind the Agent? Which AI model are you using here?[โ€‹](#what-is-the-technology-behind-the-agent-which-ai-model-are-you-using-here "Direct link to What is the technology behind the Agent? Which AI model are you using here?") **Agent WordLift leverages a Multi-Agent System (MAS) powered by Azure OpenAI Service**. This innovative architecture allows us to dynamically select the most suitable model for each task. We utilize a diverse set of models, including the latest versions of the GPT-4 family (both 8k and 32k parameter versions) and GPT-3.5 family. This flexibility offers several advantages: * **Tailored Performance**: We can match the model to your specific needs, considering factors like performance, size, and cost. * **Vendor Independence**: The MAS architecture avoids vendor lock-in, allowing us to seamlessly integrate future advancements across the AI landscape. * **Rapid Innovation**: We can quickly incorporate cutting-edge models into Agent WordLift, ensuring you benefit from the latest breakthroughs. Additionally, we actively explore the potential of open-source models for future integration. ## How much does Agent WordLift cost?[โ€‹](#how-much-does-agent-wordlift-cost "Direct link to How much does Agent WordLift cost?") **Agent WordLift is included in our Professional, Business, and Enterprise plans**. Buying the license will give you access to the Agent with a certain number of interactions. [Go to the pricing and get started](https://wordlift.io/pricing/)! ## Where can I see the interaction limits?[โ€‹](#where-can-i-see-the-interaction-limits "Direct link to Where can I see the interaction limits?") **We will notify you within the chat when you have reached your interaction limits.** Your subscription will remain active, and the number of interactions will be reset at the beginning of the new month. ## How do I import the output into a Google Doc?[โ€‹](#how-do-i-import-the-output-into-a-google-doc "Direct link to How do I import the output into a Google Doc?") To easily import the Agentโ€™s output into a Google Doc, follow these steps: 1. [Enable Markdown support](https://support.google.com/docs/answer/12014036) in Google Drive. 2. Copy the output by clicking the clipboard icon located below the text. 3. In your Google Doc, go to **Edit** \> **Paste from Markdown** to paste the content in markdown format. This method ensures the formatting is preserved and seamless. ## What are the ethical implications of using Agent WordLift?[โ€‹](#what-are-the-ethical-implications-of-using-agent-wordlift "Direct link to What are the ethical implications of using Agent WordLift?") The ethical implications of using Agent WordLift revolve around its **commitment to data privacy and security**, ensuring that user information is treated with the utmost care. WordLift employs **advanced encryption standards (AES) to protect data**, emphasizing the confidentiality of user information. The platform adheres to **strict data retention policies**, which are kept only as long as necessary to achieve the purposes for which they were collected. This approach aligns with ethical standards, **prioritizing user privacy and minimizing data exposure risks**. In addition, **WordLift's [privacy policy](https://wordlift.io/privacy-policy/) transparently explains** how data is collected, used, and protected, fostering trust between the platform and its users. By partnering with reputable organizations such as Microsoft and OpenAI, WordLift further assures users of its commitment to [ethical practices in developing and applying AI](https://wordlift.io/blog/en/ethical-ai/). The platform's ethical stance is about adhering to legal requirements and respecting user privacy, ensuring data security, and fostering a trusted environment for improving SEO and content strategies through AI. ## What is an AI SEO agent?[โ€‹](#what-is-an-ai-seo-agent "Direct link to What is an AI SEO agent?") An AI SEO agent is a specialized **artificial intelligence system designed specifically to optimize websites for search engines**. Unlike traditional SEO tools that provide data for human interpretation, [AI SEO agents](https://wordlift.io/agent/) actively analyze, recommend, and even implement SEO strategies with minimal human intervention. Agent WordLift represents the cutting edge of this technology, functioning as **an autonomous digital marketing assistant** that combines: * **Advanced language understanding** to interpret search intent and content relevance * **Knowledge graph technology** that creates structured data connections between concepts * **Predictive analytics** to anticipate search trends and user behavior * **Automated workflow execution** for implementing SEO strategies at scale The most powerful aspect of an AI SEO agent is its ability to **continuously learn and adapt** to changing search algorithms, industry trends, and specific business needs. This makes it fundamentally different from static SEO tools that require constant human updating and interpretation. [Agent WordLift](https://wordlift.io/agent/) goes beyond simply analyzing keywords or suggesting metadataโ€”it understands the semantic relationships between topics and can make intelligent decisions about content creation, optimization strategies, and technical SEO implementations. ## How can an AI SEO agent help with keyword research?[โ€‹](#how-can-an-ai-seo-agent-help-with-keyword-research "Direct link to How can an AI SEO agent help with keyword research?") [AI SEO agents](https://wordlift.io/agent/) revolutionize keyword research by providing **intelligent discovery and analysis that goes far beyond traditional keyword tools**. With Agent WordLift, keyword research becomes more efficient, strategic, and actionable in several ways: * **Intelligent traffic drop identification**: Agent WordLift can instantly identify significant traffic drops in Google Search Console data, correlate these with SERP changes, and analyze the impact of AI Overview appearances on your keywords. As shown in the attached image, this intelligent reporting takes just 3 hours of work down to 5 minutes. Learn more about [Google Search Console Integration](/agent-wordlift/workflows/google-search-console/). * **Semantic keyword clustering**: Rather than providing isolated keywords, Agent WordLift identifies meaningful relationships between search terms, grouping them by user intent and topical relevance. This helps create content that comprehensively addresses all aspects of a topic. Explore our [Keyword Discovery workflow](/agent-wordlift/workflows/keyword-discovery/) for detailed guidance. * **Competitive gap analysis**: The agent analyzes competitor content to discover valuable keyword opportunities you might be missing, providing actionable insights for content creation. Check out our [Keyword Cannibalization workflow](/agent-wordlift/workflows/keyword-cannibalization/) to prevent overlap issues. * **Search intent mapping**: Agent WordLift interprets the underlying intent behind keywords, distinguishing between informational, navigational, commercial, and transactional queries to better align content with user needs. See how to implement this in our [Query Match Analysis workflow](/agent-wordlift/workflows/analyzing-query-match/). * **Real-time SERP analysis**: The system monitors how search results are changing for your target keywords, including the detection of when AI Overviews appear for your keywords and quantification of potential click loss impact. As highlighted in the image, this AI Overview detection has transformed 2 hours of analysis into just 30 seconds. Get started with [Google Search Console Integration](/agent-wordlift/workflows/google-search-console/). * **Trend forecasting**: Using historical data and machine learning, Agent WordLift predicts emerging keyword trends before they become highly competitive, giving you a first-mover advantage. Discover more in our [Keyword Discovery workflow](/agent-wordlift/workflows/keyword-discovery/). * **Content opportunity identification**: The agent identifies gaps in your existing content and recommends specific keywords and topics to target based on their potential ROI. Learn how to leverage this with our [Content Quality Evaluation workflow](/agent-wordlift/workflows/content-evaluation/). By leveraging these capabilities, [Agent WordLift](https://wordlift.io/agent/) makes keyword research not just faster but significantly more effective, helping you discover and target the most valuable search opportunities for your specific business needs. For a complete overview of all available workflows, visit our [Workflows section](/agent-wordlift/workflows/). ## What are the benefits of using an AI SEO agent for website optimization?[โ€‹](#what-are-the-benefits-of-using-an-ai-seo-agent-for-website-optimization "Direct link to What are the benefits of using an AI SEO agent for website optimization?") Using an [AI SEO agent like Agent WordLift](https://wordlift.io/agent/) for website optimization delivers transformative advantages across multiple dimensions: ### 1\. Dramatic Time Savings[โ€‹](#1-dramatic-time-savings "Direct link to 1. Dramatic Time Savings") As illustrated in the image, AI SEO agents dramatically reduce the time required for complex SEO tasks: * **Multi-Location Local SEO**: Reduced from 12 hours to just 15 minutes for complete local pack analysis, Google Business Profile optimization, and performance tracking across 500+ retail locations * **Intelligent Reporting**: Cutting 3 hours down to 5 minutes for traffic drop identification and SERP change correlation * **AI Overview Detection**: Transforming 2 hours of work into 30 seconds for real-time SERP analysis that detects when AI Overviews appear for your keywords * **Structured Data Audits**: Complete Schema.org auditing across website templates (product pages, brand pages, category pages) reduced from 8 hours to 10 minutes ### 2\. Enhanced Decision-Making[โ€‹](#2-enhanced-decision-making "Direct link to 2. Enhanced Decision-Making") * **Data-Driven Insights**: AI agents process vast amounts of SEO data to extract actionable patterns and opportunities that would be impossible to identify manually * **Predictive Intelligence**: Forecasting of algorithm changes, keyword trends, and content performance * **Competitive Edge**: Continuous monitoring of competitor strategies with real-time adjustments to stay ahead ### 3\. Comprehensive Optimization[โ€‹](#3-comprehensive-optimization "Direct link to 3. Comprehensive Optimization") * **Holistic Approach**: Simultaneous attention to technical SEO, on-page optimization, content quality, and user experience * **Perfect Alignment**: Ensures content precisely matches search intent across all targeted keywords * **Technical Precision**: Identifies and resolves complex technical issues that impact search visibility ### 4\. Scalability[โ€‹](#4-scalability "Direct link to 4. Scalability") * **Consistent Quality**: Maintains optimization quality across thousands of pages simultaneously * **Rapid Adaptation**: Automatically adjusts to algorithm updates across your entire site * **Enterprise Capability**: Handles multi-location SEO at scale, as shown in the image with capability for 500+ retail locations ### 5\. Continuous Improvement[โ€‹](#5-continuous-improvement "Direct link to 5. Continuous Improvement") * **Learning System**: Becomes more effective over time as it learns from your specific business data * **Trend Identification**: Recognizes emerging patterns in search behavior before they become obvious * **Proactive Optimization**: Suggests improvements before problems impact rankings By leveraging [Agent WordLift's](https://wordlift.io/agent/) advanced capabilities, businesses achieve more comprehensive website optimization while dramatically reducing the time and expertise required, resulting in better search visibility, increased organic traffic, and improved conversion rates. --- --- url: https://docs.wordlift.io/agent-wordlift/getting-started/ --- # ๐Ÿš€ Getting Started | WordLift Developer Documentation # ๐Ÿš€ Getting Started This guide will walk you through the initial steps of using **WordLift AI SEO Agent**, your AI-powered SEO companion. ## 1\. Getting Started:[โ€‹](#1-getting-started "Direct link to 1. Getting Started:") * **Sign Up:** Head over to the WordLift website and [create a free account](https://wordlift.io/pricing/). A payment method is required to activate the 14-day free trial. * **Connect Your Website:** Follow the on-screen instructions in the dashboard to connect the WordLift key to your website. This will allow the agent to analyze your website's content and structure. * **Build Your Knowledge Graph:** Consider building a Knowledge Graph for more comprehensive insights. This can be done manually or by leveraging WordLift's automated tools like the [Product Knowledge Graph builder](https://docs.wordlift.io/product-knowledge-graph-builder/introduction/), the [WordPress plugin](https://docs.wordlift.io/wordpress-plugin/), or the [WordLift Cloud](https://docs.wordlift.io/cloud/). A Knowledge Graph connects relevant entities and concepts related to your website's content, providing valuable context for the AI. ## 2\. Exploring the Agent's Functionalities:[โ€‹](#2-exploring-the-agents-functionalities "Direct link to 2. Exploring the Agent's Functionalities:") * **Set up your key:** To start using the AI SEO Agent, go to [agent.wordlift.io](http://agent.wordlift.io) and enter your WordLift key in the โ€œSettings panelโ€. ![image](/assets/images/agent-wordlift-set-up-your-key-4cd9213c66cd657412d01b3261257f9d.gif) * **Explore Queries:** Uncover the hidden potential of search queries. Understand how users search for topics related to your content and discover keywords you may want to target. Start simple and ask to the SEO Agent to: ``` Analyze the query "semantic SEO" on google.com ``` or ``` Show me the entity gap between "linked data" and https://wordlift.io/blog/en/entity/linked-data/ ``` * **Create Content:** Leverage your website content for new article creation: As mentioned, ask the Agent to: ``` Search the website for "the impact of blockchain technology on finance." Analyze the entities associated with this query. Generate an outline for a new, informative article based on the combined insights. ``` This will allow the Agent to analyze your website's content related to blockchain and finance, analyze the entities behind the top-ranking results on Google, and use all of this information to generate a new, informative article. * **Expand Existing Content:** Enhance your existing content by automatically identifying and suggesting relevant entities that can be integrated seamlessly. This can improve the depth and context of your content, making it more engaging for readers and search engines. It is as simple as asking to: ``` Expand the content on https://wordlift.io/ by integrating entities like Google and Semantic Web. ``` At the moment we are **not able to support Chinese language** for some of the Agent tasks that require analysing texts or queries. --- --- url: https://docs.wordlift.io/agent-wordlift/highlights/ --- # ๐Ÿ’ซ Highlights | WordLift Developer Documentation # ๐Ÿ’ซ Highlights ## Unmatched Accuracy with Knowledge Graph[โ€‹](#unmatched-accuracy-with-knowledge-graph "Direct link to Unmatched Accuracy with Knowledge Graph") Unlike traditional tools, WordLift AI SEO Agent utilizes a curated [Knowledge Graph](https://wordlift.io/blog/en/entity/knowledge-graph/), offering **deeper insights and more accurate results** for data-driven SEO strategies. ## Next-Gen AI with Multi-Agent Teamwork[โ€‹](#next-gen-ai-with-multi-agent-teamwork "Direct link to Next-Gen AI with Multi-Agent Teamwork") Imagine a team of experts working together to tackle your SEO challenges. Agent WordLift's [neuro-symbolic AI](https://wordlift.io/blog/en/neuro-symbolic-ai/) acts like that team, using a Multi-Agent System (MAS) to combine: * **Powerful language understanding:** Analyzes vast amounts of information like a team of researchers. * **Multiple specialists:** Works with various "mini-experts" to handle specific tasks efficiently, similar to how a team collaborates. * **Seamless coordination:** All these specialists work together seamlessly, just like a well-oiled team, to deliver the best results for you. This unique approach leads to: * **Improved decision-making:** Informed recommendations based on diverse perspectives. * **Faster processing:** Efficient task management for quicker analysis and results. ## Comprehensive Features, Simplified[โ€‹](#comprehensive-features-simplified "Direct link to Comprehensive Features, Simplified") * **Go beyond basic SEO:** Gain a holistic understanding with features like Entity Gap Analysis and Content Quality Evaluation. * **Direct data access:** Connect directly to Google Search Console for real-time performance analysis without middleware. * **Effortless content creation:** Generate fresh, relevant content with Content Creation, Content Recycling, & Idea Generation. * **Fact-checking for trust:** Ensure content accuracy and build trust with the built-in Fact-Checking tool. ## Additional Benefits[โ€‹](#additional-benefits "Direct link to Additional Benefits") * **User-friendly interface:** Easy access and use for all technical backgrounds. * **Scalable for growth:** Accommodates your evolving website and SEO needs. * **Privacy and security:** We run Agent WordLift on secure Microsoft Azure infrastructure, protecting user privacy and data security. Your conversations are safe with us โ€“ **we don't track conversations for improvement, only usage data**. WordLift AI SEO Agent empowers you to take your SEO efforts to the next level with its unique blend of AI, Knowledge Graph accuracy, and comprehensive, user-friendly features. **We prioritize your privacy and data security, ensuring a safe and practical experience**. --- --- url: https://docs.wordlift.io/agent-wordlift/integrations/ --- # โš™๏ธ Integrations | WordLift Developer Documentation # Integrations ## Agent WordLift Chrome Extension[โ€‹](#agent-wordlift-chrome-extension "Direct link to Agent WordLift Chrome Extension") Supercharge your SEO workflow directly in your browser with the **Agent WordLift Chrome Extension!** This powerful, AI-driven tool helps content creators, SEO professionals, and marketers like you achieve better search rankings and more organic traffic by: * **Optimizing content in real-time:** Receive instant feedback on keywords, readability, and semantic relevance as you write, ensuring your content is perfectly aligned with search engine best practices. * **Automating key SEO tasks:** Effortlessly perform entity analysis, schema markup generation, and other time-consuming SEO tasks, freeing up your time to focus on what matters most: creating great content. * **Uncovering hidden content opportunities:** Identify gaps in your existing content and receive actionable insights to create high-value content that resonates with your target audience. Powered by cutting-edge AI and knowledge graph technology, the Agent WordLift Chrome Extension transforms how you create and optimize content, making it easier than ever to achieve your SEO goals. Ready to see it in action? Watch this video tutorial. [Install the Agent WordLift Chrome Extension here](https://chromewebstore.google.com/detail/agent-wordlift/jegfjceighmfpbklniiakflbhceejddb) and start boosting your SEO today! ## Agent WordLift Zapier Integration[โ€‹](#agent-wordlift-zapier-integration "Direct link to Agent WordLift Zapier Integration") Connect Agent WordLift to your favorite apps with our [Zapier integration](/marketing-automation/zapier/introduction/). This powerful integration allows you to: * **Automate content analysis:** Automatically analyze new content as it's published * **Extract entities and insights:** Process content through Agent WordLift and use the results in your workflows * **Streamline SEO tasks:** Connect Agent WordLift's capabilities with over 6,000+ apps * **Create custom workflows:** Build automated pipelines that leverage Agent WordLift's AI capabilities Whether you're managing a content team, running an e-commerce site, or optimizing your SEO strategy, the Zapier integration helps you automate and scale your workflows. [Learn more about the Zapier integration](/marketing-automation/zapier/introduction/). ## Agent WordLift API Integration[โ€‹](#agent-wordlift-api-integration "Direct link to Agent WordLift API Integration") The **WordLift Agent API** empowers developers and SEO professionals to programmatically interact with the Agent WordLiftโ€™s advanced AI capabilities. The newly introduced `/ask` endpoint allows users to send specific queries to the WordLift Agent and receive tailored responses that enhance their SEO workflows. Key Features of the `/ask` Endpoint: * **Customizable Interactions:** Send a message and specify a model (default: gpt-4o) to receive AI-powered insights tailored to your SEO needs. * **Secure Queries:** Enable an optional security parameter to ensure sensitive requests are handled appropriately. * **Seamless Integration:** Easily incorporate the endpoint into your existing tools or workflows to automate tasks such as content optimization, keyword research, and entity analysis. ### Example Use Case[โ€‹](#example-use-case "Direct link to Example Use Case") With the `/ask` endpoint, you can create a chatbot-like feature within your application that provides instant SEO advice, content suggestions, or answers to technical queries based on the WordLift Agentโ€™s expertise. To get started, check out the [WordLift Agent API documentation](https://docs.wordlift.io/api/agent/wordlift-agent-api/) and explore how the `/ask` endpoint can revolutionize your SEO strategy! ## Agent WordLift CLI Integration[โ€‹](#agent-wordlift-cli-integration "Direct link to Agent WordLift CLI Integration") Transform your command-line workflow with Agent WordLift CLI! This powerful terminal-based tool brings the full capabilities of Agent WordLift directly to your development environment, making it perfect for developers, content creators, and SEO professionals who prefer working in the command line. **Why CLI Over Web UI for AI Workflows?** When working with AI-powered SEO tools, the command line offers distinct advantages over web interfaces. CLI provides superior speed with instant input/output, complete system prompt control for precise agent behavior, seamless file I/O for loading instructions and automating pipelines, and the ability to chain commands and build scalable workflows. For professional SEO workflows that demand efficiency, automation, and control, the CLI is where serious work gets done. **Key Features:** โ€ข **Seamless Development Integration**: Work with Agent WordLift directly from your terminal without switching contexts โ€ข **Advanced Content Creation**: Generate SEO-optimized content with access to 20+ specialized SEO tools via MCP integration โ€ข **Gemini Pro 2.5 Powered**: Leverage Google's most advanced language model for superior content analysis and generation โ€ข **Knowledge Graph Access**: Query and interact with your WordLift knowledge graph directly from the command line โ€ข **Batch Processing**: Automate content optimization tasks and run bulk SEO analyses โ€ข **Team Collaboration**: Integrate Agent WordLift capabilities into CI/CD pipelines and development workflows **Perfect for:** * Content teams building automated SEO workflows * Developers integrating SEO analysis into applications * Technical SEO professionals requiring programmatic access * Agencies managing multiple client projects from the command line ### Installation[โ€‹](#installation "Direct link to Installation") Install globally for system-wide access: ``` npm install -g wordlift-cli ``` Or run directly without installation: ``` npx wordlift-cli ``` ### Quick Start[โ€‹](#quick-start "Direct link to Quick Start") Launch the interactive Agent WordLift session: ``` wordlift-cli ``` For direct queries, use the prompt mode: ``` wordlift-cli -p "Analyze the semantic SEO potential of my latest blog post" ``` ### Example Use Cases[โ€‹](#example-use-cases "Direct link to Example Use Cases") **Keyword Research with HTML Output:** ``` wordlift-cli -p "run a comprehensive keyword research for 'sustainable fashion' and store the findings in HTML format with competitor analysis" ``` **Content Analysis Pipeline:** ``` wordlift-cli -p "analyze the entities on https://example.com/blog-post" | wordlift-cli -p "generate internal linking suggestions based on this analysis" ``` **Batch SEO Audit:** ``` wordlift-cli -p "perform an entity gap analysis for 'https://example.com/product-page' against the query 'eco-friendly clothing'" > seo-audit-report.html ``` **Schema Generation with Validation:** ``` wordlift-cli -p "generate JSON-LD schema markup for a local business: organic restaurant in Portland" | wordlift-cli -p "validate this schema and suggest improvements" ``` **Google Search Console Integration:** ``` wordlift-cli -p "show me the top 10 queries with high impressions but low CTR from my GSC data, then suggest content optimization strategies" ``` ### Integration with Development Workflows[โ€‹](#integration-with-development-workflows "Direct link to Integration with Development Workflows") The WordLift CLI seamlessly integrates with modern development practices: * **CI/CD Pipelines**: Automate content analysis and SEO scoring in your deployment workflows * **Git Hooks**: Run SEO checks on content changes before commits * **Build Scripts**: Generate schema markup and optimize content during build processes * **Testing Suites**: Include SEO validation as part of your automated testing ### Advanced Features[โ€‹](#advanced-features "Direct link to Advanced Features") **Batch Processing:** Process multiple files or URLs in a single command for efficient workflow automation. **Custom Workflows:** Combine with shell scripts and automation tools to create sophisticated SEO processing pipelines. **Team Integration:** Share configurations and workflows across development teams for consistent SEO implementation. **API Integration:** Access the full WordLift Agent API capabilities through command-line interfaces. Ready to supercharge your command-line SEO workflow? [Install WordLift CLI](https://www.npmjs.com/package/wordlift-cli) and bring Agent WordLift's power directly to your terminal! --- _The WordLift CLI is powered by the same MCP integration that enables Agent WordLift to work across multiple platforms, ensuring consistent access to your knowledge graph and SEO tools regardless of your preferred development environment._ ## Agent WordLift Model Context Protocol (MCP) Integration[โ€‹](#agent-wordlift-model-context-protocol-mcp-integration "Direct link to Agent WordLift Model Context Protocol (MCP) Integration") Your preferred AI models and agents can use our official MCP server to access your Knowledge Graph and leverage Agent WordLift in a simple and secure way. Connect WordLift to various AI assistants through our **experimental Model Context Protocol (MCP) integration**. This integration enables AI models like Claude to directly interact with your content and knowledge graph, unlocking powerful new workflows. Our MCP server is reachable at `https://mcp.wordlift.io/sse` and currently supports: * Direct calls to Agent WordLift's capabilities * Execution of GraphQL queries on your knowledge graph * Seamless integration with supported AI assistants Watch how Claude, integrated with WordLift via Model Context Protocol, analyzes the WordLift Blog to uncover actionable insights around the "Agentic SEO" content cluster: ### Setup Instructions[โ€‹](#setup-instructions "Direct link to Setup Instructions") **For Claude:** 1. Navigate to Settings in Claude 2. Scroll to Integrations at the bottom and click Add more 3. In the prompt, enter: * Integration name: WordLift * Integration URL: 4. Make sure to enable the tools in any new chats **For Cursor:** 1. Press CTRL/CMD+Shift+J to open Cursor Settings 2. Select MCP 3. Select Add new global MCP server 4. Add the following configuration: ``` { "mcpServers": { "wordlift": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.wordlift.io/sse"] } } } ``` **For Visual Studio:** 1. Press CTRL/CMD+P and search for "MCP: Add Server" 2. Select "Command (stdio)" 3. Enter the following configuration and hit enter: ``` npx mcp-remote https://mcp.wordlift.io/sse ``` 4. Enter the name "WordLift" and hit enter 5. Activate the server using "MCP: List Servers", selecting "WordLift", and selecting "Start Server" **For Windsurf:** 1. Press CTRL/CMD+, to open Windsurf settings 2. Under Cascade -> MCP servers 3. Select Add Server -> Add custom server 4. Add the same JSON configuration as shown above for Cursor This experimental integration opens up new possibilities by combining the reasoning capabilities of large language models with WordLift's structured knowledge and SEO expertise. From identifying content gaps to suggesting improvements, this integration showcases how symbolic AI and LLMs can work together to power the next generation of marketing strategies. **๐Ÿš€ New: AI Sub-Agent Workflows**The MCP integration enables a new category of workflows where Agent WordLift operates as a specialized SEO sub-agent within other AI platforms. These workflows leverage the conversational capabilities of Claude, ChatGPT, Copilot, or Gemini while providing deep SEO expertise through WordLift. Explore our [Instagram Indexing Analysis workflow](/agent-wordlift/workflows/instagram-indexing-analysis/) to see this in action. note The MCP integration is **currently experimental** and we're actively expanding its capabilities. If you have questions or feedback, please reach out to our support team. ## Agent WordLift Claude Skill[โ€‹](#agent-wordlift-claude-skill "Direct link to Agent WordLift Claude Skill") Take your SEO audits to the next level with the official **WordLift SEO Audit Skill** for Claude! This pre-built Agent Skill delivers comprehensive SEO analysis and competitive intelligence directly within your Claude conversations. ### What is a Claude Skill?[โ€‹](#what-is-a-claude-skill "Direct link to What is a Claude Skill?") Claude Skills are specialized packages that extend Claude's capabilities with domain-specific expertise. The WordLift SEO Audit Skill combines Claude's reasoning with WordLift's powerful SEO intelligence, creating an AI-powered SEO analyst that can audit any URL, analyze competitors, and provide actionable recommendationsโ€”all through natural conversation. ### Key Features:[โ€‹](#key-features "Direct link to Key Features:") * **Comprehensive SEO Audits**: Analyze any URL for schema markup, meta tags, content quality, technical SEO, mobile readiness, and performance * **Competitive Intelligence**: Automatically identify and analyze your top SERP competitors to uncover schema gaps and opportunities * **Structured Data Analysis**: Complete inventory of schema types with coverage comparison against competitors * **Actionable Recommendations**: Prioritized issues with specific implementation steps and ROI estimates * **WordLift Branded Reports**: Professional, color-coded reports with visual progress indicators and severity badges * **Progressive Disclosure**: Efficient token usage through smart resource loading ### Perfect For:[โ€‹](#perfect-for "Direct link to Perfect For:") * **SEO Professionals** conducting client audits and competitive analysis * **Content Teams** optimizing pages for search visibility * **Agencies** delivering comprehensive SEO reports at scale * **Developers** integrating SEO insights into workflows * **E-commerce Teams** improving product page performance ### How It Works[โ€‹](#how-it-works "Direct link to How It Works") The WordLift SEO Audit Skill leverages the **WordLift MCP Server** (described above) to access Agent WordLift's capabilities. This architecture ensures: 1. **Claude (with Skill)** โ†’ Provides methodology and formatting instructions 2. **WordLift MCP Server** โ†’ Makes API calls and processes data 3. **Agent WordLift** โ†’ Delivers SEO intelligence and competitive analysis ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Claude with WordLift Skill โ”‚ โ”‚ โ”œโ”€โ”€ Audit methodology โ”‚ โ”‚ โ”œโ”€โ”€ Report formatting โ”‚ โ”‚ โ””โ”€โ”€ WordLift branding โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ Uses MCP Tools โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ WordLift MCP Server โ”‚ โ”‚ https://mcp.wordlift.io/sse โ”‚ โ”‚ โ”œโ”€โ”€ Agent WordLift API โ”‚ โ”‚ โ””โ”€โ”€ Knowledge Graph Access โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### Installation & Setup[โ€‹](#installation--setup "Direct link to Installation & Setup") **Step 1: Configure WordLift MCP Server** (if not already done) Follow the MCP integration setup instructions above to connect WordLift to Claude. **Step 2: Download the WordLift SEO Audit Skill** **Direct Download** [๐Ÿ“ฆ Download WordLift SEO Audit Skill v1.0.0](/assets/files/wl-seo-audit-competitors-v1.0.0-a1bb32d1c98dee724f9d847528a25ebb.zip/) **Step 3: Upload to Claude** 1. In Claude, navigate to **Settings** โ†’ **Capabilities** 2. Click **Upload Skill** 3. Select the `wl-seo-audit-competitors.zip` file (or the skill folder) 4. Enable the skill for your conversations **Step 4: Start Using** Simply ask Claude to audit any URL: ``` "Audit https://example.com/products/backpack and compare with top 5 competitors" ``` ### Example Commands[โ€‹](#example-commands "Direct link to Example Commands") **Basic SEO Audit**: ``` "Run an SEO audit on https://mysite.com" ``` **Competitive Analysis**: ``` "Compare the schema markup on https://mysite.com/products/shoes with top 3 competitors in the US market" ``` **SERP Gap Analysis**: ``` "Analyze https://mystore.com/category/electronics for the query 'best wireless headphones' and show me what schema types competitors are using" ``` **Market-Specific Audit**: ``` "Audit https://mysite.fr for the French market (fr-FR) and compare with top 10 competitors" ``` ### What You Get[โ€‹](#what-you-get "Direct link to What You Get") Every audit delivers a comprehensive report including: 1. **Executive Summary** with overall SEO health score (0-100) 2. **Quick Stats Dashboard** showing key metrics at a glance 3. **Six-Dimensional Score Breakdown**: * ๐Ÿท๏ธ Schema Markup * ๐Ÿ“ Meta Tags * โœ๏ธ Content Quality * โš™๏ธ Technical SEO * ๐Ÿ“ฑ Mobile Readiness * โšก Performance 4. **Prioritized Issues** with severity indicators and action steps 5. **Structured Data Inventory** showing all schema types (found/missing) 6. **Competitive Analysis** comparing your coverage with SERP leaders 7. **Growth Opportunities** ranked by impact vs. effort with ROI estimates ### Why Use the Claude Skill vs. Direct MCP?[โ€‹](#why-use-the-claude-skill-vs-direct-mcp "Direct link to Why Use the Claude Skill vs. Direct MCP?") | Feature | Claude Skill | Direct MCP Integration | | -------------------------- | ------------------------------ | -------------------------- | | **Pre-built Workflow** | โœ… Complete methodology | โŒ You build from scratch | | **Report Formatting** | โœ… Professional branded reports | โŒ Manual formatting needed | | **Best Practices** | โœ… Built-in SEO expertise | โš ๏ธ Requires your knowledge | | **Progressive Disclosure** | โœ… Optimized token usage | โš ๏ธ Manual management | | **Updates** | โœ… Version-tracked improvements | โŒ Manual updates | | **Branding** | โœ… WordLift design system | โŒ Custom styling needed | tip The Claude Skill integrates seamlessly with all other WordLift integrations (Chrome Extension, CLI, API, Zapier) for a complete SEO automation ecosystem. For custom workflows, explore the [MCP Integration](#agent-wordlift-model-context-protocol-mcp-integration) section above. --- --- url: https://docs.wordlift.io/agent-wordlift/prompt-reference/ --- # ๐Ÿ“š Prompt Library | WordLift Developer Documentation # Unleash the Power of Agent WordLift: Explore a Range of Capabilities This comprehensive library contains ready-to-use prompts for Agent WordLift, optimized for both the web interface and Chrome extension. Each prompt is formatted for easy copying and immediate use. ## ๐Ÿ” Analysis & Research[โ€‹](#-analysis--research "Direct link to ๐Ÿ” Analysis & Research") ### Analyze Text[โ€‹](#analyze-text "Direct link to Analyze Text") ``` analyze this text to identify the main entities and keywords: [your text here] ``` ### Analyze URL[โ€‹](#analyze-url "Direct link to Analyze URL") ``` analyze the entities on this webpage: [URL] ``` ### Analyze Query[โ€‹](#analyze-query "Direct link to Analyze Query") ``` analyze the query '[query]' on [google.co.uk] ``` ### Domain-Specific Search[โ€‹](#domain-specific-search "Direct link to Domain-Specific Search") ``` perform a domain-specific search for articles related to '[topic]' on my website ``` ### Analyze Google Trends[โ€‹](#analyze-google-trends "Direct link to Analyze Google Trends") ``` analyze the trends for '[keyword1]' and '[keyword2]' ``` ### Search Reddit mentions[โ€‹](#search-reddit-mentions "Direct link to Search Reddit mentions") ``` Provide me with insights on the Reddit exposure of the following domains: [URL] ``` ## ๐Ÿ“ Content Creation & Enhancement[โ€‹](#-content-creation--enhancement "Direct link to ๐Ÿ“ Content Creation & Enhancement") ### Content Expansion[โ€‹](#content-expansion "Direct link to Content Expansion") ``` expand the content of this URL '[URL]' by focusing on the entities '[entity1]' and '[entity2]' ``` ### Content Creation[โ€‹](#content-creation "Direct link to Content Creation") ``` create a new article about '[topic]' using insights from our website's existing content ``` ### Generate AI Overview[โ€‹](#generate-ai-overview "Direct link to Generate AI Overview") ``` run a search on '[topic]' using only the content on this website. Develop an AI-powered snapshot that provides a quick overview, offering links with text anchors to supporting articles. Be extremely concise, using only three sentences. Embed links directly in the key text of each statement. ``` ### Generate Meta Titles and Descriptions[โ€‹](#generate-meta-titles-and-descriptions "Direct link to Generate Meta Titles and Descriptions") ``` search the site and generate an SEO-optimized meta title and meta description for this webpage: [URL]. Use the Keyword Suggestion tool to incorporate high-impact keywords relevant to the content, and maintain a clear, concise tone. For the meta description, aim for an informative and engaging tone that aligns with user search intent and encourages clicks. Ensure the meta title is under 60 characters and the description under 160 characters for optimal discoverability. ``` ## ๐ŸŽฏ SEO & Technical Analysis[โ€‹](#-seo--technical-analysis "Direct link to ๐ŸŽฏ SEO & Technical Analysis") ### Entity Gap Analysis[โ€‹](#entity-gap-analysis "Direct link to Entity Gap Analysis") ``` perform an entity gap analysis for '[URL]' against the query '[query]' ``` ### Content Evaluation[โ€‹](#content-evaluation "Direct link to Content Evaluation") ``` evaluate the content quality for the keyword '[keyword]' in relation to the content on '[URL]' ``` ### Google Search Console Analysis[โ€‹](#google-search-console-analysis "Direct link to Google Search Console Analysis") ``` show me the top 10 queries that have high impressions but low CTR over the last 30 days ``` ### Performance Comparison[โ€‹](#performance-comparison "Direct link to Performance Comparison") ``` analyze my Google Search Console data and compare desktop vs. mobile performance for my top 20 landing pages in the last 14 days ``` ### Opportunity Discovery[โ€‹](#opportunity-discovery "Direct link to Opportunity Discovery") ``` identify new keyword opportunities from my Google Search Console data where I'm ranking on page 2 (positions 11-20) ``` ### Google Discover Analysis[โ€‹](#google-discover-analysis "Direct link to Google Discover Analysis") ``` analyze my Google Search Console data for the search type "discover". Show me the top 20 pages with the highest clicks over the last 30 days. Include clicks, impressions, and CTR for each page. ``` ### Generate Diagram[โ€‹](#generate-diagram "Direct link to Generate Diagram") ``` generate a mind map to visualize the topic clusters for '[topic]' ``` ### Fact-Checking[โ€‹](#fact-checking "Direct link to Fact-Checking") ``` fact-check this statement: '[statement]' ``` ### Keyword Suggestions[โ€‹](#keyword-suggestions "Direct link to Keyword Suggestions") ``` generate keyword suggestions based on '[keyword]' to refine content focus and enhance discoverability online ``` ### Analyze and Differentiate Webpages[โ€‹](#analyze-and-differentiate-webpages "Direct link to Analyze and Differentiate Webpages") ``` analyze the following pages from the website: URL1: [URL1], Title1: [Title1] URL2: [URL2], Title2: [Title2] For each page: 1. Extract Entities 2. Identify Keywords 3. Determine Detailed Search Intent 4. Propose differentiation strategies 5. Recommend optimizations ``` ### Audit the Markup[โ€‹](#audit-the-markup "Direct link to Audit the Markup") ``` analyze the markup of the page at [URL], focusing on the JSON-LD. Provide a brief review and include your recommendations for improvement. Keep the analysis concise. ``` ### Analyze Schema Types[โ€‹](#analyze-schema-types "Direct link to Analyze Schema Types") ``` 1. Analyze the schema types and properties used in the JSON-LD of this article: [URL] 2. Perform a SERP analysis for the query "[query]" 3. Extract the URLs of the top 3 results and note their schema types 4. Analyze differences in markup implementation 5. Create a comparison table 6. Write recommendations for improvement ``` ## ๏ฟฝ AI Sub-Agent Workflows[โ€‹](#-ai-sub-agent-workflows "Direct link to ๏ฟฝ AI Sub-Agent Workflows") ### Instagram Indexing Analysis[โ€‹](#instagram-indexing-analysis "Direct link to Instagram Indexing Analysis") ## ๐Ÿค– AI Sub-Agent Workflows[โ€‹](#-ai-sub-agent-workflows-1 "Direct link to ๐Ÿค– AI Sub-Agent Workflows") ### Instagram Indexing Analysis[โ€‹](#instagram-indexing-analysis-1 "Direct link to Instagram Indexing Analysis") ``` Generate a comprehensive Instagram indexing report for @[instagram_handle]. Please analyze my website's entity structure, audit Instagram content indexing using search operators, and provide content alignment recommendations. ``` ### Instagram Content Audit[โ€‹](#instagram-content-audit "Direct link to Instagram Content Audit") ``` Using search operators, audit my Instagram presence: 1. site:instagram.com/[handle] - total indexed posts 2. site:instagram.com/[handle] "[keyword]" - topic-specific visibility 3. Compare findings with my website's content coverage ``` ### Cross-Platform Content Strategy[โ€‹](#cross-platform-content-strategy "Direct link to Cross-Platform Content Strategy") ``` Analyze content alignment between my website and Instagram account @[handle]. Identify entities that are well-covered on Instagram but missing from my website, and suggest content opportunities for both platforms. ``` ### Instagram SERP Monitoring[โ€‹](#instagram-serp-monitoring "Direct link to Instagram SERP Monitoring") ``` Set up monitoring for key search queries where my Instagram content @[handle] could rank. Compare current visibility against main website pages and identify optimization opportunities. ``` ## ๐Ÿ” Enhanced Knowledge Graph Research[โ€‹](#-enhanced-knowledge-graph-research "Direct link to ๐Ÿ” Enhanced Knowledge Graph Research") ### Enhanced Entity Lookup[โ€‹](#enhanced-entity-lookup "Direct link to Enhanced Entity Lookup") ``` research comprehensive information about [entity name] using the enhanced Google Knowledge Graph with WordLift semantic enrichment ``` ### Corporate Intelligence Research[โ€‹](#corporate-intelligence-research "Direct link to Corporate Intelligence Research") ``` analyze the company [company name] using enhanced knowledge graph data. Include headquarters, key people, industry classification, founding details, and semantic relationships with competitors ``` ### Person Entity Deep Dive[โ€‹](#person-entity-deep-dive "Direct link to Person Entity Deep Dive") ``` provide enhanced biographical data for [person name] including occupation, education, nationality, and semantic connections using the enhanced knowledge graph ``` ### Entity Relationship Mapping[โ€‹](#entity-relationship-mapping "Direct link to Entity Relationship Mapping") ``` map the semantic relationships between [entity1] and [entity2] using enhanced knowledge graph data. Identify shared attributes, connections, and contextual relationships ``` ### Multi-Entity Comparative Analysis[โ€‹](#multi-entity-comparative-analysis "Direct link to Multi-Entity Comparative Analysis") ``` compare and analyze the following entities using enhanced knowledge graph data: [entity1], [entity2], [entity3]. Highlight similarities, differences, and competitive positioning ``` ### Content Enhancement Research[โ€‹](#content-enhancement-research "Direct link to Content Enhancement Research") ``` research [entity name] for content creation purposes using enhanced knowledge graph data. Focus on unique details, lesser-known facts, notable achievements, and semantic connections that would enhance article depth and authority ``` ### Corporate Leadership Analysis[โ€‹](#corporate-leadership-analysis "Direct link to Corporate Leadership Analysis") ``` analyze the leadership team of [company name] using enhanced knowledge graph data. Include biographical details, career backgrounds, education, and cross-company relationships ``` ### Geographic Entity Intelligence[โ€‹](#geographic-entity-intelligence "Direct link to Geographic Entity Intelligence") ``` research comprehensive geographic and demographic data for [location name] using enhanced knowledge graph. Include population, administrative divisions, economic data, and regional relationships ``` ### Instagram Content Audit[โ€‹](#instagram-content-audit-1 "Direct link to Instagram Content Audit") ``` Using search operators, audit my Instagram presence: 1. site:instagram.com/[handle] - total indexed posts 2. site:instagram.com/[handle] "[keyword]" - topic-specific visibility 3. Compare findings with my website's content coverage ``` ### Cross-Platform Content Strategy[โ€‹](#cross-platform-content-strategy-1 "Direct link to Cross-Platform Content Strategy") ``` Analyze content alignment between my website and Instagram account @[handle]. Identify entities that are well-covered on Instagram but missing from my website, and suggest content opportunities for both platforms. ``` ### Instagram SERP Monitoring[โ€‹](#instagram-serp-monitoring-1 "Direct link to Instagram SERP Monitoring") ``` Set up monitoring for key search queries where my Instagram content @[handle] could rank. Compare current visibility against main website pages and identify optimization opportunities. ``` ## ๏ฟฝ๐Ÿ”— Internal Linking[โ€‹](#-internal-linking "Direct link to ๏ฟฝ๐Ÿ”— Internal Linking") ### Create Internal Links[โ€‹](#create-internal-links "Direct link to Create Internal Links") ``` find content on my website from the '[title]' page ([URL]). Analyze the text to identify up to 5 related articles. For each article, determine a relevant keyword, generate keyword suggestions, and create an anchor text of no more than 30 characters. Compile the HTML for all 5 links with their respective anchor texts. ``` ### Create Internal Links In Batch[โ€‹](#create-internal-links-in-batch "Direct link to Create Internal Links In Batch") ``` do the same internal linking work for the following pages: - '[Title1]' ([URL1]) - '[Title2]' ([URL2]) - '[Title3]' ([URL3]) Remember: never link to the homepage; choose anchors based on content relevance and keyword opportunity. ``` ## ๐Ÿ›๏ธ Product Content[โ€‹](#๏ธ-product-content "Direct link to ๐Ÿ›๏ธ Product Content") ### Generate Product Highlights[โ€‹](#generate-product-highlights "Direct link to Generate Product Highlights") ``` find everything on the website about [product]. Based on this information, write short bullet points of the most relevant product highlights. The highlights should help shoppers with easily consumable, quick-to-scan sentence fragments that answer common consumer questions or focus on the most important attributes of the product. Instructions: Limit 1-150 characters per highlight; recommend 4-6 highlights; minimum 2 highlights; do not mention discounts; ensure content complies with data privacy regulations. ``` ## ๐Ÿ“ฑ Social Media[โ€‹](#-social-media "Direct link to ๐Ÿ“ฑ Social Media") ### Content Buckets[โ€‹](#content-buckets "Direct link to Content Buckets") ``` search for content related to '[topic1]', '[topic2]' and create content buckets for social media. ``` ### Create a Thread on X[โ€‹](#create-a-thread-on-x "Direct link to Create a Thread on X") ``` search for '[topic]' and analyze the writing style on my website. Create a Twitter thread to promote the topic to [target audience], adding links back to the website to help users discover additional information. ``` ## ๐Ÿ”ง HTML & Technical Analysis[โ€‹](#-html--technical-analysis "Direct link to ๐Ÿ”ง HTML & Technical Analysis") ### HTML Analysis[โ€‹](#html-analysis "Direct link to HTML Analysis") ``` extract html from '[URL]' and analyze the page focusing on: 1. visual hierarchy 2. CTA placement and effectiveness 3. messaging clarity 4. user experience 5. trust signals Provide specific recommendations for improving conversion rates. ``` ## ๐Ÿ“ˆ Conversion Rate Optimization[โ€‹](#-conversion-rate-optimization "Direct link to ๐Ÿ“ˆ Conversion Rate Optimization") ### Comprehensive SEO and CRO Analysis[โ€‹](#comprehensive-seo-and-cro-analysis "Direct link to Comprehensive SEO and CRO Analysis") ``` **Task: Comprehensive HTML Extraction, SEO, and Conversion Optimization Analysis** 1. **HTML & Metadata Extraction** - **Retrieve Full HTML**: - Extract the complete HTML content from the following URL, ensuring that all dynamic and lazy-loaded content is captured: [URL] - **Metadata Extraction**: - Extract meta tags (e.g., title, meta description, keywords) to assess SEO alignment. - Identify canonical tags, viewport settings, and robots meta tags to ensure proper indexing and mobile responsiveness. - **Structural Elements & Schema Markup**: - Extract header tags (H1, H2, etc.) to evaluate content hierarchy. - Identify any structured data (schema markup) for potential rich snippet opportunities. - **Resource & Performance Analysis**: - Evaluate external versus inline assets (scripts, CSS, images) to understand their impact on page load speed and overall performance. - Identify any resources that might block rendering or affect mobile responsiveness. 2. **On-Page SEO & Content Analysis** - **Content Quality & Keyword Usage**: - Assess keyword placement and relevancy throughout the content. - Evaluate readability factors such as sentence structure, paragraph length, and overall copy quality. - **Link & Anchor Analysis**: - Extract and analyze all internal and external links, including their anchor texts. - Identify any broken or redundant links that could negatively impact SEO. - **Technical SEO Checks**: - Check for duplicate content and missing or broken elements (images, scripts, etc.). - Review embedded scripts and comments for outdated code or potential performance issues. - **Accessibility & Usability**: - Verify the presence and quality of alt text for images and ARIA labels for improved accessibility. 3. **Design, UX, & Conversion Analysis** - **Visual Hierarchy & Layout**: - Examine whether the page design highlights key elements (e.g., product details, benefits) in a way that naturally guides user attention. - **Call-to-Action (CTA) Evaluation**: - Assess the placement, visibility, and effectiveness of CTAs to ensure they are compelling and well-positioned. - **User Experience (UX)**: - Analyze the navigational structure and overall user journey to determine if the page logically guides visitors toward conversion actions. - **Trust Signals & Credibility**: - Identify trust-building elements such as testimonials, certifications, reviews, or security badges that enhance user credibility. 4. **Conversion Optimization Recommendations** - **Actionable Recommendations**: - Provide a prioritized, step-by-step list of improvements addressing technical SEO, design, and UX enhancements. - Suggest optimizations for meta elements, header structures, link strategies, and resource loading. - **Testing & Measurement**: - Recommend A/B testing scenarios and tracking metrics to validate the impact of the proposed changes on user engagement and conversion rates. 5. **Summary of Suggested Changes** - **Prioritization Table**: - Summarize all recommended changes in a table format, ranked from most to least important in terms of their potential impact on conversion rates. - **Table Structure**: | Recommendation/Change | Priority Level (High/Med/Low) | Expected Impact on Conversions | Notes | |-------------------------------------|-------------------------------|----------------------------------------|----------------------------------------| | Improve CTA placement and design | High | Significant increase in click-throughs | Test with A/B variations | | Optimize meta tags and header structure | High | Better organic ranking, more traffic | Ensure keyword alignment | | Enhance page load speed | High | Reduced bounce rate, higher engagement | Optimize external resources | | Add or improve trust signals (testimonials, certifications) | Medium | Increased user confidence, improved conversions | Include visual and textual elements | | Streamline content for clarity | Medium | Better user understanding, improved conversion funnel | Revise copy for readability | | Fix broken links and improve internal linking | Low | Incremental SEO benefits | Regular maintenance required | **Deliverables** - A detailed critical review summarizing the pageโ€™s strengths and weaknesses across SEO, technical performance, content quality, design, UX, and conversion optimization. - A prioritized, step-by-step roadmap of actionable recommendations, supported by specific examples or benchmarks, based on current best practices. **Additional Considerations** - Ensure insights align with the latest SEO trends and guidelines. - Highlight any technical or design issues that could significantly impact user engagement, page speed, and organic search performance. - Use both qualitative and quantitative data to support recommendations. ``` Here's a section to add to your prompt-reference.md file. This should be placed alongside your other specialized prompt categories: ## ๐Ÿช Local SEO[โ€‹](#-local-seo "Direct link to ๐Ÿช Local SEO") ### Analyze Business Profile[โ€‹](#analyze-business-profile "Direct link to Analyze Business Profile") ``` Analyze the Google Business Profile for "[business name]" in "[City,State,Country]". Identify strengths, weaknesses, and opportunities for optimization. ``` ### Research Local Pack Results[โ€‹](#research-local-pack-results "Direct link to Research Local Pack Results") ``` Show me the Local Pack results for "[keyword]" in "[City,State,Country]". Analyze what factors might be helping these businesses rank in the Local Pack. ``` ### Track Business Rankings[โ€‹](#track-business-rankings "Direct link to Track Business Rankings") ``` Track the rankings of "[business name]" for "[keyword]" in "[City,State,Country]". ``` ### Analyze Customer Q&A[โ€‹](#analyze-customer-qa "Direct link to Analyze Customer Q&A") ``` Analyze questions and answers for "[business name]" in "[City,State,Country]". Identify common themes, response patterns, and opportunities for better engagement. ``` ### Comprehensive Local SEO Audit[โ€‹](#comprehensive-local-seo-audit "Direct link to Comprehensive Local SEO Audit") ``` Conduct a complete local SEO audit for "[business name]" in "[City,State,Country]": 1. Analyze their Google Business Profile 2. Track their rankings for "[primary keyword]" and "[secondary keyword]" 3. Examine the Local Pack for their main category 4. Review their customer Q&A 5. Provide actionable recommendations for improvement ``` ### Compare with Competitors[โ€‹](#compare-with-competitors "Direct link to Compare with Competitors") ``` Compare the Google Business Profile for "[my business]" with competitors "[competitor 1]" and "[competitor 2]" in "[City,State,Country]". Highlight key differences and competitive advantages. ``` ### Local Business Visibility Strategy[โ€‹](#local-business-visibility-strategy "Direct link to Local Business Visibility Strategy") ``` Create a comprehensive strategy to help "[business name]" in "[City,State,Country]" improve local search visibility for "[target keyword]". Include profile optimization, review management, and Q&A engagement tactics. ``` ## Tips for Using Prompts[โ€‹](#tips-for-using-prompts "Direct link to Tips for Using Prompts") 1. **Be Specific**: Include exact URLs, keywords, or text you want to analyze 2. **Customize**: Modify prompts to match your specific needs 3. **Combine**: Use multiple prompts together for comprehensive analysis 4. **Verify**: Always review and verify the generated content 5. **Iterate**: Refine prompts based on results Need help? Contact our support team at [support@wordlift.io](mailto:support@wordlift.io) tip For tasks involving multiple entities, such as products, it is advisable to utilize the [Content Generation Tool](/content-generation/). --- --- url: https://docs.wordlift.io/agent-wordlift/tips/ --- # โœจ Tips for using WordLift Agent | WordLift Developer Documentation Talk to the Agent as your SEO assistant: Provide it with step-by-step instructions. * **Watch the Video:** Get a visual introduction to the WordLift AI SEO Agent's capabilities and how it simplifies various SEO tasks. # Optimizing SEO with AI Agents: An Experiment * **Explore Workflows:** Learn how different audiences, such as large organizations, editorial teams, and agencies, benefit from the WordLift AI SEO Agent's unique functionalities. Read our [Workflows](/agent-wordlift/workflows/). By following these steps and exploring the various features offered by the WordLift AI SEO Agent, you can effectively **streamline your SEO workflow**, **generate data-driven insights**, and **create high-quality content** that resonates with both users and search engines. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/ --- # ๐Ÿ› ๏ธ Workflows | WordLift Developer Documentation # ๐Ÿ› ๏ธ Workflows Here is how WordLift AI SEO Agent can help you boost your productivity in different editorial workflows: * **Analyze Search Demand:** * [Keyword Discovery](/agent-wordlift/workflows/keyword-discovery/) * [Keyword Cannibalization](/agent-wordlift/workflows/keyword-cannibalization/) * [Google Search Console Integration](/agent-wordlift/workflows/google-search-console/) * **Research Content:** * [Research Using Reddit Discussions](/agent-wordlift/workflows/research-content-ideas/) * [Enhanced Entity Research](/agent-wordlift/workflows/enhanced-entity-research/) * **Create Content:** * [Social Media](/agent-wordlift/workflows/create-social-media-posts/) * [Content Buckets](/agent-wordlift/workflows/create-social-media-content-buckets/) * [Newsletter](/agent-wordlift/workflows/ideas-for-newsletters/) * [Generate FAQ](/agent-wordlift/workflows/faq/) * [Create Product Descriptions](/agent-wordlift/workflows/create-product-description/) * **Optimize Content:** * [Content Quality Evaluation](/agent-wordlift/workflows/content-evaluation/) * [Analyze SEO Score](/agent-wordlift/workflows/analyzing-query-match/) * [Align Content with Search Query](/agent-wordlift/workflows/analyzing-query-match/) * [Add Authorship Markup](/agent-wordlift/workflows/adding-authorship-markup/) * **Optimize Local Presence:** * [Local SEO Analysis](/agent-wordlift/workflows/local-seo-analysis/) * **Enhance Structure:** * [Create Internal Links](/agent-wordlift/workflows/create-internal-links/) * **AI Sub-Agent Workflows** (powered by [MCP Integration](/agent-wordlift/integrations/#agent-wordlift-model-context-protocol-mcp-integration)): * [Instagram Indexing Analysis](/agent-wordlift/workflows/instagram-indexing-analysis/) New Series: AI Sub-Agent Workflows This new category features workflows where Agent WordLift operates as a specialized SEO sub-agent within other AI platforms like Claude, ChatGPT, Copilot, or Gemini via our [Model Context Protocol (MCP) integration](/agent-wordlift/integrations/#agent-wordlift-model-context-protocol-mcp-integration). These workflows combine the conversational capabilities of leading AI models with WordLift's deep SEO expertise and direct access to your knowledge graph. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/adding-authorship-markup/ --- # Adding Authorship Markup | WordLift Developer Documentation # Enhancing E-E-A-T with Authorship Markup In today's SEO landscape, establishing author credibility is crucial. Google's recent updates to Search Quality Rater Guidelines (January 2025) emphasize E-E-A-T principles more than ever. This workflow demonstrates how to leverage Agent WordLift to create comprehensive authorship markup that enhances your content's trustworthiness. ## Watch the Workflow in Action[โ€‹](#watch-the-workflow-in-action "Direct link to Watch the Workflow in Action") See how Agent WordLift creates and manages authorship markup automatically: ## Quick Start[โ€‹](#quick-start "Direct link to Quick Start") Begin with this simple prompt to create authorship markup: ``` Create authorship markup for [Author Name]. Include their professional background, current role, and significant achievements. ``` ## How it Works[โ€‹](#how-it-works "Direct link to How it Works") Agent WordLift follows a comprehensive process to create authoritative authorship markup: 1. **Information Gathering** * Scans trusted sources (Bing, Google, LinkedIn, Google Books) * Verifies professional information * Identifies key achievements and credentials 2. **Markup Generation** * Creates JSON-LD structured data * Includes verified professional details * Links to authoritative profiles 3. **Knowledge Graph Integration** * Stores data as RDF triples * Maintains data consistency * Enables future updates ## Advanced Usage[โ€‹](#advanced-usage "Direct link to Advanced Usage") ### Creating Author Biographies[โ€‹](#creating-author-biographies "Direct link to Creating Author Biographies") After storing the authorship markup, generate a compelling biography: ``` Generate a concise, professional biography using the stored information for [Author Name]. ``` ### Updating Existing Markup[โ€‹](#updating-existing-markup "Direct link to Updating Existing Markup") Keep author information current with this prompt: ``` Update the authorship markup for [Author Name] with their latest achievements and roles. ``` ## Best Practices[โ€‹](#best-practices "Direct link to Best Practices") * **Verification**: Always verify author information from multiple authoritative sources * **Completeness**: Include all relevant professional credentials and achievements * **Consistency**: Maintain consistent author information across your website * **Updates**: Regularly review and update author information to reflect current roles and achievements ## The Impact on SEO[โ€‹](#the-impact-on-seo "Direct link to The Impact on SEO") Proper authorship markup contributes to your content's E-E-A-T signals by: * Establishing author expertise and credibility * Creating verifiable connections to professional profiles * Supporting content trustworthiness * Enhancing structured data for better search visibility tip For scaled content operations, consider using the [Content Generation Tool](/content-generation/) in conjunction with authorship markup to maintain consistent author attribution across your website. ## Next Steps[โ€‹](#next-steps "Direct link to Next Steps") Learn more about E-E-A-T and structured data: Here are some articles from your website that cover E-E-A-T and structured data: * [What is E-A-T and why is it important?](https://wordlift.io/blog/en/entity/e-a-t/) \- This article discusses the importance of including structured data in your E-A-T strategy to enhance your overall efforts. * [Elevate Performance with Entity-Based SEO](https://wordlift.io/blog/en/entity-based-seo/) \- This article highlights how structured data enhances search engine visibility and is crucial for building E-E-A-T, especially for content on critical subjects like health and finance. * [What Is E-E-A-T, 2E-A-T Or Double E-A-T?](https://wordlift.io/blog/en/product-knowledge-graph-and-eeat/) \- This article explores the combination of E-E-A-T principles with product knowledge graphs to improve SEO and assess the credibility of websites. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/analyzing-query-match/ --- # Align Content with the Intended Search Query | WordLift Developer Documentation # Search Intent Match This workflow is designed to help us **align our content with the intended search query** to ensure maximum relevance and engagement from our target audience. By understanding and [matching the search intent](https://wordlift.io/blog/en/search-intent-optimization/), we can create content that not only ranks well but also satisfies the user's informational needs. ## Here are the steps[โ€‹](#here-are-the-steps "Direct link to Here are the steps") To ensure your webpage aligns perfectly with the intended search query, follow this streamlined workflow: ## 1\. Identify the Core Query and Intent[โ€‹](#1-identify-the-core-query-and-intent "Direct link to 1. Identify the Core Query and Intent") Start by pinpointing the exact query you aim to target. Understand the intent behind the search - is it informational, navigational, transactional, or investigational? You can try a prompt like the one below: ``` evaluate the content quality for the keyword 'Future-Proof Your Content From Google Core Updates' in relation to the content on 'https://wordlift.io/blog/en/google-core-update-ai-interview/' the intent is to gain information on how to improve existing content. ``` With this prompt, we define the **query**, the **url** as well as the narrative behind the searcher's intent. ### Here is what we get[โ€‹](#here-is-what-we-get "Direct link to Here is what we get") ![image](/assets/images/agent-wordlift-query-match-2eb55a05817ff582746ed2544db08505.png) ## 2\. Expand the content based on the analysis[โ€‹](#2-expand-the-content-based-on-the-analysis "Direct link to 2. Expand the content based on the analysis") Within the first response, we can now proceed with the following step to gain new insights on how to improve the article in order to match the provided query and search intent: ``` Can you help me improve and expand the blog post to match the query? ``` ### Here are the suggestions[โ€‹](#here-are-the-suggestions "Direct link to Here are the suggestions") ![image](/assets/images/agent-wordlift-query-match-expansion-42a603b61b0f8fe7b577bef05dbd3af4.png) ### Can we do it all in one step?[โ€‹](#can-we-do-it-all-in-one-step "Direct link to Can we do it all in one step?") Of course you can. Here is the prompt: ``` evaluate the content quality for the keyword 'Future-Proof Your Content From Google AI Core Updates' in relation to the content on 'https://wordlift.io/blog/en/google-core-update-ai-interview/' the intent is to gain information on how to improve content. After that help me improve and expand the blog post accordingly. ``` ### Here is the result[โ€‹](#here-is-the-result "Direct link to Here is the result") ![image](/assets/images/agent-wordlift-query-match-expansion-one-shot-8a15db638dab2c977efde7ecd2538ed4.gif) info The [Content Evaluations API](https://docs.wordlift.io/api/content-evaluations/wordlift-content-evaluations-api/) powering this workflow provides a comprehensive assessment of your content quality, readability, and SEO performance. This advanced tool evaluates multiple dimensions including content purpose, accuracy, depth, readability metrics, and search optimization factors to provide actionable insights for improvement. The tool visualizes your content's performance through a radar chart that displays scores across key metrics, making it easy to identify areas for enhancement. By focusing on these metrics, you can create more relevant, engaging, and search-optimized content that better addresses your audience's needs. Read more about [Content Quality Evaluation](/agent-wordlift/workflows/content-evaluation/) for a comprehensive guide to this feature. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/content-evaluation/ --- # Content Quality Evaluation | WordLift Developer Documentation # Evaluating Content Quality with WordLift AI SEO Agent The Content Quality Evaluation workflow allows you to comprehensively assess your content across multiple dimensions including quality, readability, and SEO performance. This powerful tool provides actionable insights to improve your content and make it more engaging for both users and search engines. ## Overview of Content Evaluation[โ€‹](#overview-of-content-evaluation "Direct link to Overview of Content Evaluation") WordLift's Content Evaluation Tool goes beyond traditional SEO analysis by examining multiple dimensions of your content: * **Content Quality**: Analyzes purpose, accuracy, and depth of your content * **Readability**: Evaluates reading level, sentence complexity, and overall clarity * **SEO Performance**: Assesses keyword usage, density, and optimization * **Metadata**: Examines word count, sentiment, and other technical aspects The tool visualizes these metrics through an intuitive radar chart, making it easy to identify strengths and areas for improvement. ## How to Use the Content Quality Evaluator[โ€‹](#how-to-use-the-content-quality-evaluator "Direct link to How to Use the Content Quality Evaluator") ### Step 1: Analyze Your Content[โ€‹](#step-1-analyze-your-content "Direct link to Step 1: Analyze Your Content") Start by analyzing your content against a specific keyword or topic to understand how well it addresses the intended search intent. You can evaluate content in two ways: **Option 1: Evaluate content at a URL:** ``` evaluate the content quality for the keyword "content marketing strategies" in relation to the content on "https://your-website.com/your-page" ``` **Option 2: Evaluate text directly:** ``` evaluate the following text for the keyword "content marketing strategies": [Paste your content here] ``` You can include multiple keywords for a more comprehensive evaluation: ``` evaluate the content quality for the keywords "content marketing strategies, SEO optimization, content distribution" in relation to the content on "https://your-website.com/your-page" ``` The tool works effectively with or without specified keywords. If no keywords are provided, it will identify the main topics of your content automatically. ### Evaluating Specific Content Sections[โ€‹](#evaluating-specific-content-sections "Direct link to Evaluating Specific Content Sections") You can evaluate either entire articles or specific sections of your content: ``` evaluate only the introduction section of the content on "https://your-website.com/your-page" for the keyword "content marketing" ``` This allows you to focus on improving specific parts of your content that may need more attention. ### Analyzing Multiple Content Pieces[โ€‹](#analyzing-multiple-content-pieces "Direct link to Analyzing Multiple Content Pieces") When evaluating multiple pieces of content, you can request the agent to omit the chart visualization for a more streamlined analysis: ``` evaluate the following URLs without rendering charts: 1. https://your-website.com/page-1 2. https://your-website.com/page-2 3. https://your-website.com/page-3 Compare their content quality and provide a summary table of the results. ``` This is particularly useful for batch analysis and content comparison tasks where visual charts for each piece might be overwhelming. ### Step 2: Review the Evaluation Results[โ€‹](#step-2-review-the-evaluation-results "Direct link to Step 2: Review the Evaluation Results") The agent will return detailed analysis results including: * An overall quality score (0-100) * Breakdown of scores across multiple dimensions * Specific insights about content strengths and weaknesses * Visualization of the results in a radar chart ![Content Quality Evaluation](/assets/images/agent-wordlift-content-evaluation-b73fa6f858983a4c5c7e79dba9573342.png) ### Step 3: Implement Content Improvements[โ€‹](#step-3-implement-content-improvements "Direct link to Step 3: Implement Content Improvements") Based on the evaluation, you can then request specific improvements: ``` based on the content quality evaluation, please suggest improvements to enhance the content purpose, depth, and readability ``` The agent will provide tailored recommendations to address the specific areas where your content needs improvement. ## Understanding the Evaluation Metrics[โ€‹](#understanding-the-evaluation-metrics "Direct link to Understanding the Evaluation Metrics") ### Content Quality Metrics[โ€‹](#content-quality-metrics "Direct link to Content Quality Metrics") * **Purpose**: How well the content fulfills its intended goal and satisfies user intent * **Accuracy**: Factual correctness and trustworthiness of the information * **Depth**: Comprehensiveness and thoroughness of topic coverage ### Readability Metrics[โ€‹](#readability-metrics "Direct link to Readability Metrics") * **Score**: Overall readability level of the content * **Grade Level**: Educational level required to easily understand the content * **Complex Sentences**: Analysis of sentence complexity and suggestions for improvement ### SEO Metrics[โ€‹](#seo-metrics "Direct link to SEO Metrics") * **Score**: Overall search optimization assessment * **Keyword Density**: Analysis of keyword usage and distribution * **Top Entities**: Important concepts and topics identified in the content ## Best Practices for Content Evaluation[โ€‹](#best-practices-for-content-evaluation "Direct link to Best Practices for Content Evaluation") 1. **Evaluate Regularly**: Periodically assess your most important pages to ensure they remain optimized 2. **Compare with Competitors**: Evaluate your content against top-ranking competitors for the same keywords 3. **Focus on Weakest Areas First**: Prioritize improvements for dimensions with the lowest scores 4. **Balance All Dimensions**: Aim for consistent performance across all metrics rather than excellence in just one area 5. **Test Improvements**: After making changes, re-evaluate to confirm the enhancements were effective By following this workflow, you can systematically improve your content across multiple dimensions, resulting in better engagement, higher authority, and improved search visibility. tip For content that targets multiple keywords or topics, consider running separate evaluations for each major keyword to ensure comprehensive optimization. ## Frequently Asked Questions[โ€‹](#frequently-asked-questions "Direct link to Frequently Asked Questions") ### How was this tool developed?[โ€‹](#how-was-this-tool-developed "Direct link to How was this tool developed?") We've worked closely with professional content teams to align the Content Quality Evaluator with existing editorial practices. This collaboration helped us: * Assess the quality standards of successful content * Understand what experienced editors consider valuable * Measure the SEO value of different content approaches * Compare professionally-edited content with AI-generated content created with tools like ChatGPT This real-world validation ensures the tool provides evaluations that align with both editorial excellence and SEO performance requirements, bridging the gap between content quality and search optimization. ### How does the tool measure content accuracy?[โ€‹](#how-does-the-tool-measure-content-accuracy "Direct link to How does the tool measure content accuracy?") The Content Quality Evaluator assesses accuracy through a sophisticated dual approach: * **Factual Verification**: Analyzes internal coherence of claims and statements within the content * **Logical Consistency Assessment**: Uses LLM-guided evaluation to check for logical consistency throughout the text * **Cross-Reference Capability**: For specific domains, can reference known facts against reliable sources The accuracy score represents how well the content presents factually correct and logically consistent information that readers can trust. ### How is content depth measured?[โ€‹](#how-is-content-depth-measured "Direct link to How is content depth measured?") Content depth is evaluated through multiple signals that collectively determine how thoroughly a topic is covered: * **Topic Coverage Breadth**: How comprehensively the content addresses various aspects of the main topic * **Supporting Detail Density**: The richness of examples, statistics, and evidence provided * **Analysis Complexity**: Whether the content goes beyond surface-level explanations to provide deeper insights * **Citation Quality/Diversity**: The strength and variety of supporting references and sources * **Semantic Richness Metrics**: The sophistication of vocabulary and concept relationships within the text Higher depth scores indicate content that provides comprehensive, nuanced coverage rather than superficial treatment of topics. ### Can I use this tool for different content types?[โ€‹](#can-i-use-this-tool-for-different-content-types "Direct link to Can I use this tool for different content types?") Yes, the Content Quality Evaluator works effectively across various content types including: * Blog posts and articles * Product descriptions * Landing pages * Educational content * Technical documentation The evaluation adapts to the specific purpose and audience of your content type, providing relevant insights for each format. ### How often should I re-evaluate my content?[โ€‹](#how-often-should-i-re-evaluate-my-content "Direct link to How often should I re-evaluate my content?") For high-value pages, we recommend re-evaluation: * After significant content updates * Quarterly for cornerstone content * When search rankings fluctuate * When industry information changes * As part of regular content audits Ongoing evaluation helps ensure your content remains relevant, accurate, and optimized for current search intent. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/create-internal-links/ --- # Creating Internal Links | WordLift Developer Documentation # Enhancing Internal Linking with WordLift AI SEO Agent [Internal linking](https://wordlift.io/blog/en/dynamic-internal-links-in-seo/) is a critical aspect of SEO, helping to establish site architecture and spread link equity. With WordLift [AI SEO Agent](https://wordlift.io/ai-seo-agent/), you can streamline the process of creating internal links to enhance your website's SEO and user experience. This guide will walk you through the steps to effectively use Agent WordLift for creating internal links on your website. ## Overview of Internal Linking[โ€‹](#overview-of-internal-linking "Direct link to Overview of Internal Linking") Internal links are hyperlinks that point to other pages on the same website. They are crucial for helping search engines understand the structure and content hierarchy of your site, as well as for guiding visitors to related content. Effective internal linking can improve your site's SEO by ensuring that link equity is passed to the most important pages. ## Steps to Create Internal Links with Agent WordLift[โ€‹](#steps-to-create-internal-links-with-agent-wordlift "Direct link to Steps to Create Internal Links with Agent WordLift") ### Step 1: Identify Content for Internal Linking[โ€‹](#step-1-identify-content-for-internal-linking "Direct link to Step 1: Identify Content for Internal Linking") First, identify the pages on your website that you want to enrich by adding internal links. These could be cornerstone content, high-traffic pages, or pages you want to improve with links pointing to other relevant pages. ### Example Prompt for Identifying Related Articles[โ€‹](#example-prompt-for-identifying-related-articles "Direct link to Example Prompt for Identifying Related Articles") In the example below we use as a reference the WordLift blog. ``` Find content on my website from the โ€œWhat is structured data?โ€ page (https://wordlift.io/blog/en/entity/structured-data/). Analyze the text to identify up to 5 related articles. For each article, determine a relevant keyword, generate keyword suggestions for each keyword, and create an anchor text of no more than 30 characters. Finally, compile the HTML for all 5 links with their respective anchor texts. ``` ![image](/assets/images/agent-wordlift-internal-links_01-22fea1ce78f63b91e8fef6dafd6b4e96.png) ### Step 2: Batch Processing for Multiple Pages[โ€‹](#step-2-batch-processing-for-multiple-pages "Direct link to Step 2: Batch Processing for Multiple Pages") If you need to create internal links for multiple pages, you can use a more comprehensive prompt to handle this in batches. ### Example Prompt for Batch Processing[โ€‹](#example-prompt-for-batch-processing "Direct link to Example Prompt for Batch Processing") ``` Find content on my website from the โ€œWhat is structured data?โ€ page (https://wordlift.io/blog/en/entity/structured-data/). Analyze the text to identify up to 5 related articles. For each article, determine a relevant keyword, generate keyword suggestions for each keyword, and create an anchor text of no more than 30 characters. Finally, compile the HTML for all 5 links with their respective anchor texts. Do the same work also for the pages: "The GS1 Digital Link explained for SEO Jedis (and their clients)" (https://wordlift.io/blog/en/gs1-digital-link-seo/), "Dynamic Internal Links in SEO: Your Superhero in the Generative AI Era" (https://wordlift.io/blog/en/dynamic-internal-links-in-seo/), "Understanding LLM Optimization: Ethical AI and Protecting Your Content" (https://wordlift.io/blog/en/understanding-llm-optimization/) and "From Harold Cohen to Modern AI: The Power of Symbolic Reasoning" (https://wordlift.io/blog/en/the-power-of-symbolic-reasoning/). Remember the following rules: never link to the homepage of the blog (https://wordlift.io/blog/en/) choose carefully the anchor based on the content relevancy and keyword opportunity analysis. ``` ### Step 3: Execute the Prompt with WordLift AI SEO Agent[โ€‹](#step-3-execute-the-prompt-with-wordlift-ai-seo-agent "Direct link to Step 3: Execute the Prompt with WordLift AI SEO Agent") Using the prompts provided, execute the commands with WordLift AI SEO Agent. The tool will analyze the specified pages, identify related articles, and generate appropriate internal links along with suggested anchor texts. ### Step 4: Review and Implement the Suggestions[โ€‹](#step-4-review-and-implement-the-suggestions "Direct link to Step 4: Review and Implement the Suggestions") Once the internal links and anchor texts are generated, review them to ensure they align with your content strategy and SEO goals. Make any necessary adjustments before implementing them on your website. ## Best Practices for Internal Linking[โ€‹](#best-practices-for-internal-linking "Direct link to Best Practices for Internal Linking") 1. **Use Descriptive Anchor Texts:** Ensure that the anchor texts are descriptive and relevant to the linked content. 2. **Link to Relevant Content:** Only link to pages that are contextually relevant to the content on the source page. 3. **Avoid Over-Linking:** Do not overcrowd your content with too many internal links, as this can dilute their value and affect readability. 4. **Regularly Update Links:** Periodically review and update your internal links to ensure they are still relevant and effective. info By following these steps and utilizing WordLift AI SEO Agent, you can create a robust internal linking structure that enhances your website's SEO performance and provides a better user experience. If you want to scale the internal linking on your website to multiple pages read the full details from WordLift's blog on [dynamic internal links](https://wordlift.io/blog/en/dynamic-internal-links-in-seo/) and [get in contact with our SEO management service](https://wordlift.io/seo-management-service/). --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/create-product-description/ --- # Create product descriptions using keyword insights | WordLift Developer Documentation # Create product descriptions using keyword insights ## Introduction[โ€‹](#introduction "Direct link to Introduction") In this workflow, we'll demonstrate how to leverage **WordLift's AI SEO Agent** to craft compelling **e-commerce product descriptions** that stand out. The focus is to use _keyword insights_ to enhance product visibility and appeal, especially for e-commerce platforms. Our example will center around creating enticing descriptions for a product using a strategic approach that involves analyzing keywords and integrating them seamlessly into the product descriptions. ## Crafting Product Descriptions[โ€‹](#crafting-product-descriptions "Direct link to Crafting Product Descriptions") Our journey begins with an example that illustrates how to create an engaging description for an e-commerce product, using "Creamy Concealer" by Acme as our focal point. ### Here's the prompt[โ€‹](#heres-the-prompt "Direct link to Here's the prompt") ``` Analyze the "Creamy Concealer" by ACME using the query tool, using its description and product category to extract key insights. Suggest relevant keywords that could enhance its online visibility. Based on these insights, generate 10 SEO-optimized product descriptions in French, each incorporating: - Brand and product name - Relevant keywords - A tone that matches the brand's identity - Characteristics that highlight the product's unique selling points ``` ![image](/assets/images/agent-wordlift-product-description-6c812226b6abe97862498f3360312167.png) ## How Things Work Behind the Scenes[โ€‹](#how-things-work-behind-the-scenes "Direct link to How Things Work Behind the Scenes") The WordLift AI SEO Agent assists in this process by: * **Analyzing Product Information**: It starts by examining the provided product details, including its description and category. This helps in understanding the product's key features and target audience. * **Identifying Key Keywords**: The agent then identifies relevant keywords associated with the product. These keywords are essential for ensuring the product ranks well in search engine results. Agent will analyze keyword data. * **Creating Engaging Descriptions**: Leveraging the product insights and identified keywords, WordLift crafts SEO-optimized product descriptions. These descriptions are designed to capture the attention of potential buyers and improve the product's search visibility. info To address the need for generating content at scale, particularly when businesses require more than just a few descriptions, we have a groundbreaking solution that amplifies this transformative process. With WordLift's advanced [Content Generation](https://wordlift.io/content-generation/) capabilities, you're no longer limited by the constraints of manual content creation. This feature is specifically designed for enterprises looking to produce a vast amount of content without sacrificing quality, relevance, or SEO optimization. Understanding this workflow allows you to trust the process, ensuring the descriptions are not only aligned with the brand's voice but are also optimized to attract and engage your target audience. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/create-social-media-content-buckets/ --- # Create content buckets for Social Media | WordLift Developer Documentation # Create content buckets for Social Media ## Introduction[โ€‹](#introduction "Direct link to Introduction") **Content buckets** are categories of information that we can use to organize our content. Each bucket is different, but they should all relate back to the overall brand message. Content buckets are not topics. They are types of content. The buckets you use can vary depending on our business goals. We will start with a first example to build content buckets for social media around the topics โ€œGS1โ€ and "GS1 Digital Link" using the content from our company's blog. ### Here goes the prompt[โ€‹](#here-goes-the-prompt "Direct link to Here goes the prompt") ``` Search for content related to 'GS1', 'GS1 Digital Link' and create content buckets from Social Media. ``` ![image](/assets/images/agent-wordlift-content-buckets-ac18bfbc4ec13a28813fd68c042c21ba.png) By following this workflow, you can get some inspiration and find what will work best for you. Grounding Agent WordLift in your brandโ€™s content is crucial to understanding what content your audience loves the most. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/create-social-media-posts/ --- # Create social media posts using content on your website | WordLift Developer Documentation # Create social media posts using content on your website ## Introduction[โ€‹](#introduction "Direct link to Introduction") Today, our goal is to **create, with the help of WordLift, compelling posts for LinkedIn** using the content we have on our website. In this example, we will use the agentโ€™s multifunctional capability to **perform several tasks based on a single prompt**. WordLift AI SEO Agent will analyze content, extract entities, suggest keywords, and generate SEO-optimized posts for a specific audience on LinkedIn. ## Writing Posts for LinkedIn[โ€‹](#writing-posts-for-linkedin "Direct link to Writing Posts for LinkedIn") We will start with a first example related to our website to write content around โ€œneuro-symbolic AI.โ€ ### Here goes the prompt[โ€‹](#here-goes-the-prompt "Direct link to Here goes the prompt") ``` Search for 'neuro-symbolic AI' and carefully analyze the writing style on my website, then extract entities and suggest keywords, and, with this in mind, write three SEO-optimized LinkedIn posts to promote the topic to a business audience in the publishing sector. Always add links back to the website to help users discover additional information. ``` ![image](/assets/images/agent-wordlift-social-media-posts-ideas-8f6e93d07624e4ec63d4b3cc8eaca414.png) ## Creating a Thread on X[โ€‹](#creating-a-thread-on-x "Direct link to Creating a Thread on X") Let's craft now a similar prompt for creating _a Twitter thread_. ### Here goes the prompt for X[โ€‹](#here-goes-the-prompt-for-x "Direct link to Here goes the prompt for X") ``` Search for 'neuro-symbolic AI' and carefully analyze the writing style on my website and, with this in mind, create a Twitter thread to promote the topic to web publishers. Always add links back to the website to help users discover additional information. ``` ![image](/assets/images/agent-wordlift-x-thread-b446cef5cb9de98a6748b4c8841bf822.png) ## How Things Work Behind the Scenes[โ€‹](#how-things-work-behind-the-scenes "Direct link to How Things Work Behind the Scenes") Using the prompt above, WordLift effectively assists you by: * **Analyzing Your Website:** It searches your website for content related to "neuro-symbolic AI" to gather relevant information and understand your writing style. This ensures the generated content aligns with your existing content and voice. * **Identifying Key Terms:** It analyzes keywords related to "neuro-symbolic AI" and suggests relevant search terms to enhance your LinkedIn posts (or to create a thread on X). This expands your reach by including trending and related terms. * **Crafting Engaging Content:** It leverages the insights from the website analysis and keyword suggestions to create social media posts highlighting the innovative aspects of neuro-symbolic AI, its relevance to the publishing sector, and its benefits. These posts are designed to engage a business audience on LinkedIn or X and include links to your website content. Understanding these steps helps you trust the process and ensures the generated content aligns with your website's content and target audience. ## Final Review[โ€‹](#final-review "Direct link to Final Review") Finally, we can review the key concepts behind the generated posts for LinkedIn with a new prompt: ``` Draw a mind map of the key concepts behind each post. ``` ![image](/assets/images/agent-wordlift-mind-map-social-media-posts-915e708394c1e69254156071c486beb9.png) This will produce the following result. By following this workflow, you can efficiently produce targeted, **SEO-optimized social media content** that resonates with your audience, leveraging the comprehensive capabilities of the WordLift AI SEO Agent. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/enhanced-entity-research/ --- # Enhanced Entity Research with Google Knowledge Graph | WordLift Developer Documentation # Enhanced Entity Research with Google Knowledge Graph Unlock comprehensive entity intelligence by combining Google's Enterprise Knowledge Graph with WordLift's semantic enrichment. This powerful workflow provides 3-5x richer entity data for superior content creation, competitive analysis, and SEO optimization. Enhanced Knowledge Graph Technology This workflow leverages Agent WordLift's Enhanced Google Knowledge Graph tool, which automatically enriches basic entity data with semantic attributes like gender, occupation, nationality, education, and detailed relationshipsโ€”providing the most comprehensive entity profiles available. ## How Enhanced Entity Research Works[โ€‹](#how-enhanced-entity-research-works "Direct link to How Enhanced Entity Research Works") Agent WordLift's Enhanced Knowledge Graph tool operates on multiple levels: ### **Basic Google Knowledge Graph Search**[โ€‹](#basic-google-knowledge-graph-search "Direct link to basic-google-knowledge-graph-search") * Searches Google's Enterprise Knowledge Graph API * Returns standard entity data: name, description, types, identifiers * Sources: Wikipedia, Google Knowledge Graph * Response time: \~200-500ms ### **Automatic WordLift Semantic Enrichment**[โ€‹](#automatic-wordlift-semantic-enrichment "Direct link to automatic-wordlift-semantic-enrichment") * Automatically detects entities with Wikidata IDs * Adds semantic attributes: gender, occupation, birthDate, nationality, education * Provides relationship mapping and contextual data * Additional processing time: \~300-800ms * **Intelligent Fallback**: Always returns Google KG data even if enrichment fails ### **Enhanced Entity Types Supported**[โ€‹](#enhanced-entity-types-supported "Direct link to enhanced-entity-types-supported") * **Person Entities**: Enhanced with gender, occupation, nationality, education, biographical details * **Organization Entities**: Enriched with industry classification, founding dates, key people, corporate structure * **Location Entities**: Enhanced with population data, administrative divisions, geographic relationships * **Concept Entities**: Enriched with related concepts, semantic properties, domain classifications ## Why Enhanced Entity Research Matters[โ€‹](#why-enhanced-entity-research-matters "Direct link to Why Enhanced Entity Research Matters") * **Content Creation**: Rich entity data creates more authoritative, detailed content * **SEO Strategy**: Enhanced relationships improve semantic optimization and topic clustering * **Competitive Analysis**: Corporate intelligence reveals market positioning and opportunities * **Fact-Checking**: Multi-source verification ensures accuracy and credibility ## Prerequisites[โ€‹](#prerequisites "Direct link to Prerequisites") 1. **Agent WordLift Access**: Ensure you have access to Agent WordLift's enhanced tools 2. **Research Objectives**: Define what type of entity intelligence you need 3. **Content Goals**: Identify how enhanced data will improve your content or strategy ## Step-by-Step Workflow[โ€‹](#step-by-step-workflow "Direct link to Step-by-Step Workflow") ### Step 1: Basic Entity Research[โ€‹](#step-1-basic-entity-research "Direct link to Step 1: Basic Entity Research") Start with a comprehensive entity lookup: ``` Research comprehensive information about [entity name] using the enhanced Google Knowledge Graph with WordLift semantic enrichment. Include all available biographical, corporate, or geographic data. ``` **Example for Person Research:** ``` Research comprehensive information about "Albert Einstein" using the enhanced Google Knowledge Graph with WordLift semantic enrichment. Include all available biographical data. ``` ### Step 2: Corporate Intelligence Gathering[โ€‹](#step-2-corporate-intelligence-gathering "Direct link to Step 2: Corporate Intelligence Gathering") For business and competitive research: ``` Analyze the company [company name] using enhanced knowledge graph data. Include headquarters, key people, industry classification, founding details, and semantic relationships with competitors. ``` **Example:** ``` Analyze the company "Rocket Mortgage" using enhanced knowledge graph data. Include headquarters, key people, industry classification, founding details, and semantic relationships with competitors. ``` ### Step 3: Entity Relationship Mapping[โ€‹](#step-3-entity-relationship-mapping "Direct link to Step 3: Entity Relationship Mapping") Discover connections between entities: ``` Map the semantic relationships between [entity1] and [entity2] using enhanced knowledge graph data. Identify shared attributes, connections, and contextual relationships. ``` **Example:** ``` Map the semantic relationships between "Tesla Inc" and "SpaceX" using enhanced knowledge graph data. Identify shared attributes, connections, and contextual relationships. ``` ### Step 4: Multi-Entity Comparative Analysis[โ€‹](#step-4-multi-entity-comparative-analysis "Direct link to Step 4: Multi-Entity Comparative Analysis") Research multiple related entities: ``` Compare and analyze the following entities using enhanced knowledge graph data: [entity1], [entity2], [entity3]. Highlight similarities, differences, and competitive positioning. ``` **Example:** ``` Compare and analyze the following entities using enhanced knowledge graph data: Apple Inc, Microsoft Corporation, Google LLC. Highlight similarities, differences, and competitive positioning. ``` ### Step 5: Content Enhancement Research[โ€‹](#step-5-content-enhancement-research "Direct link to Step 5: Content Enhancement Research") Gather entity data specifically for content creation: ``` Research [entity name] for content creation purposes. Focus on unique biographical details, lesser-known facts, notable achievements, and semantic connections that would enhance article depth and authority. ``` ## Advanced Use Cases[โ€‹](#advanced-use-cases "Direct link to Advanced Use Cases") ### **Corporate Intelligence Workflow**[โ€‹](#corporate-intelligence-workflow "Direct link to corporate-intelligence-workflow") 1. **Company Profile Research**: Basic corporate data plus enhanced industry classification 2. **Leadership Analysis**: Research key executives with enhanced biographical data 3. **Competitive Mapping**: Analyze competitor relationships and market positioning 4. **Market Context**: Understand industry landscape through entity relationships ### **Content Research Workflow**[โ€‹](#content-research-workflow "Direct link to content-research-workflow") 1. **Subject Research**: Enhanced biographical or corporate intelligence 2. **Fact Verification**: Multi-source validation through Google KG + WordLift 3. **Relationship Discovery**: Find unexpected connections for unique angles 4. **Authority Building**: Comprehensive data for credible, detailed content ### **SEO Entity Strategy**[โ€‹](#seo-entity-strategy "Direct link to seo-entity-strategy") 1. **Entity Gap Analysis**: Compare your content entities with enhanced competitor data 2. **Semantic Clustering**: Use relationship data for topic cluster development 3. **Schema Enhancement**: Rich entity data for detailed structured markup 4. **Authority Optimization**: Leverage comprehensive entity profiles for E-A-T ## Performance & Reliability[โ€‹](#performance--reliability "Direct link to Performance & Reliability") ### **Response Times**[โ€‹](#response-times "Direct link to response-times") * **Basic Search**: 200-500ms average * **Enhanced Search**: 500-1,300ms total (includes enrichment) * **Batch Processing**: Optimized for multiple entity research ### **Reliability Features**[โ€‹](#reliability-features "Direct link to reliability-features") * **Automatic Fallback**: Always returns Google KG data even if WordLift enrichment fails * **Error Handling**: Comprehensive logging and graceful degradation * **Rate Limiting**: Built-in retry logic for consistent performance ## Expected Outcomes[โ€‹](#expected-outcomes "Direct link to Expected Outcomes") After completing this workflow, you'll have: ### ๐Ÿ“Š **Comprehensive Entity Profiles**[โ€‹](#-comprehensive-entity-profiles "Direct link to -comprehensive-entity-profiles") * **3-5x more data points** per entity compared to basic searches * **Multi-source verification** ensuring accuracy and completeness * **Semantic relationships** revealing unexpected connections and opportunities ### ๐ŸŽฏ **Enhanced Content Intelligence**[โ€‹](#-enhanced-content-intelligence "Direct link to -enhanced-content-intelligence") * **Rich biographical data** for person-focused content * **Detailed corporate intelligence** for business analysis * **Geographic context** for location-based content * **Concept relationships** for topic authority ### ๐Ÿ” **Strategic Insights**[โ€‹](#-strategic-insights "Direct link to -strategic-insights") * **Competitive positioning** through enhanced corporate data * **Market relationships** via entity connection mapping * **Content opportunities** through semantic gap analysis * **Authority signals** for improved E-A-T optimization ## Tips for Maximum Effectiveness[โ€‹](#tips-for-maximum-effectiveness "Direct link to Tips for Maximum Effectiveness") 1. **Be Specific**: Use exact entity names for best results 2. **Combine Searches**: Research related entities for comprehensive coverage 3. **Verify Enhancements**: Cross-reference enhanced data when critical accuracy is needed 4. **Document Findings**: Save comprehensive profiles for future reference 5. **Update Regularly**: Entity data evolvesโ€”refresh important profiles periodically ## Integration with Other Workflows[โ€‹](#integration-with-other-workflows "Direct link to Integration with Other Workflows") * **[Content Quality Evaluation](/agent-wordlift/workflows/content-evaluation/)**: Use enhanced entity data for authority assessment * **[Google Search Console Integration](/agent-wordlift/workflows/google-search-console/)**: Optimize for entity-based queries * **[Instagram Indexing Analysis](/agent-wordlift/workflows/instagram-indexing-analysis/)**: Align social content with entity relationships ## Learn More[โ€‹](#learn-more "Direct link to Learn More") * [Enhanced Knowledge Graph Prompts](/agent-wordlift/prompt-reference/#enhanced-knowledge-graph-research) * [CLI Integration for Entity Research](/agent-wordlift/integrations/#agent-wordlift-cli-integration) * [MCP Integration](/agent-wordlift/integrations/#agent-wordlift-model-context-protocol-mcp-integration) --- Pro Tip The enhanced entity research workflow is particularly powerful when combined with content creation. Use the rich biographical and corporate data to create more authoritative, detailed content that demonstrates expertise and builds trust with both users and search engines. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/faq/ --- # Generate FAQs | WordLift Developer Documentation # Creating frequently asked questions (FAQs) This workflow is designed to help us with the process of creating **frequently asked questions (FAQs)** based on content from our website and insights from WordLift's AI SEO Agent. # Understanding the Entity Gap The first step involves analyzing the "_entity gap_" between a specific webpage and a user query. Entities are essentially keywords or concepts that define a topic. info WordLift's AI SEO Agent helps us understand the entity gap by: * **Identifying key entities on a webpage:** This helps us understand what information the page covers. * **Analyzing top search results:** The Agent looks at the entities mentioned in top-ranking pages for the same query. * **Highligting missing entities:** By comparing these, the Agent identifies concepts relevant to the topic but missing from our webpage. This analysis helps us create FAQs that address potential user questions based on what our content might be missing. ## Generate Questions Based on the Entity Gap Analysis[โ€‹](#generate-questions-based-on-the-entity-gap-analysis "Direct link to Generate Questions Based on the Entity Gap Analysis") For example, imagine this workflow is analyzing the entity gap between the blog post "Neuro-symbolic AI: Where Knowledge Graphs Meet LLMs" on the WordLift blog and the search query "_neuro-symbolic AI_". **Entity Gap Analysis**: The AI SEO Agent would analyze the blog post and identify key entities related to "neuro-symbolic AI" that are not explicitly mentioned. **Top Missing Entities**: Based on this analysis, the Agent would determine the top three missing entities most relevant to understanding "neuro-symbolic AI" in the context of the blog post. **Question Generation**: Finally, the workflow would use these missing entities to automatically generate three relevant questions users might have about "neuro-symbolic AI." ``` Analyze the entity gap between https://wordlift.io/blog/en/neuro-symbolic-ai/ and the query "neuro-symbolic AI", look at the top missing entities and, if they are relevant, generate three questions accordingly. ``` ![image](/assets/images/agent-wordlift-top-missing-entities-61c23ce1890dfcc73c1bf41b30d909a7.png) ## Answer the Questions[โ€‹](#answer-the-questions "Direct link to Answer the Questions") Once the questions are generated, we can provide the agent with a new prompt that will automatically search the website and relevant sources to find answers. It will also consider the writing style of the target webpage to ensure the answers are consistent and informative. ``` Now, search on the website, read the writing style and prepare the answer for the first question "How does Artificial General Intelligence (AGI) relate to the development of neuro-symbolic AI systems, and what are the potential implications of integrating AGI capabilities into neuro-symbolic models?". Remember to add links back to the sources. ``` This approach allows for efficient generation of FAQs that address potential user queries based on the content of a webpage. ![image](/assets/images/agent-wordlift-answers-faq-938b8613911f22a89c7d35f58079e386.png) --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/google-search-console/ --- # Google Search Console Integration | WordLift Developer Documentation # Google Search Console Integration The Google Search Console (GSC) integration enables WordLift Agent to connect directly with Google Search Console API ๐Ÿ“ˆ, providing access to search analytics data. ![Agent WordLift Google Search Console Integration](/assets/images/agent-wordlift-gsc-integration-22ef6ca538b9f4ab40e94f38256a243d.png) ## Key Features[โ€‹](#key-features "Direct link to Key Features") * **Direct GSC API Access:** Connect directly to Google's Search Console API to retrieve performance data (this is done using WordLift Dashboard) * **OAuth Authentication:** Secure authentication flow with automated browser handling and token persistence * **Date-Aware Analysis:** Built-in date utilities for working with the most current data * **Multiple Dimensions:** Analyze data by query, page, device, country and other dimensions * **Metrics Visualization:** Get clicks, impressions, CTR, and position data for your content * **Error Handling:** Helpful suggestions when dealing with data issues or permissions ## How It Works[โ€‹](#how-it-works "Direct link to How It Works") ### Authentication[โ€‹](#authentication "Direct link to Authentication") * First-time setup requires OAuth authentication from the [WordLift Dashboard](https://my.wordlift.io) * Browser-based flow for secure credential handling * Tokens are securely stored in the WordLift platform * Data from the GSC is also automatically imported in the Knowledge Graph ### Analysis Capabilities[โ€‹](#analysis-capabilities "Direct link to Analysis Capabilities") * Query-level analysis (what people are searching for) * Page-level analysis (which content is performing) * Combined analysis (which queries lead to which pages) * Performance metrics (clicks, impressions, CTR, position) ## Example Use Cases[โ€‹](#example-use-cases "Direct link to Example Use Cases") * Identify top-performing content on your website * Discover keywords driving traffic to specific pages * Analyze search trends over time * Find optimization opportunities (high impression, low CTR queries) * Compare performance across different sections of your website * Monitor mobile vs desktop performance ## Getting Started[โ€‹](#getting-started "Direct link to Getting Started") To start using the GSC integration: 1. Ask the agent to "Connect to Google Search Console" 2. Complete the authentication flow in your browser 3. Begin querying your search data with natural language prompts Below is a demonstration of the first-time activation process: ![Google Search Console Activation Process](/assets/images/agent-wordlift-gsc-activation-3f9f526623484fba39931cf359bc8eac.gif) _The animation shows the step-by-step process to connect WordLift Agent with Google Search Console through the authentication flow._ ## Example Prompts[โ€‹](#example-prompts "Direct link to Example Prompts") Here are some example prompts to help you get started with the Google Search Console integration: * "Show me my top search queries from the last 7 days" * "What are the pages with the highest impressions but low CTR?" * "Compare mobile vs desktop performance for my top content" * "Show me queries related to \[topic\] driving traffic to my site" * "What new keywords have appeared in the last 30 days?" * "Analyze the performance of the blog section of my website" * "Which countries are generating the most traffic to my site?" --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/ideas-for-newsletters/ --- # Ideas for the Newsletter | WordLift Developer Documentation # Ideas for newsletters This workflow is designed to help us **create a newsletter that engages the target audience** and keeps them informed about a specific topic. ## Generate Ideas and a First Draft[โ€‹](#generate-ideas-and-a-first-draft "Direct link to Generate Ideas and a First Draft") To get things started, we will use this prompt: ``` I'm looking for ideas on how to write engaging and informative newsletters that will keep the audience in the e-commerce space informed about structured data. Search my website, gather all the information, and present the ideas and a first draft. ``` With this prompt, we define **e-commerce** as a target audience and **structured data** as the main topic. ### Here is what we get[โ€‹](#here-is-what-we-get "Direct link to Here is what we get") ![image](/assets/images/agent-wordlift-newsletter-ideas-6b1384ebecf10c9ed78cb3827adf6aab.png) Within the first response, we will also receive the first draft: ![image](/assets/images/agent-wordlift-first-draft-newsletter-ideas-41870db2df36282e932b8e3e95d564ad.png) --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/instagram-indexing-analysis/ --- # Instagram Indexing Analysis | WordLift Developer Documentation # Instagram Indexing Analysis (AI Sub-Agent Workflow) Watch the complete workflow demonstration: MCP-Powered Workflow This workflow leverages Agent WordLift as a specialized SEO sub-agent through the [Model Context Protocol (MCP) integration](/agent-wordlift/integrations/#agent-wordlift-model-context-protocol-mcp-integration). Agent WordLift provides deep SEO expertise while working seamlessly within Claude, ChatGPT, Copilot, or Gemini. With Instagram switching from "part-indexed" to "fully indexable" in Google Search on July 10, 2025, every reel, carousel, and highlight can become a valuable search asset. This workflow helps you analyze how well your Instagram content aligns with your website content and organic search rankings. ## How Agent WordLift Works in This Analysis[โ€‹](#how-agent-wordlift-works-in-this-analysis "Direct link to How Agent WordLift Works in This Analysis") Agent WordLift automatically uses multiple sophisticated tools to provide comprehensive Instagram indexing analysis that goes far beyond basic social media analytics: * **Google Search Console Integration** โ€“ Pulls real performance data from your website with 2025 search trends * **Live SERP Analysis** โ€“ Conducts real-time visibility checks showing exact rankings (e.g., "#3 for brand terms") * **Google Trends Analysis** โ€“ Identifies search spikes and correlates them with content performance (e.g., "100/100 trend spike in May 2025") * **Entity Gap Analysis** โ€“ Compares content themes between Instagram and website with precision scoring * **Advanced Search Operators** โ€“ Automatically runs complex queries to audit Instagram exposure across multiple dimensions * **Competitive Intelligence** โ€“ Benchmarks your visibility against medical authorities and industry competitors * **Emerging Keyword Discovery** โ€“ Identifies new trending terms like "chad aesthetic" and "chirurgia estetica mandibola" * **Cross-Platform Correlation** โ€“ Shows how content performance connects across Instagram, website, and search behavior ### What Makes This Analysis Unique[โ€‹](#what-makes-this-analysis-unique "Direct link to What Makes This Analysis Unique") Unlike traditional social media analytics, this workflow provides **verified search performance data** showing exactly how Instagram content performs in Google's organic search results, with insights like: * Instagram ranking #3 for "ortognatica roma" (above Facebook and YouTube) * Instagram ranking #5 for competitive medical terms like "chirurgia ortognatica roma" * Correlation between May 2025 search spikes and Instagram content effectiveness * 92% content alignment scores between website strategy and indexed social content ## Why This Matters[โ€‹](#why-this-matters "Direct link to Why This Matters") With **AI Overviews reducing organic CTR by 34โ€“37%**, social media indexing becomes critical for visibility. Instagram accounts are already ranking above medical directories for competitive terms even before the July 10th switch. ## Prerequisites[โ€‹](#prerequisites "Direct link to Prerequisites") 1. **Set up MCP Integration**: Follow our [MCP setup guide](/agent-wordlift/integrations/#agent-wordlift-model-context-protocol-mcp-integration) to connect Agent WordLift with your preferred AI assistant 2. **Google Search Console Access**: Ensure your website is connected to Google Search Console 3. **Instagram Account**: Access to the Instagram account you want to analyze ## Step-by-Step Workflow[โ€‹](#step-by-step-workflow "Direct link to Step-by-Step Workflow") ### Step 1: Initial Setup in Your AI Assistant[โ€‹](#step-1-initial-setup-in-your-ai-assistant "Direct link to Step 1: Initial Setup in Your AI Assistant") Start by asking your AI assistant (Claude, ChatGPT, etc.) to activate Agent WordLift: ``` I need to analyze my Instagram content's search visibility using Agent WordLift. Please help me set up an Instagram indexing analysis for my account @{yourhandle} in the {your_niche} industry. ``` ### Step 2: Website Content Analysis[โ€‹](#step-2-website-content-analysis "Direct link to Step 2: Website Content Analysis") Ask Agent WordLift to analyze your website's current content: ``` Using Agent WordLift, analyze my website's content for the following topics: [list your main topics]. I want to understand what content themes are already covered on my site. ``` ### Step 3: Content Alignment Analysis[โ€‹](#step-3-content-alignment-analysis "Direct link to Step 3: Content Alignment Analysis") Compare your Instagram content with your website content: ``` Compare the topics and keywords from my Instagram posts with my website content. Identify: - Content gaps where Instagram covers topics not on my website - Opportunities to create website content based on successful Instagram posts - Keyword overlaps and potential cannibalization issues ``` ### Step 4: SERP Position Analysis[โ€‹](#step-4-serp-position-analysis "Direct link to Step 4: SERP Position Analysis") Check where your Instagram content ranks for your target keywords: ``` For my main keywords [list keywords], check: - Where my Instagram posts rank in search results - Where my website pages rank for the same keywords - Which content type (Instagram vs website) performs better for each keyword ``` ### Step 5: Competitive Intelligence[โ€‹](#step-5-competitive-intelligence "Direct link to Step 5: Competitive Intelligence") Analyze competitors' Instagram indexing: ``` Analyze my top 3 competitors' Instagram indexing: - @{competitor1} - @{competitor2} - @{competitor3} Compare their indexed content volume and topics with mine. ``` ### Step 6: Content Strategy Recommendations[โ€‹](#step-6-content-strategy-recommendations "Direct link to Step 6: Content Strategy Recommendations") Get actionable recommendations: ``` Based on the analysis, provide recommendations for: - Which Instagram posts should be expanded into website content - Which website topics should be covered more on Instagram - Optimization strategies for better search visibility - Content calendar suggestions for July-December 2025 ``` ## Example Prompts for AI Assistants[โ€‹](#example-prompts-for-ai-assistants "Direct link to Example Prompts for AI Assistants") ### For Claude with MCP[โ€‹](#for-claude-with-mcp "Direct link to For Claude with MCP") ``` Using Agent WordLift through MCP, analyze my Instagram account @orthognatica_roma for search visibility. Compare the indexed Instagram content with my website content and provide recommendations for improving overall search presence in the orthodontic surgery niche. ``` ### For ChatGPT with Agent WordLift[โ€‹](#for-chatgpt-with-agent-wordlift "Direct link to For ChatGPT with Agent WordLift") ``` I need Agent WordLift to help me understand how my Instagram content @{yourhandle} is performing in Google search results. Analyze the content alignment with my website and suggest optimization strategies for the upcoming Instagram indexing changes. ``` ## Expected Outcomes[โ€‹](#expected-outcomes "Direct link to Expected Outcomes") After completing this workflow, you'll receive a comprehensive HTML report that includes: ### ๐Ÿ“Š **Executive Summary Dashboard**[โ€‹](#-executive-summary-dashboard "Direct link to -executive-summary-dashboard") * **Live SERP rankings** for your Instagram content (e.g., "#3 for brand terms", "#5 for medical queries") * **Search performance metrics** with actual Google Search Console data * **Trending keyword opportunities** with Google Trends correlation * **Content alignment score** (0-100%) between website and Instagram ### ๐ŸŽฏ **New Target Keywords Analysis**[โ€‹](#-new-target-keywords-analysis "Direct link to -new-target-keywords-analysis") * **Emerging trend identification** with search volume spikes and timing * **Competitive landscape analysis** showing who ranks for new opportunities * **Content gap identification** where Instagram could capture trending searches * **Priority action items** ranked by potential impact and effort required ### ๐Ÿ“ฑ **Live Google Search Performance Data**[โ€‹](#-live-google-search-performance-data "Direct link to -live-google-search-performance-data") * **Real SERP positions** for all major keyword variations * **Competition analysis** showing exactly which sites you're outranking * **Search trend correlations** connecting content spikes to search behavior * **Cross-platform performance** (Instagram vs Facebook vs YouTube rankings) ### ๐Ÿ” **Content Alignment Analysis**[โ€‹](#-content-alignment-analysis "Direct link to -content-alignment-analysis") * **Website vs Instagram topic mapping** with 90%+ alignment scores * **High-performing indexed content** with engagement metrics and links * **Content performance patterns** identifying what Google prioritizes for indexing * **Strategic content recommendations** based on successful patterns ### ๐Ÿ“ˆ **Strategic Action Plan**[โ€‹](#-strategic-action-plan "Direct link to -strategic-action-plan") * **90-day content calendar** focused on high-opportunity keywords * **Platform-specific strategies** leveraging your strongest performing content types * **Cross-promotion opportunities** to maximize search visibility across platforms * **Monitoring setup** for ongoing performance tracking ### ๐ŸŽจ **Professional Report Delivery**[โ€‹](#-professional-report-delivery "Direct link to -professional-report-delivery") The analysis is delivered as a **fully-formatted HTML report** with: * Interactive metrics dashboard with color-coded performance indicators * Embedded links to all indexed Instagram content for easy review * Professional styling and branding suitable for client presentations * Exportable format for sharing with team members or stakeholders Real Client Example The report shown above for @ortognaticaroma demonstrates how this workflow identified a **100/100 Google Trends spike** for "chirurgia estetica mandibola" in May 2025, directly correlating with their Instagram content performance and providing immediate strategic opportunities. ## Learn More[โ€‹](#learn-more "Direct link to Learn More") * [Watch the YouTube demonstration](https://www.youtube.com/watch?v=qPzidYw0ITA) * [Set up MCP Integration](/agent-wordlift/integrations/#agent-wordlift-model-context-protocol-mcp-integration) * [Google Search Console Integration](/agent-wordlift/workflows/google-search-console/) * [Content Quality Evaluation](/agent-wordlift/workflows/content-evaluation/) --- Pro Tip This workflow is particularly powerful when combined with our [Google Search Console Integration](/agent-wordlift/workflows/google-search-console/) to get real performance data for both your website and Instagram content. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/instagram-indexing-report/ --- # Google Instagram Indexing Report | WordLift Developer Documentation # Google Instagram Indexing Report As of **July 10, 2025**, Instagram content has switched from "part-indexed" to "fully indexable" in Google Search, making every reel, carousel, and highlight a potential search asset. This workflow demonstrates how to use Agent WordLift as a specialized sub-agent within Claude to analyze Instagram content alignment with your website and organic search rankings. Important Context With AI Overviews reducing organic CTR by 34-37%, social media indexing becomes critical for visibility. We've documented cases of Instagram accounts ranking above medical directories for competitive terms even before July 10th. ## Why This Workflow Matters[โ€‹](#why-this-workflow-matters "Direct link to Why This Workflow Matters") This approach leverages **Agent WordLift's MCP integration** as a specialized SEO sub-agent, allowing you to: * Combine Claude's conversational AI with WordLift's deep SEO expertise * Analyze content correlation between your website and Instagram posts * Monitor real-time SERP visibility for Instagram content * Identify optimization opportunities across platforms Watch the complete workflow demonstration: ## Setup Requirements[โ€‹](#setup-requirements "Direct link to Setup Requirements") ### Prerequisites[โ€‹](#prerequisites "Direct link to Prerequisites") * Claude account with MCP integration enabled * Agent WordLift MCP server configured (see [MCP Integration Guide](/agent-wordlift/integrations/#agent-wordlift-model-context-protocol-mcp-integration)) * Instagram business account * Google Search Console access ### MCP Configuration[โ€‹](#mcp-configuration "Direct link to MCP Configuration") Ensure Agent WordLift is configured as your MCP server in Claude: ``` { "mcpServers": { "wordlift": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.wordlift.io/sse"] } } } ``` ## Workflow Steps[โ€‹](#workflow-steps "Direct link to Workflow Steps") ### Step 1: Initialize the Analysis[โ€‹](#step-1-initialize-the-analysis "Direct link to Step 1: Initialize the Analysis") Start by prompting Claude with Agent WordLift as the sub-agent: ``` I need to generate a comprehensive Instagram indexing report for [your_instagram_handle]. Please use Agent WordLift to: 1. Analyze my website's current search performance 2. Audit Instagram content indexing status 3. Identify content alignment opportunities 4. Provide optimization recommendations Let's start by connecting to my Google Search Console data and analyzing my website's entity structure. ``` ### Step 2: Search Operators Audit[โ€‹](#step-2-search-operators-audit "Direct link to Step 2: Search Operators Audit") Use these specific search operators to audit Instagram exposure: #### 1\. Total Profile Footprint[โ€‹](#1-total-profile-footprint "Direct link to 1. Total Profile Footprint") ``` site:instagram.com/{yourhandle} ``` **Purpose:** See how many of your posts (reels, tags, stories, etc.) are indexed by Google. #### 2\. Topic-Specific Posts[โ€‹](#2-topic-specific-posts "Direct link to 2. Topic-Specific Posts") ``` site:instagram.com/{yourhandle} "{keyword}" ``` **Purpose:** Track exposure for key topics relevant to your business. #### 3\. Content Clusters (Synonyms/Multilingual)[โ€‹](#3-content-clusters-synonymsmultilingual "Direct link to 3. Content Clusters (Synonyms/Multilingual)") ``` site:instagram.com/{yourhandle} ("{keyword1}" OR "{keyword2}" OR "{keyword3}") ``` **Purpose:** Capture variations and multilingual content. #### 4\. Recent Content Pulse[โ€‹](#4-recent-content-pulse "Direct link to 4. Recent Content Pulse") ``` site:instagram.com/{yourhandle} ("2024" OR "2025" OR "recent") ``` **Purpose:** Measure how much recent or time-sensitive content is being indexed. #### 5\. Brand-Topic Crossover[โ€‹](#5-brand-topic-crossover "Direct link to 5. Brand-Topic Crossover") ``` site:instagram.com "{yourhandle}" "{niche_keyword}" ``` **Purpose:** Check if your brand appears in conversations beyond your profile. ### Step 3: Content Correlation Analysis[โ€‹](#step-3-content-correlation-analysis "Direct link to Step 3: Content Correlation Analysis") Prompt Claude to use Agent WordLift for deep analysis: ``` Using Agent WordLift, please: 1. Extract the main entities and topics from my website's top 10 pages 2. Analyze my Instagram content using the search operators above 3. Identify content gaps between website and Instagram 4. Suggest content themes that could benefit from cross-platform optimization 5. Provide specific recommendations for improving content alignment ``` ### Step 4: Competitive Intelligence[โ€‹](#step-4-competitive-intelligence "Direct link to Step 4: Competitive Intelligence") ``` Analyze how competitors are leveraging Instagram indexing: 1. Run the same search operators for 3-5 competitor Instagram accounts 2. Compare their indexed content volume vs. mine 3. Identify topics where competitors have better Instagram visibility 4. Suggest content opportunities based on gaps found ``` ### Step 5: Performance Monitoring Setup[โ€‹](#step-5-performance-monitoring-setup "Direct link to Step 5: Performance Monitoring Setup") ``` Help me establish a monitoring system: 1. Create a list of key search queries where Instagram content could rank 2. Set up tracking for these queries using Google Search Console integration 3. Establish baseline metrics for current Instagram visibility 4. Create a reporting schedule for ongoing monitoring ``` ## Key Analysis Components[โ€‹](#key-analysis-components "Direct link to Key Analysis Components") ### Live SERP Queries[โ€‹](#live-serp-queries "Direct link to Live SERP Queries") * Real-time visibility checks using verified rankings * Monitor how Instagram content performs against website pages * Track changes in SERP features (AI Overviews, People Also Ask, etc.) ### Search Console Integration[โ€‹](#search-console-integration "Direct link to Search Console Integration") * Pull actual performance data for comparative analysis * Identify queries where Instagram content could complement website rankings * Monitor click-through rates and impression data ### Trend Analysis[โ€‹](#trend-analysis "Direct link to Trend Analysis") * Use Google Trends data (January-June 2025) for topical validation * Identify seasonal patterns in Instagram content performance * Predict future content opportunities ### Content Correlation Measurement[โ€‹](#content-correlation-measurement "Direct link to Content Correlation Measurement") * Assess alignment between website content and Instagram posts * Identify content themes that perform well on both platforms * Suggest optimization strategies for maximum cross-platform synergy ## Expected Outcomes[โ€‹](#expected-outcomes "Direct link to Expected Outcomes") By the end of this workflow, you'll have: * **Comprehensive audit** of your Instagram content's Google indexing status * **Content gap analysis** between your website and Instagram presence * **Competitive intelligence** report on Instagram SEO performance * **Optimization roadmap** for maximizing cross-platform visibility * **Monitoring system** for ongoing performance tracking ## Advanced Prompts[โ€‹](#advanced-prompts "Direct link to Advanced Prompts") ### Entity Alignment Analysis[โ€‹](#entity-alignment-analysis "Direct link to Entity Alignment Analysis") ``` Using Agent WordLift's entity analysis capabilities, compare the entity coverage between my website's knowledge graph and my Instagram content. Identify entities that are well-represented on Instagram but missing from my website, and vice versa. ``` ### Local SEO Integration[โ€‹](#local-seo-integration "Direct link to Local SEO Integration") ``` For businesses with local presence: Analyze how Instagram content supports local SEO efforts. Check if location-based Instagram posts are appearing in local search results and suggest geo-targeted content strategies. ``` ### Content Calendar Optimization[โ€‹](#content-calendar-optimization "Direct link to Content Calendar Optimization") ``` Based on the analysis, create a content calendar that optimizes for both Instagram engagement and Google search visibility. Include specific posting recommendations, hashtag strategies, and cross-promotion opportunities. ``` ## Troubleshooting[โ€‹](#troubleshooting "Direct link to Troubleshooting") ### Common Issues[โ€‹](#common-issues "Direct link to Common Issues") **Low Instagram Indexing:** * Check if your Instagram account is set to public * Ensure consistent posting schedule * Verify that captions include relevant keywords **Poor Content Alignment:** * Review entity overlap between platforms * Identify content themes that work on both platforms * Consider repurposing website content for Instagram **Limited SERP Visibility:** * Focus on long-tail keywords where competition is lower * Optimize Instagram captions for search intent * Use relevant hashtags that align with search queries ## Related Workflows[โ€‹](#related-workflows "Direct link to Related Workflows") * [Google Search Console Integration](/agent-wordlift/workflows/google-search-console/) * [Content Quality Evaluation](/agent-wordlift/workflows/content-evaluation/) * [Keyword Discovery](/agent-wordlift/workflows/keyword-discovery/) * [Social Media Content Creation](/agent-wordlift/workflows/create-social-media-posts/) --- _This workflow was developed in collaboration with innovative practitioners pushing the boundaries of SEO and social media integration. Special thanks to the teams driving these methodologies forward._ --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/keyword-cannibalization/ --- # Avoid Keyword Cannibalization | WordLift Developer Documentation # Avoiding Keyword Cannibalization with WordLift AI SEO Agent In this workflow, we'll explore how to identify and resolve **keyword cannibalization** issues using the WordLift AI SEO Agent. Keyword cannibalization occurs when multiple pages on your website target the same keyword, causing them to compete against each other in search engine rankings. This can dilute your SEO efforts and confuse search engines about which page to rank for the keyword. ## Identifying Keyword Overlap Between Pages[โ€‹](#identifying-keyword-overlap-between-pages "Direct link to Identifying Keyword Overlap Between Pages") Let's utilize the content analysis tools to extract entities, keywords, and understand the detailed search intent behind each page. This will help us identify overlapping areas and develop strategies to differentiate the content. ### Example Prompt for Analyzing and Differentiating Pages[โ€‹](#example-prompt-for-analyzing-and-differentiating-pages "Direct link to Example Prompt for Analyzing and Differentiating Pages") ``` Search the following pages from the website using the search tool: - **URL1:** Article: https://wordlift.io/blog/en/underutilized-schema-markups-for-publishers/ - **Title1:** Underutilized Schema Markups for Publishers - **URL2:** Article: https://wordlift.io/blog/en/structured-data-for-personal-branding/ - **Title2:** Structured Data for Personal Branding For each page, perform the following analyses: - **Extract Entities:** - Use the content analysis tool to extract entities mentioned in each page. - **Identify Keywords:** - Determine the primary and secondary keywords based on the content and metadata. - **Determine Detailed Search Intent:** - Present a detailed description of the search (user) intent, going beyond simple categories. **Present the analysis results in a table**, including: - URL - Title - Primary Keywords - Secondary Keywords - Extracted Entities - Detailed Search Intent **Propose strategies to differentiate the pages:** - Suggest ways to distinguish each page's content, focusing on unique aspects of content, keywords, and entities. - Recommend optimizations to improve SEO performance, prevent keyword cannibalization, and enhance user experience. ``` Using this prompt, the WordLift AI SEO Agent will analyze each page and provide insights into potential overlaps and differentiation opportunities. ## Understanding the Analysis[โ€‹](#understanding-the-analysis "Direct link to Understanding the Analysis") The agent's analysis will help you: * **Identify Keyword Overlaps:** See if both pages are targeting the same primary or secondary keywords. * **Extracted Entities Comparison:** Determine if the pages mention the same entities, indicating content overlap. * **Detailed Search Intent:** Understand the specific goals and needs of users for each page, going beyond generic intent categories. ## Developing Strategies to Differentiate Content[โ€‹](#developing-strategies-to-differentiate-content "Direct link to Developing Strategies to Differentiate Content") Based on the analysis, you can implement the right strategy to prevent keyword cannibalization and consolidate or differentiate content. By following this workflow, you can effectively identify and resolve keyword cannibalization issues. Differentiating your content not only improves SEO performance but also enhances user experience by providing clear, distinct information on each page. info Remember to monitor the performance of these pages after making changes to ensure that the strategies are effective and adjust as necessary. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/keyword-discovery/ --- # Run a keyword research | WordLift Developer Documentation # Keyword Discovery with WordLift AI SEO Agent Letโ€™s work together on **keyword research** with WordLift AI SEO Agent. Keyword research provides valuable insight into **how a target audience searches on Google**. The insight from these queries helps us inform the content strategy and can also be applied to our day-to-day marketing efforts. ## Query Analysis for Entity Extraction[โ€‹](#query-analysis-for-entity-extraction "Direct link to Query Analysis for Entity Extraction") Letโ€™s combine the query analysis tool to extract the main entities behind each query with keyword suggestions to identify relevant keywords and understand the context and intent behind search queries. ### Example Prompt for Analyzing a Query[โ€‹](#example-prompt-for-analyzing-a-query "Direct link to Example Prompt for Analyzing a Query") ``` Analyze the query โ€œaromatherapyโ€ on google.com. ``` WordLift AI SEO Agent will now use WordLift Content Analysis to understand top-ranking results on google.com. This will shed some light on the context behind this query. ![image](/assets/images/agent-wordlift-query-analysis-53450176423b3b6f3f36df15af8f4a88.png) To gain a deeper understanding of the interest patterns for this query, we can analyze the seasonal trends using the WordLift Google Trends API: ``` Thanks, now analyze the seasonal trends in the US for "aromatherapy". ``` By examining seasonal trends, we can identify peak times for interest in โ€œaromatherapyโ€ which can help us plan our content marketing efforts more effectively. ![image](/assets/images/agent-wordlift-keyword-seasonal-trends-7a49611c6f5b5c3fab1a7b19a9d973c2.png) ## Deep Dive into Keyword Suggestions[โ€‹](#deep-dive-into-keyword-suggestions "Direct link to Deep Dive into Keyword Suggestions") Letโ€™s now dive deeper into keywords (how people are searching on Google) with a different prompt: ``` Now, propose three keyword ideas for "aromatherapy" for each keyword, provide suggestions, extract the topics, and present all the data in a table highlighting the opportunities. ``` ![image](/assets/images/agent-wordlift-keyword-ideas-271d24106642ee83b6776544b10d4b95.png) This approach helps us explore the search landscape more comprehensively, identifying opportunities and understanding user intent. ## Sophisticated Prompt for Blog Post Outline[โ€‹](#sophisticated-prompt-for-blog-post-outline "Direct link to Sophisticated Prompt for Blog Post Outline") We can also venture into a more sophisticated prompt that will automatically run the analysis and draft the outline of a blog post: ``` Propose three keyword ideas for "aromatherapy". For each keyword, provide suggestions, extract the topics, and present all the data in a table highlighting the opportunities. Then provide me with the outline for a blog post on the keyword that has the highest chance, keeping in mind the seasonality of the main keyword. ``` ![image](/assets/images/agent-wordlift-outline-ideas-7774a046aa6a5ae9973c4371abce9bef.png) This prompt not only seeks keyword opportunities but also aims at creating actionable content strategy outputs, like drafting a blog post outline based on the keyword with the highest potential. By employing WordLift **AI SEO Agent for keyword discovery**, we can **gain a competitive edge in content creation**, ensuring that our strategies align with actual search behaviors and audience needs. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/local-seo-analysis/ --- # Local SEO Analysis | WordLift Developer Documentation # Optimizing Local Search Performance Local SEO is critical for businesses that serve specific geographic areas. This workflow demonstrates how to use **Agent WordLift's Local SEO tools** to analyze and optimize your business's local search presence. For more background on local SEO strategies, read our comprehensive guide: [Optimizing Local SEO - How to Create Winning Strategies](https://wordlift.io/blog/en/optimizing-local-seo/). ## Watch the Workflow in Action[โ€‹](#watch-the-workflow-in-action "Direct link to Watch the Workflow in Action") Learn how to effectively transform your local search performance with Agent WordLift: ## Business Profile Analysis[โ€‹](#business-profile-analysis "Direct link to Business Profile Analysis") Start by analyzing your Google Business Profile to understand its current state and identify optimization opportunities. ``` Analyze the Google Business Profile for "Mountain View Cafe" in "Denver,Colorado,United States" ``` This analysis provides comprehensive information about: * Basic business information (name, address, phone, website) * Ratings and review count * Business hours and attributes * Categories and popular topics * Images and additional features ![image](/assets/images/agent-wordlift-local-seo-profile-e661257511cd9478c661af11533c200e.png) ## Local Pack Research[โ€‹](#local-pack-research "Direct link to Local Pack Research") Understanding which businesses appear in Google's Local Pack for relevant keywords helps you identify competitive factors and optimization opportunities. ``` Show me the Local Pack results for "coffee shops" in "Denver,Colorado,United States" ``` The Agent will return: * Businesses currently ranking in the Local Pack * Their ratings and review counts * Key attributes contributing to their rankings ![image](/assets/images/agent-wordlift-local-seo-local-pack-61d6e7bc111ed12acd103acd82fa9a42.png) ## Business Ranking Analysis[โ€‹](#business-ranking-analysis "Direct link to Business Ranking Analysis") Track your business's position in both Local Pack and organic search results for important keywords: ``` Track the rankings of "Little Owl Coffee" for "coffee shop nearby" in "Denver,Colorado,United States" ``` This analysis reveals: * If your business appears in the Local Pack * Your position in organic search results * Snippets shown in search results * Overall visibility for target keywords ![image](/assets/images/agent-wordlift-local-seo-tracking-e5793777657e768a343d68444a05d811.png) ## Customer Q&A Analysis[โ€‹](#customer-qa-analysis "Direct link to Customer Q&A Analysis") The questions customers ask on your Google Business Profile provide valuable insights into their needs and interests. ``` Analyze questions and answers for "Mountain View Cafe" in "Denver,Colorado,United States" ``` This provides: * All customer questions (both answered and unanswered) * Analysis of business response patterns * Common question topics * Engagement timeline and metrics ![image](/assets/images/agent-wordlift-local-seo-qa-881ad3ed288cd3ec079e7773b2b2528d.png) ## Comprehensive Local SEO Audit[โ€‹](#comprehensive-local-seo-audit "Direct link to Comprehensive Local SEO Audit") For a complete assessment, combine multiple analyses into a comprehensive audit: ``` Perform a complete local SEO audit for "Mountain View Cafe" in "Denver,Colorado,United States". 1. Analyze their Google Business Profile 2. Track their rankings for "best coffee shop" and "breakfast cafe" 3. Examine the Local Pack for "coffee shops near me" 4. Review their customer Q&A 5. Provide actionable recommendations for improvement ``` This comprehensive approach delivers a detailed report with actionable insights for improving your local search presence. ## Competitor Analysis[โ€‹](#competitor-analysis "Direct link to Competitor Analysis") Compare your business against local competitors to identify strengths, weaknesses, and opportunities: ``` Compare "Mountain View Cafe" with competitors "Little Owl Coffee" and "Mile High Brews" in "Denver,Colorado,United States". Analyze their Google Business Profiles, track their rankings for "coffee shops", and identify competitive advantages. ``` This analysis helps you understand: * How your profile compares to competitors * What factors might be helping competitors rank better * Specific opportunities to improve your competitive position ## Best Practices for Local SEO[โ€‹](#best-practices-for-local-seo "Direct link to Best Practices for Local SEO") Based on the insights gathered, implement these best practices: 1. **Complete Your Business Profile** * Ensure all information is accurate and comprehensive * Add high-quality photos of your business * Select all relevant categories and attributes 2. **Actively Manage Reviews** * Respond promptly to all reviews, both positive and negative * Thank customers for positive feedback * Address concerns professionally in negative reviews 3. **Answer Customer Questions** * Monitor and respond to all questions in a timely manner * Provide clear, helpful answers that showcase your expertise * Use questions to identify information gaps in your profile 4. **Optimize for Local Keywords** * Include location-specific terms in your business description * Target keywords that show local intent * Create content addressing local needs and interests 5. **Maintain Consistent NAP Information** * Ensure your Name, Address, and Phone number are consistent across all platforms * Verify information on popular directories and citation sites * Update all listings when information changes tip Use the Local SEO tools regularly to monitor your progress and identify new opportunities for optimization. Local search rankings can change frequently, so consistent monitoring is key to maintaining and improving your position. For detailed information about each Local SEO tool and its capabilities, see our [Local SEO Tools Reference Guide](/agent-wordlift/workflows/local-seo-tools-guide/). By following this workflow and implementing the recommended optimizations, you can improve your business's visibility in local search results, attract more relevant customers, and gain an advantage over competitors in your area. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/local-seo-tools-guide/ --- # Local SEO Tools Reference | WordLift Developer Documentation # Local SEO Tools Reference This guide provides detailed information about Agent WordLift's Local SEO tools, their capabilities, and technical specifications. For a strategic overview of local SEO best practices, see our article on [Optimizing Local SEO - How to Create Winning Strategies](https://wordlift.io/blog/en/optimizing-local-seo/). ## Available Tools[โ€‹](#available-tools "Direct link to Available Tools") ### Google Business Profile Analyzer[โ€‹](#google-business-profile-analyzer "Direct link to Google Business Profile Analyzer") Provides comprehensive information about any business's Google Business Profile. **Key capabilities:** * Retrieve complete business information (name, address, phone, website) * Access ratings, review counts, and business attributes * View business hours, popular topics, and categories * Analyze images and additional features **Usage syntax:** ``` Analyze the Google Business Profile for "[business name]" in "[City,State,Country]" ``` **Advanced options:** * Use CID, place\_id, or spp identifiers for precise targeting: ``` Analyze the Google Business Profile using cid:[number] ``` or ``` Analyze the Google Business Profile using place_id:[value] ``` ### Local Pack Analyzer[โ€‹](#local-pack-analyzer "Direct link to Local Pack Analyzer") Examines Google's Local Pack results for specific search queries and locations. **Key capabilities:** * Identify businesses appearing in the Local Pack * Retrieve ratings and review information * Analyze business attributes and characteristics * Understand ranking factors for Local Pack inclusion **Usage syntax:** ``` Show me the Local Pack results for "[keyword]" in "[City,State,Country]" ``` **Example keywords:** * Service-based: "plumbers", "electricians", "lawyers" * Product-based: "coffee shops", "bookstores", "pharmacies" * Specific queries: "best pizza delivery", "emergency dentist" ### Business Ranking Tracker[โ€‹](#business-ranking-tracker "Direct link to Business Ranking Tracker") Monitors a business's position in both Local Pack and organic search results. **Key capabilities:** * Check if a business appears in the Local Pack * Identify position in organic search results * View snippets and featured content * Compare visibility across multiple keywords **Usage syntax:** ``` Track the rankings of "[business name]" for "[keyword]" in "[City,State,Country]" ``` **Advanced use:** * Track multiple keywords in one request: ``` Track the rankings of "[business name]" for these keywords: "[keyword1]", "[keyword2]", "[keyword3]" in "[City,State,Country]" ``` ### Q&A Analysis Tool[โ€‹](#qa-analysis-tool "Direct link to Q&A Analysis Tool") Examines customer questions and business responses on Google Business Profiles. **Key capabilities:** * Review all customer questions (answered and unanswered) * Analyze business response patterns and response rate * Identify common question topics and trends * Evaluate engagement metrics over time **Usage syntax:** ``` Analyze questions and answers for "[business name]" in "[City,State,Country]" ``` **Analysis depth:** * Standard depth (default): Retrieves approximately 20 questions * Deep analysis: Add depth parameter for more questions: ``` Analyze questions and answers for "[business name]" in "[City,State,Country]" with depth:50 ``` ## Technical Notes[โ€‹](#technical-notes "Direct link to Technical Notes") ### Location Format[โ€‹](#location-format "Direct link to Location Format") For optimal results, use the following format for locations: * `City,State,Country` without spaces after commas * Examples: `Manhattan,New York,United States` or `Rome,Lazio,Italy` * For general searches, you can use just the country: `United States` ### Language Support[โ€‹](#language-support "Direct link to Language Support") These tools support multiple languages. Specify the language code for non-English searches: ``` Analyze the Google Business Profile for "[business name]" in "[City,State,Country]" in language:fr ``` Supported language codes include: * `en` \- English (default) * `fr` \- French * `es` \- Spanish * `de` \- German * `it` \- Italian * And many more ### Data Freshness[โ€‹](#data-freshness "Direct link to Data Freshness") The data returned by these tools is typically current within 24-48 hours of changes to Google's search results or business listings. ### Data Limitations[โ€‹](#data-limitations "Direct link to Data Limitations") While these tools provide comprehensive information, some limitations apply: * Image content analysis is not available * Detailed review content may be limited * Internal business metrics are not accessible * Some data may be unavailable for businesses with minimal online presence ## Integration Examples[โ€‹](#integration-examples "Direct link to Integration Examples") ### Combining Multiple Tools[โ€‹](#combining-multiple-tools "Direct link to Combining Multiple Tools") For comprehensive analysis, combine multiple tools in a single request: ``` For "Mountain View Cafe" in "Denver,Colorado,United States": 1. Analyze their Google Business Profile 2. Check their rankings for "best coffee shop" 3. Examine their customer Q&A 4. Provide an overall assessment and recommendations ``` ### Cross-Location Analysis[โ€‹](#cross-location-analysis "Direct link to Cross-Location Analysis") Compare the same business across different locations: ``` Compare the Google Business Profiles and local rankings for: 1. Holland & Barrett in "London, England, United Kingdom " 2. Holland & Barrett in "Manchester, England, United Kingdom " Highlight key differences and location-specific factors. ``` ### Competitive Analysis[โ€‹](#competitive-analysis "Direct link to Competitive Analysis") Compare multiple businesses in the same location: ``` Analyze and compare these three restaurants in "Boston,Massachusetts,United States": 1. "Legal Sea Foods" 2. "Union Oyster House" 3. "Neptune Oyster" Compare their profiles, rankings, and customer engagement. ``` ## Common Error Troubleshooting[โ€‹](#common-error-troubleshooting "Direct link to Common Error Troubleshooting") If you encounter errors, try these solutions: | Error Message | Likely Cause | Solution | | ---------------------------------- | ---------------------------------- | -------------------------------------------------------------------------------------------- | | "Invalid location format" | Incorrect location formatting | Use format "City,State,Country" without spaces after commas | | "No Google Business Profile found" | Business name not recognized | Try adding location to name, use more popular name variation, or use identifier if available | | "No search results found" | Low search volume or niche keyword | Try more popular or broader keywords | | "Request failed" | Temporary API issue | Wait a few moments and try again | By using these tools effectively, you can gain valuable insights into your local search presence and make data-driven optimization decisions. --- --- url: https://docs.wordlift.io/agent-wordlift/workflows/research-content-ideas/ --- # Research Content Ideas Using Reddit Discussions | WordLift Developer Documentation # Research Content Ideas Using Reddit Discussions Reddit is a powerful platform for SEO research and content ideation. Learn more about leveraging Reddit for SEO in our guide: [How to use Reddit for SEO: Best Practices, Tips & Strategies](https://wordlift.io/blog/en/reddit-for-seo-best-practices/). ## Watch the Workflow in Action[โ€‹](#watch-the-workflow-in-action "Direct link to Watch the Workflow in Action") Learn how to effectively research content ideas using Reddit discussions with Agent WordLift: In this video, you'll see how to: * Search and analyze Reddit discussions for your topics * Identify user pain points and emerging trends * Create content proposals based on Reddit insights * Align your content with genuine user needs ## Quick Topic Research[โ€‹](#quick-topic-research "Direct link to Quick Topic Research") The most effective way to start is with a comprehensive analysis prompt: ``` Search for top-engaged discussions and frequent questions about skincare routines on Reddit, focusing on user pain points and emerging trends. Then analyze my website's content to identify gaps and create a content proposal that aligns with genuine user needs while highlighting opportunities to enhance existing articles. ``` The Agent will analyze: * Popular Reddit discussions * User pain points and questions * Current trends in the topic * Your existing content * Content gaps and opportunities ![Reddit Analysis Results](/assets/images/agent-wordlift-reddit-analysis-api-3a6c13cc4ba8802e4cc0b73fab8a4c0a.png) The image above shows Agent WordLift analyzing both Reddit discussions and your website content using specialized APIs to gather comprehensive insights. ## Understanding the Analysis[โ€‹](#understanding-the-analysis "Direct link to Understanding the Analysis") Agent WordLift provides structured analysis in several key areas: 1. Key Topics and User Questions from Reddit 2. Existing Content on Your Website 3. Detailed Content Proposal with: * Introduction approach * Section breakdowns * Enhancement opportunities * Call to action suggestions ## Advanced Research Options[โ€‹](#advanced-research-options "Direct link to Advanced Research Options") ### Analyze Specific Websites[โ€‹](#analyze-specific-websites "Direct link to Analyze Specific Websites") For deeper competitive analysis: ``` Analyze these websites for "skincare routines": https://example1.com/skincare https://example2.com/beauty https://example3.com/routines Then find relevant discussions on Reddit and create a content proposal. ``` ### Discover Top Rankings[โ€‹](#discover-top-rankings "Direct link to Discover Top Rankings") To analyze top-ranking domains and Reddit discussions: ``` Find the top 5 ranking domains for "skincare routines", analyze their content, and compare with Reddit discussions to create a content proposal. ``` ## Next Steps[โ€‹](#next-steps "Direct link to Next Steps") Get more detailed insights with follow-up analysis: ``` Create an outline showing how the discussed topics could be structured into a content series ``` This workflow helps you create content that genuinely addresses user needs while maintaining SEO best practices. --- --- url: https://docs.wordlift.io/api/agent/ask-request-api-ask-post/ --- # Ask Request | WordLift Developer Documentation # Ask Request POST ## /ask Interact with the WordLift Agent to process a message and receive an AI-driven response. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **message** Message (string)required **model** Model (string) **Default value:** `gpt-4o` **security** Security (boolean) ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 422 Successful Response * application/json * Schema * Example (from schema) **Schema** **response** Response (string)required ``` { "response": "string" } ``` Validation Error * application/json * Schema * Example (from schema) **Schema** **detail** object\[\] * Array \[ **loc** object\[\] required * Array \[ anyOf * MOD1 * MOD2 string integer * \] **msg** Message (string)required **type** Error Type (string)required * \] ``` { "detail": [ { "loc": [ "string", 0 ], "msg": "string", "type": "string" } ] } ``` --- --- url: https://docs.wordlift.io/api/agent/wordlift-agent-api/ --- # WordLift Agent API | WordLift Developer Documentation Version: 1.0.0 # WordLift Agent API API for interacting with the WordLift Agent ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | authorization | --- --- url: https://docs.wordlift.io/api/analysis/analyse/ --- # Analyse content | WordLift Developer Documentation # Analyse content POST ## /single Analyze the content provided with the request. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **html** object The html fragment or html page to analyze. **fragment** string The html fragment to analyze. **page** string The html page to analyze, either fragment or page should be present **url** url The url of the page to analyze. **urlClient** string **Possible values:** \[`CHROME`, `PLAIN_HTTP`, `CHROME, PLAIN_HTTP`\] The client which the analysis should use to extract the content, by default chrome is used. **language** stringrequired **Possible values:** `>= 2 characters` and `<= 2 characters` The content language, 2 letters code, e.g. 'en'. **text** string A textual fragment. **exclude** url\[\] An array of item IDs to exclude from the analysis results. **scope** stringrequired The scope of the analysis, one of 'local', 'network', 'cloud-only', 'network-only' or 'all'. **matches** int32 Filter out results that don't have at least the specified number of occurrences. By default 1. **links** string When returning an interpolated HTML results, matches should have the 'wl-link' class. By default 'no'. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Success * application/json * Schema * Example (from schema) **Schema** **entities** object A map of entity URI to the respective entity. **property name\*** Entity Entity **entityId** url The entity URI. **confidence** double Confidence score representing the entity match level. **mainType** string The main schema type for the current entity. **types** string\[\] The list of schema types which the entity can be classified to. **label** string The title of the entity. **description** string The description about the entity. **images** url\[\] The list of entity image URIs. **sameAs** url\[\] The list of entity sameas URIs. **properties** object The entity properties. **latitude** double The latitude. **longitude** double The longitude. **synonyms** string\[\] **annotations** object A map of annotation id to the respective annotation. **property name\*** Annotation Object representing single annotation. **annotationId** string An unique id. **start** int32 The starting posistion of annotation in content (zero-indexed & non negative ). **end** int32 The ending posistion of annotation in content (zero-indexed & non negative ). **text** string The annotated text. **entityMatches** object\[\] The list of entities which the annotation matches. * Array \[ **confidence** double Confidence score for the current entity. **entityId** url The entity URI. * \] **images** object\[\] A list of images. * Array \[ **label** string The title of the image. **url** url The image URI. * \] **languages** string\[\] A list of languages. **topics** object\[\] A list of topics. * Array \[ **label** string The topic title. **description** string The topic description. **uri** url The topic URI. **confidence** double The topic confidence score. **images** url\[\] A list of image URIs. **sameAs** url\[\] A list of sameas URIs. * \] **content** string The text supplied for analysis. ``` { "entities": {}, "annotations": {}, "images": [ { "label": "string", "url": "string" } ], "languages": [ "string" ], "topics": [ { "label": "string", "description": "string", "uri": "string", "confidence": 0, "images": [ "string" ], "sameAs": [ "string" ] } ], "content": "string" } ``` Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/analysis/analyses/ --- # Analyses | WordLift Developer Documentation # Analyses Perform content analysis. [๐Ÿ“„๏ธ Analyse Web PageAnalyse the content of a webpage by using the \`url\` property of the request.](/api/analysis/v-2-analysis/) [๐Ÿ“„๏ธ Analyse contentAnalyze the content provided with the request.](/api/analysis/analyse/) [๐Ÿ“„๏ธ Analyse and MergeAnalyze content and return the results merged as HTML code.](/api/analysis/merge/) [๐Ÿ“„๏ธ CreateCreate an analysis request](/api/analysis/create/) --- --- url: https://docs.wordlift.io/api/analysis/analysis/ --- # Analysis | WordLift Developer Documentation Version: 1.0 # Analysis Analyse content using Linked Data and Knowledge Graphs. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/analysis/content-expansions/ --- # Content Expansions | WordLift Developer Documentation # Content Expansions Expand Content. [๐Ÿ“„๏ธ CreateCreate a Content Expansion](/api/analysis/create-content-expansion/) --- --- url: https://docs.wordlift.io/api/analysis/create-content-expansion/ --- # Create | WordLift Developer Documentation # Create POST ## /content-expansions Create a Content Expansion ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **url** urlrequired The target URL. **entities** string\[\]required A list of entity labels. **openai\_key** stringrequired The OpenAI key. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Success * application/json * Schema * Example (from schema) **Schema** **completion** string The completion. ``` { "completion": "string" } ``` Unauthorized * application/json * Schema * Example (from schema) **Schema** **completion** string The completion. ``` { "completion": "string" } ``` Uh oh, something went wrong * application/json * Schema * Example (from schema) **Schema** **completion** string The completion. ``` { "completion": "string" } ``` --- --- url: https://docs.wordlift.io/api/analysis/create-entity-gap/ --- # Create | WordLift Developer Documentation # Create POST ## /entity-gaps Create an Entity Gaps analysis. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **url** stringrequired The URL to analyze. **query** stringrequired The search query to analyze. **model** string The model **number\_of\_entities** int32 **Default value:** `5` Number of entities to highlight. **query\_location\_name** string **Default value:** `United States` The location name for the query, e.g. United Kingdom. **query\_search\_engine** string **Default value:** `google.com` The search engine domain for the query, if not set will be chosen according to `query_location_name` ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Found. * application/json * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **text** string The text matching the entity. **confidence** double **Possible values:** `<= 1` The confidence score this is the right entity. **occurrences** int32 The number of occurrences. **serp\_position** int32 The position of the entity in SERP. `null` if not applicable. **entity\_id** string The entity id (URI). **entity\_label** string The entity label. **entity\_type** string The entity type. **entity\_description** string The entity description. * \] ``` { "items": [ { "text": "string", "confidence": 0, "occurrences": 0, "serp_position": 0, "entity_id": "string", "entity_label": "string", "entity_type": "string", "entity_description": "string" } ] } ``` Authentication Failure * application/json * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **text** string The text matching the entity. **confidence** double **Possible values:** `<= 1` The confidence score this is the right entity. **occurrences** int32 The number of occurrences. **serp\_position** int32 The position of the entity in SERP. `null` if not applicable. **entity\_id** string The entity id (URI). **entity\_label** string The entity label. **entity\_type** string The entity type. **entity\_description** string The entity description. * \] ``` { "items": [ { "text": "string", "confidence": 0, "occurrences": 0, "serp_position": 0, "entity_id": "string", "entity_label": "string", "entity_type": "string", "entity_description": "string" } ] } ``` Uh oh, something went wrong * application/json * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **text** string The text matching the entity. **confidence** double **Possible values:** `<= 1` The confidence score this is the right entity. **occurrences** int32 The number of occurrences. **serp\_position** int32 The position of the entity in SERP. `null` if not applicable. **entity\_id** string The entity id (URI). **entity\_label** string The entity label. **entity\_type** string The entity type. **entity\_description** string The entity description. * \] ``` { "items": [ { "text": "string", "confidence": 0, "occurrences": 0, "serp_position": 0, "entity_id": "string", "entity_label": "string", "entity_type": "string", "entity_description": "string" } ] } ``` --- --- url: https://docs.wordlift.io/api/analysis/create/ --- # Create | WordLift Developer Documentation # Create POST ## /analysis/analyses Create an analysis request ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **text** string The text to analyse. **url** string The URL to analyse. **query** string The query string to analyse. **html** string The html to analyse. **language\_code** string **Default value:** `en` The language code used for content analysis, e.g. `en`. **query\_location\_name** string **Default value:** `United States` The location name for the query, e.g. United Kingdom. **query\_search\_engine** string The search engine domain for the query, if not set will be chosen according to `query_location_name` **linked\_data** boolean **Default value:** `true` Whether to include results from Linked Data (e.g. DBpedia), by default true. **local\_data** boolean **Default value:** `true` Whether to include results from the local Knowledge Graph, by default true. **network\_data** boolean **Default value:** `true` Whether to include results from connected Knowledge Graphs, by default true. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Success * application/x.wordlift.analysis+json;version=3 * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **text** string The text matching the entity. **confidence** double **Possible values:** `<= 1` The confidence score this is the right entity. **occurrences** int32 The number of occurrences. **serp\_position** int32 The position of the entity in SERP. `null` if not applicable. **entity\_id** string The entity id (URI). **entity\_label** string The entity label. **entity\_type** string The entity type. **entity\_description** string The entity description. * \] ``` { "items": [ { "text": "string", "confidence": 0, "occurrences": 0, "serp_position": 0, "entity_id": "string", "entity_label": "string", "entity_type": "string", "entity_description": "string" } ] } ``` Unauthorized * application/x.wordlift.analysis+json;version=3 * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **text** string The text matching the entity. **confidence** double **Possible values:** `<= 1` The confidence score this is the right entity. **occurrences** int32 The number of occurrences. **serp\_position** int32 The position of the entity in SERP. `null` if not applicable. **entity\_id** string The entity id (URI). **entity\_label** string The entity label. **entity\_type** string The entity type. **entity\_description** string The entity description. * \] ``` { "items": [ { "text": "string", "confidence": 0, "occurrences": 0, "serp_position": 0, "entity_id": "string", "entity_label": "string", "entity_type": "string", "entity_description": "string" } ] } ``` Uh oh, something went wrong * application/x.wordlift.analysis+json;version=3 * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **text** string The text matching the entity. **confidence** double **Possible values:** `<= 1` The confidence score this is the right entity. **occurrences** int32 The number of occurrences. **serp\_position** int32 The position of the entity in SERP. `null` if not applicable. **entity\_id** string The entity id (URI). **entity\_label** string The entity label. **entity\_type** string The entity type. **entity\_description** string The entity description. * \] ``` { "items": [ { "text": "string", "confidence": 0, "occurrences": 0, "serp_position": 0, "entity_id": "string", "entity_label": "string", "entity_type": "string", "entity_description": "string" } ] } ``` --- --- url: https://docs.wordlift.io/api/analysis/entity-gaps/ --- # Entity Gaps | WordLift Developer Documentation # Entity Gaps Analyze entity gaps. [๐Ÿ“„๏ธ CreateCreate an Entity Gaps analysis.](/api/analysis/create-entity-gap/) --- --- url: https://docs.wordlift.io/api/analysis/merge/ --- # Analyse and Merge | WordLift Developer Documentation # Analyse and Merge POST ## /merge Analyze content and return the results merged as HTML code. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **html** object The html fragment or html page to analyze. **fragment** string The html fragment to analyze. **page** string The html page to analyze, either fragment or page should be present **url** url The url of the page to analyze. **urlClient** string **Possible values:** \[`CHROME`, `PLAIN_HTTP`, `CHROME, PLAIN_HTTP`\] The client which the analysis should use to extract the content, by default chrome is used. **language** stringrequired **Possible values:** `>= 2 characters` and `<= 2 characters` The content language, 2 letters code, e.g. 'en'. **text** string A textual fragment. **exclude** url\[\] An array of item IDs to exclude from the analysis results. **scope** stringrequired The scope of the analysis, one of 'local', 'network', 'cloud-only', 'network-only' or 'all'. **matches** int32 Filter out results that don't have at least the specified number of occurrences. By default 1. **links** string When returning an interpolated HTML results, matches should have the 'wl-link' class. By default 'no'. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Success * text/html * Schema **Schema** string Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/analysis/v-2-analysis/ --- # Analyse Web Page | WordLift Developer Documentation # Analyse Web Page POST ## /v2/analyze Analyse the content of a webpage by using the `url` property of the request. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **html** object The html fragment or html page to analyze. **fragment** string The html fragment to analyze. **page** string The html page to analyze, either fragment or page should be present **url** url The url of the page to analyze. **urlClient** string **Possible values:** \[`CHROME`, `PLAIN_HTTP`, `CHROME, PLAIN_HTTP`\] The client which the analysis should use to extract the content, by default chrome is used. **language** stringrequired **Possible values:** `>= 2 characters` and `<= 2 characters` The content language, 2 letters code, e.g. 'en'. **text** string A textual fragment. **exclude** url\[\] An array of item IDs to exclude from the analysis results. **scope** stringrequired The scope of the analysis, one of 'local', 'network', 'cloud-only', 'network-only' or 'all'. **matches** int32 Filter out results that don't have at least the specified number of occurrences. By default 1. **links** string When returning an interpolated HTML results, matches should have the 'wl-link' class. By default 'no'. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Success * application/json * Schema * Example (from schema) **Schema** **entities** object A map of entity URI to the respective entity. **property name\*** Entity Entity **entityId** url The entity URI. **confidence** double Confidence score representing the entity match level. **mainType** string The main schema type for the current entity. **types** string\[\] The list of schema types which the entity can be classified to. **label** string The title of the entity. **description** string The description about the entity. **images** url\[\] The list of entity image URIs. **sameAs** url\[\] The list of entity sameas URIs. **properties** object The entity properties. **latitude** double The latitude. **longitude** double The longitude. **synonyms** string\[\] **annotations** object A map of annotation id to the respective annotation. **property name\*** Annotation Object representing single annotation. **annotationId** string An unique id. **start** int32 The starting posistion of annotation in content (zero-indexed & non negative ). **end** int32 The ending posistion of annotation in content (zero-indexed & non negative ). **text** string The annotated text. **entityMatches** object\[\] The list of entities which the annotation matches. * Array \[ **confidence** double Confidence score for the current entity. **entityId** url The entity URI. * \] **images** object\[\] A list of images. * Array \[ **label** string The title of the image. **url** url The image URI. * \] **languages** string\[\] A list of languages. **topics** object\[\] A list of topics. * Array \[ **label** string The topic title. **description** string The topic description. **uri** url The topic URI. **confidence** double The topic confidence score. **images** url\[\] A list of image URIs. **sameAs** url\[\] A list of sameas URIs. * \] **content** string The text supplied for analysis. ``` { "entities": {}, "annotations": {}, "images": [ { "label": "string", "url": "string" } ], "languages": [ "string" ], "topics": [ { "label": "string", "description": "string", "uri": "string", "confidence": 0, "images": [ "string" ], "sameAs": [ "string" ] } ], "content": "string" } ``` Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/audit/audit-website/ --- # Website Audit | WordLift Developer Documentation # Website Audit POST ## /audit Performs a comprehensive SEO and AI-readiness audit of a specified URL. The audit analyzes: * Site files (robots.txt, llms.txt) * SEO fundamentals (title, description, headings) * Structured data (Schema.org, JSON-LD) * Content structure and semantic HTML * Image accessibility * Automation readiness for AI agents * JavaScript rendering and bot accessibility Returns an overall score (0-100) and detailed recommendations for improvement. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **url** urirequired The full URL of the website to audit ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 422 Successful audit response * application/json * Schema * Example (from schema) * successful **Schema** **success** boolean Indicates if the audit was successful **data** object **url** string The audited URL (may include trailing slash) **domain** string The base domain of the audited URL **timestamp** date-time ISO 8601 timestamp of when the audit was performed **overallScore** integer **Possible values:** `<= 100` Overall SEO and AI-readiness score (0-100) **summary** string High-level summary of the audit findings **siteFiles** object **status** string **Possible values:** \[`Good`, `Needs Improvement`, `Poor`\] Overall status of site files **explanation** string Detailed explanation of site files evaluation **robotsTxt** string **Possible values:** \[`found`, `not_found`, `error`\] Status of robots.txt file **llmsTxt** string **Possible values:** \[`found`, `not_found`, `error`\] Status of llms.txt file (AI model instructions) **botAccess** object **gptbot** string **Possible values:** \[`allowed`, `blocked`, `not_specified`\] **claude** string **Possible values:** \[`allowed`, `blocked`, `not_specified`\] **googlebot** string **Possible values:** \[`allowed`, `blocked`, `not_specified`\] **seoFundamentals** object **status** string **Possible values:** \[`Good`, `Needs Improvement`, `Poor`\] **explanation** string **title** stringnullable Page title tag content **description** stringnullable Meta description content **h1Count** integer Number of H1 headings on the page **structuredData** object **status** string **Possible values:** \[`Good`, `Needs Improvement`, `Poor`\] **explanation** string **hasSchema** boolean Whether schema.org markup is present **hasJsonLd** boolean Whether JSON-LD structured data is present **detectedSchemas** string\[\] List of detected schema types **contentStructure** object **status** string **Possible values:** \[`Good`, `Needs Improvement`, `Poor`\] **explanation** string **semanticHtmlScore** integer **Possible values:** `<= 10` Score for semantic HTML usage (0-10) **imageAccessibility** object **status** string **Possible values:** \[`Good`, `Needs Improvement`, `Poor`\] **explanation** string **missingAltPercentage** number **Possible values:** `<= 100` Percentage of images missing alt text **totalImages** integer Total number of images on the page **imagesWithoutAlt** integer Number of images without alt text **automationReadiness** object **status** string **Possible values:** \[`Good`, `Needs Improvement`, `Poor`\] **explanation** string **issues** string\[\] List of issues affecting automation readiness **jsRendering** object **status** string **Possible values:** \[`Good`, `Needs Improvement`, `Poor`\] **explanation** string **frameworkDetected** string Detected JavaScript framework (React, Vue, Angular, etc.) **renderingType** string **Possible values:** \[`Static`, `SSR`, `SSG`, `CSR`, `Hybrid`\] Type of rendering used by the site **aiAccessibility** string **Possible values:** \[`Excellent`, `Good`, `Limited`, `Blocked`\] How accessible the content is to AI agents **contentAvailability** string Description of content availability in HTML **recommendations** string\[\] Recommendations for improving JS rendering **quickWins** object\[\] * Array \[ **title** string Title of the quick win recommendation **description** string Detailed description of the recommendation **impact** string **Possible values:** \[`High`, `Medium`, `Low`\] Expected impact of implementing this recommendation * \] **status** string **Possible values:** \[`completed`, `pending`, `failed`\] Status of the audit process **accountId** integer Account ID associated with the audit **accountUrl** string Account URL associated with the audit ``` { "success": true, "data": { "url": "string", "domain": "string", "timestamp": "2024-07-29T15:51:28.071Z", "overallScore": 0, "summary": "string", "siteFiles": { "status": "Good", "explanation": "string", "robotsTxt": "found", "llmsTxt": "found", "botAccess": { "gptbot": "allowed", "claude": "allowed", "googlebot": "allowed" } }, "seoFundamentals": { "status": "Good", "explanation": "string", "title": "string", "description": "string", "h1Count": 0 }, "structuredData": { "status": "Good", "explanation": "string", "hasSchema": true, "hasJsonLd": true, "detectedSchemas": [ "string" ] }, "contentStructure": { "status": "Good", "explanation": "string", "semanticHtmlScore": 0 }, "imageAccessibility": { "status": "Good", "explanation": "string", "missingAltPercentage": 0, "totalImages": 0, "imagesWithoutAlt": 0 }, "automationReadiness": { "status": "Good", "explanation": "string", "issues": [ "string" ] }, "jsRendering": { "status": "Good", "explanation": "string", "frameworkDetected": "string", "renderingType": "Static", "aiAccessibility": "Excellent", "contentAvailability": "string", "recommendations": [ "string" ] }, "quickWins": [ { "title": "string", "description": "string", "impact": "High" } ], "status": "completed", "accountId": 0, "accountUrl": "string" } } ``` Successful audit ``` { "success": true, "data": { "url": "https://example.com/", "domain": "https://example.com", "timestamp": "2025-10-16T07:52:01.581Z", "overallScore": 35, "summary": "The website is a basic example domain, primarily intended for documentation.", "siteFiles": { "status": "Poor", "explanation": "Neither robots.txt nor llms.txt are present.", "robotsTxt": "not_found", "llmsTxt": "not_found", "botAccess": { "gptbot": "not_specified", "claude": "not_specified", "googlebot": "not_specified" } }, "seoFundamentals": { "status": "Poor", "explanation": "The site has a title tag but lacks a meta description.", "title": "Example Domain", "description": null, "h1Count": 1 }, "structuredData": { "status": "Poor", "explanation": "No schema.org markup is present.", "hasSchema": false, "hasJsonLd": false, "detectedSchemas": [] }, "contentStructure": { "status": "Needs Improvement", "explanation": "The content is very basic.", "semanticHtmlScore": 6 }, "imageAccessibility": { "status": "Not Applicable", "explanation": "There are no images on the page.", "missingAltPercentage": 0, "totalImages": 0, "imagesWithoutAlt": 0 }, "automationReadiness": { "status": "Poor", "explanation": "The lack of structured data and robots.txt/llms.txt hinders automation.", "issues": [ "Missing robots.txt", "Missing llms.txt", "Lack of structured data" ] }, "jsRendering": { "status": "Good", "explanation": "The website appears to be statically rendered with minimal to no JavaScript.", "frameworkDetected": "None", "renderingType": "Static", "aiAccessibility": "Excellent", "contentAvailability": "All content in HTML", "recommendations": [] }, "quickWins": [ { "title": "Add a Meta Description", "description": "Implement a meta description tag in the section.", "impact": "Medium" }, { "title": "Implement robots.txt", "description": "Create a robots.txt file to explicitly define crawling rules.", "impact": "Medium" } ], "status": "completed", "accountId": 216, "accountUrl": "https://example.com" } } ``` Unauthorized - Invalid or missing API key * application/json * Schema * Example (from schema) **Schema** **success** boolean **error** string Error message ``` { "success": false, "error": "string" } ``` Validation Error - Invalid request format * application/json * Schema * Example (from schema) **Schema** **detail** object\[\] * Array \[ **loc** string\[\] **msg** string **type** string * \] ``` { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` --- --- url: https://docs.wordlift.io/api/audit/wordlift-audit-api/ --- # WordLift Audit API | WordLift Developer Documentation Version: 1.0.0 # WordLift Audit API The WordLift Audit API provides comprehensive SEO and AI-readiness analysis for websites. It evaluates site files, SEO fundamentals, structured data, content structure, image accessibility, automation readiness, and JavaScript rendering to provide actionable insights for improving both search engine and AI agent discoverability. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey API Key authentication. Use the format: `Key [your-wordlift-key]` Example: `Authorization: Key wl_abc123def456` | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | --- --- url: https://docs.wordlift.io/api/classification/classification/ --- # Classification | WordLift Developer Documentation Version: 1.0 # Classification Generic text classification ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/classification/classifications/ --- # Classifications | WordLift Developer Documentation # Classifications Unsupervised text classification. [๐Ÿ“„๏ธ CreateClassify the text to provided categories](/api/classification/classify-using-post/) --- --- url: https://docs.wordlift.io/api/classification/classify-using-post/ --- # Create | WordLift Developer Documentation # Create POST ## /classification/classify Classify the text to provided categories ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **lang** string **Default value:** `en` Language code **multi\_class** boolean When set to true the scores will be independent, each will fall between 0 and 1 * application/json ### Body **required** body **classes** string\[\] **text** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 201 * 401 * 403 * 404 OK * application/ld+json * Schema * Example (from schema) **Schema** **labels** string\[\] **scores** float\[\] ``` { "labels": [ "string" ], "scores": [ 0 ] } ``` Created Unauthorized Forbidden Not Found --- --- url: https://docs.wordlift.io/api/content-evaluations/evaluate-content-api-content-evaluations-post/ --- # Evaluate Content | WordLift Developer Documentation # Evaluate Content POST ## /content-evaluations Submit text content for evaluation. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **text** Text (string)required The text content to be evaluated. **keywords** string\[\] List of keywords to analyze within the text content. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 422 Successful Response * application/json * Schema * Example (from schema) **Schema** **quality\_score** object required **overall** floatrequired The overall quality score. **breakdown** object required **content** object required **purpose** integerrequired **accuracy** integerrequired **depth** integerrequired **readability** object required **score** floatrequired **grade\_level** integerrequired **complex\_sentences** object required **hard** integerrequired **very\_hard** integerrequired **total** integerrequired **seo** object required **keyword\_density** object required oneOf * MOD1 * MOD2 Object with keyword percentages when keywords are provided **property name\*** float Null when no keywords are provided **top\_entities** object required **property name\*** object\[\] * Array \[ **text** stringrequired **count** integerrequired * \] **score** integerrequired **metadata** object required **word\_count** integerrequired **sentiment** object required **polarity** floatrequired **subjectivity** floatrequired **performance** object required **automated\_metrics** floatrequired **keyword\_analysis** floatrequired **llm\_evaluation** floatrequired **combine\_metrics** integerrequired **quality\_score** integerrequired **eval\_id** stringrequired ``` { "quality_score": { "overall": 0, "breakdown": { "content": { "purpose": 0, "accuracy": 0, "depth": 0 }, "readability": { "score": 0, "grade_level": 0, "complex_sentences": { "hard": 0, "very_hard": 0, "total": 0 } }, "seo": { "keyword_density": {}, "top_entities": {}, "score": 0 } } }, "metadata": { "word_count": 0, "sentiment": { "polarity": 0, "subjectivity": 0 }, "performance": { "automated_metrics": 0, "keyword_analysis": 0, "llm_evaluation": 0, "combine_metrics": 0, "quality_score": 0 }, "eval_id": "string" } } ``` Validation Error * application/json * Schema * Example (from schema) **Schema** **detail** object\[\] * Array \[ **loc** object\[\] required * Array \[ anyOf * MOD1 * MOD2 string integer * \] **msg** Message (string)required **type** Error Type (string)required * \] ``` { "detail": [ { "loc": [ "string", 0 ], "msg": "string", "type": "string" } ] } ``` --- --- url: https://docs.wordlift.io/api/content-evaluations/wordlift-content-evaluations-api/ --- # WordLift Content Evaluations API | WordLift Developer Documentation Version: 1.0.0 # WordLift Content Evaluations API API for evaluating text content based on specific criteria. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | authorization | --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-completion/ --- # Content Generation Completion | WordLift Developer Documentation # Content Generation Completion Generation completions. [๐Ÿ“„๏ธ Create a completion\[GET with body payload\](https://opensource.zalando.com/restful-api-guidelines/#get-with-body) - no resources created](/api/content-generation/create-completion/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-fields/ --- # Content Generation Fields | WordLift Developer Documentation # Content Generation Fields List fields from graphql query. [๐Ÿ“„๏ธ ListList](/api/content-generation/list-fields/) [๐Ÿ“„๏ธ List for GraphQl QueryList for GraphQl Query](/api/content-generation/list-fields-for-graph-ql-query/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-models/ --- # Content Generation Models | WordLift Developer Documentation # Content Generation Models List the available linguistic models. [๐Ÿ“„๏ธ ListList](/api/content-generation/list-models/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-presets/ --- # Content Generation Presets | WordLift Developer Documentation # Content Generation Presets Manage Presets [๐Ÿ“„๏ธ ListList](/api/content-generation/list-presets/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-records-export/ --- # Content Generation Records Export | WordLift Developer Documentation # Content Generation Records Export Export Content Generation Records in text/csv format. [๐Ÿ“„๏ธ exportexport](/api/content-generation/export/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-records/ --- # Content Generation Records | WordLift Developer Documentation # Content Generation Records Manage content generation records. [๐Ÿ“„๏ธ ListList](/api/content-generation/list-records/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-records/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-records-collection/) [๐Ÿ“„๏ธ List as EventsList as Events](/api/content-generation/list-records-as-events/) [๐Ÿ“„๏ธ GetGet](/api/content-generation/get-record/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-record/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-renders/ --- # Content Generation Renders | WordLift Developer Documentation # Content Generation Renders Render the given prompt template. [๐Ÿ“„๏ธ Render\[GET with body payload\](https://opensource.zalando.com/restful-api-guidelines/#get-with-body) - no resources created](/api/content-generation/render-template/) [๐Ÿ“„๏ธ Render\[GET with body payload\](https://opensource.zalando.com/restful-api-guidelines/#get-with-body) - no resources created](/api/content-generation/render-template-collection/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-stats/ --- # Content Generation Stats | WordLift Developer Documentation # Content Generation Stats Manage content generation stats. [๐Ÿ“„๏ธ GetGet](/api/content-generation/get/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-syncs/ --- # Content Generation Syncs | WordLift Developer Documentation # Content Generation Syncs Manage content generation syncs. [๐Ÿ“„๏ธ CreateCreate](/api/content-generation/create-sync/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation-word-biases/ --- # Content Generation Word biases | WordLift Developer Documentation # Content Generation Word biases Operations on Word biases connected to prompts. [๐Ÿ“„๏ธ ListList](/api/content-generation/list-words/) [๐Ÿ“„๏ธ CreateCreate](/api/content-generation/create-word/) [๐Ÿ“„๏ธ Update for promptSend a list of word biases for this prompt. Existing words will be deleted.](/api/content-generation/create-words/) [๐Ÿ“„๏ธ Update from CSVUpdate from CSV](/api/content-generation/create-words-from-csv/) [๐Ÿ“„๏ธ DeleteDelete](/api/content-generation/delete-word/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-word/) --- --- url: https://docs.wordlift.io/api/content-generation/content-generation/ --- # Content Generation | WordLift Developer Documentation Version: 1.0 # Content Generation Generate completions based on customized linguistic models. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * OAuth 2.0: security\_oauth2 | Security Scheme Type: | oauth2 | | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | OAuth Flow (authorizationCode): | Token URL: Authorization URL: Scopes:basic: basic scope | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/content-generation/content-generations/ --- # Content Generations | WordLift Developer Documentation # Content Generations Operations on Content Generation projects. [๐Ÿ“„๏ธ ListList](/api/content-generation/list-content-generations/) [๐Ÿ“„๏ธ CreateCreate](/api/content-generation/create-content-generation/) [๐Ÿ“„๏ธ DuplicateDuplicate](/api/content-generation/duplicate-content-generation/) [๐Ÿ“„๏ธ DeleteDelete](/api/content-generation/delete-content-generation/) [๐Ÿ“„๏ธ GetGet](/api/content-generation/get-content-generation/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-content-generation/) --- --- url: https://docs.wordlift.io/api/content-generation/copy-rules/ --- # Copy | WordLift Developer Documentation # Copy POST ## /rules/copies Copy ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **project\_type** ProjectTyperequired **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type **from\_project\_id** int64required The source Content Generation id. **to\_project\_id** int64required The target Content Generation id. ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 * 404 Created Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/create-completion/ --- # Create a completion | WordLift Developer Documentation # Create a completion POST ## /completions [GET with body payload](https://opensource.zalando.com/restful-api-guidelines/#get-with-body) \- no resources created ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **frequency\_penalty** double **Possible values:** `>= -2` and `<= 2` **logit\_bias** object **property name\*** int32 **max\_tokens** int32 **Possible values:** `>= 1` **min\_words** int32 **model\_id** int64 **Possible values:** `>= 1` **presence\_penalty** double **Possible values:** `>= -2` and `<= 2` **prompt** stringrequired **stop** string **temperature** double **Possible values:** `<= 2` ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * text/plain * Schema **Schema** string Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/create-content-generation/ --- # Create | WordLift Developer Documentation # Create POST ## /content-generations Create ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **account\_id** int64required The account id bound to this content generation. **deleted** boolean The deleted flag. **graphql\_query** stringrequired The GraphQL query which will be used to import entity data from the Knowledge Graph. **max\_tokens** int32 **Possible values:** `<= 2000` **Default value:** `64` The maximum number of tokens. **min\_words** int32 **Default value:** `0` Minimum amount of words per completion. **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model ID. **name** stringrequired **Possible values:** `<= 250 characters` The model name. **penalty** double **Possible values:** `>= 0.5` and `<= 1.9` **Default value:** `0.5` The penalty score. **prompt\_template** string The prompt template. **stop** string **Default value:** `###` The stop sequence. **temperature** double **Possible values:** `>= 0.4` and `<= 0.8` **Default value:** `0.4` The temperature score. **words\_to\_ignore** string\[\] Words to ignore when checking for words not in prompt. ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 Created * application/json * Schema * Example (from schema) **Schema** **account\_id** int64required The Account id bound to this Content Generation. **created\_at** date-time The create date-time. **deleted** booleanrequired True if the project has been deleted. **deleted\_at** date-time The delete date-time. **graphql\_query** stringrequired The GraphQL query which will be used to import entity data from the Knowledge Graph. **id** int64 The unique id. **max\_tokens** int32 **Possible values:** `<= 2000` **Default value:** `64` The maximum number of tokens. **min\_words** int32 Minimum amount of words per completion **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model ID. **modified\_at** date-time The last modified date-time. **name** stringrequired **Possible values:** `<= 250 characters` The name. **penalty** double **Possible values:** `>= 0.5` and `<= 1.9` **Default value:** `0.5` The penalty score. **prompt\_template** string The prompt template. **stop** string **Default value:** `###` The stop sequence. **temperature** double **Possible values:** `>= 0.4` and `<= 0.8` **Default value:** `0.4` The temperature score. **words\_to\_ignore** string\[\] Words to ignore when checking for words not in prompt. ``` { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "graphql_query": "string", "id": 0, "max_tokens": 64, "min_words": 0, "model_id": 1, "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "penalty": 0.5, "prompt_template": "string", "stop": "###", "temperature": 0.4, "words_to_ignore": [ "string" ] } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/create-question-and-answer/ --- # Create | WordLift Developer Documentation # Create POST ## /questions-and-answers Create ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **smartContentId** int64 **webpageProperties** object **entities** string\[\]required **iri** stringrequired **query** string **url** stringrequired ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 Created * application/json * Schema * Example (from schema) **Schema** **answer** string The generated answer. **created\_at** date-time The create date-time. **entity\_gaps** string\[\] **errors** object\[\] The set of errors found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **id** int64 The unique id. **iri** stringrequired The webpage IRI tied to this Q&A. **is\_deleted** boolean The deleted flag. **is\_published** boolean The published flag. **modified\_at** date-time The last modified date-time. **question** string The generated question. **smart\_content\_id** int64 **url** stringrequired The webpage URL tied to this Q&A. **warnings** object\[\] The set of warnings found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] ``` { "answer": "string", "created_at": "2024-07-29T15:51:28.071Z", "entity_gaps": [ "string" ], "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "id": 0, "iri": "string", "is_deleted": false, "is_published": false, "modified_at": "2024-07-29T15:51:28.071Z", "question": "string", "smart_content_id": 0, "url": "string", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/create-questions-and-answers-collection/ --- # Create | WordLift Developer Documentation # Create POST ## /questions-and-answers-collection Create ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **account\_id** int64required **Possible values:** `>= 1` The account id. **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model id. **rules** object\[\] * Array \[ **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** stringrequired The rule name. **project\_id** int64 The project id, if applicable. **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. * \] **webpage\_properties** object\[\] * Array \[ **entities** string\[\]required **iri** stringrequired **query** string **url** stringrequired * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 Created * application/json * Schema * Example (from schema) **Schema** **account\_id** int64required The account id. **created\_at** date-time The create date-time. **id** int64 The unique id. **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model id. ``` { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": 0, "model_id": 1 } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/create-rule/ --- # Create | WordLift Developer Documentation # Create POST ## /rules Create ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** stringrequired The rule name. **project\_id** int64 The project id, if applicable. **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 400 * 401 Created * application/json * Schema * Example (from schema) **Schema** **created\_at** date-time The create date-time. **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **id** int64 **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **modified\_at** date-time The last modified date-time. **name** stringrequired The rule name. **project\_id** int64 **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. ``` { "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "fixes": [ { "type": "FIND_AND_REPLACE", "what": "string", "with": "string" } ], "id": 0, "is_enabled": true, "level": "RECOMMENDED", "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "project_id": 0, "project_type": "SMART_CONTENT", "scope": "USER", "type": "string", "what_operand_lhs": "EVERYWHERE", "what_operand_rhs": "string", "what_operator": "CONTAINS", "when_operand_lhs": "string", "when_operand_rhs": "string", "when_operator": "ALWAYS" } ``` Bad request Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/create-sync/ --- # Create | WordLift Developer Documentation # Create POST ## /content-generations/:contentGenerationId/syncs Create ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/create-word/ --- # Create | WordLift Developer Documentation # Create POST ## /content-generations/:contentGenerationId/words Create ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. * application/json ### Body **required** **bias** int32required The bias. **word** stringrequired **Possible values:** `<= 1000 characters` The actual word. ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 * 404 Created * application/json * Schema * Example (from schema) **Schema** **bias** int32required The bias. **cluster** stringrequired **Possible values:** `<= 1000 characters` The cluster of the word. **content\_generation\_id** int64required The content generation id. **created\_at** date-time The create date-time. **id** int64 The unique id. **modified\_at** date-time The last modified date-time. **token\_id** stringrequired **Possible values:** `<= 1000 characters` The token id for the word. **word** stringrequired **Possible values:** `<= 1000 characters` The actual word. ``` { "bias": 0, "cluster": "string", "content_generation_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": 0, "modified_at": "2024-07-29T15:51:28.071Z", "token_id": "string", "word": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/create-words-from-csv/ --- # Update from CSV | WordLift Developer Documentation # Update from CSV PUT ## /content-generations/:contentGenerationId/words/imports Update from CSV ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ### Header Parameters **content-type** string * text/csv ### Body **required** string ## Responses[โ€‹](#responses "Direct link to Responses") * 204 * 401 * 404 No Content Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/create-words/ --- # Update for prompt | WordLift Developer Documentation # Update for prompt PUT ## /content-generations/:contentGenerationId/words Send a list of word biases for this prompt. Existing words will be deleted. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. * application/json ### Body array * Array \[ **bias** int32required The bias. **word** stringrequired **Possible values:** `<= 1000 characters` The actual word. * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 * 404 Created * application/json * Schema * Example (from schema) **Schema** * Array \[ **bias** int32required The bias. **cluster** stringrequired **Possible values:** `<= 1000 characters` The cluster of the word. **content\_generation\_id** int64required The content generation id. **created\_at** date-time The create date-time. **id** int64 The unique id. **modified\_at** date-time The last modified date-time. **token\_id** stringrequired **Possible values:** `<= 1000 characters` The token id for the word. **word** stringrequired **Possible values:** `<= 1000 characters` The actual word. * \] ``` [ { "bias": 0, "cluster": "string", "content_generation_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": 0, "modified_at": "2024-07-29T15:51:28.071Z", "token_id": "string", "word": "string" } ] ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/delete-content-generation/ --- # Delete | WordLift Developer Documentation # Delete DELETE ## /content-generations/:id Delete ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Content Generation id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Deleted Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/delete-question-and-answer/ --- # Delete | WordLift Developer Documentation # Delete DELETE ## /questions-and-answers/:id Delete ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/delete-questions-and-answers-collection/ --- # Delete | WordLift Developer Documentation # Delete DELETE ## /questions-and-answers-collection Delete ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **smart\_content\_id** int64required ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 OK Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/delete-rule/ --- # Delete | WordLift Developer Documentation # Delete DELETE ## /rules/:id Delete ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/delete-word/ --- # Delete | WordLift Developer Documentation # Delete DELETE ## /content-generations/:contentGenerationId/words/:id Delete ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. **id** int64required The Word to delete. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Created Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/duplicate-content-generation/ --- # Duplicate | WordLift Developer Documentation # Duplicate POST ## /content-generations/:from_content_generation_id/duplicates Duplicate ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **from\_content\_generation\_id** int64required The Content Generation id to duplicate from. ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 * 404 Created * application/json * Schema * Example (from schema) **Schema** **account\_id** int64required The Account id bound to this Content Generation. **created\_at** date-time The create date-time. **deleted** booleanrequired True if the project has been deleted. **deleted\_at** date-time The delete date-time. **graphql\_query** stringrequired The GraphQL query which will be used to import entity data from the Knowledge Graph. **id** int64 The unique id. **max\_tokens** int32 **Possible values:** `<= 2000` **Default value:** `64` The maximum number of tokens. **min\_words** int32 Minimum amount of words per completion **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model ID. **modified\_at** date-time The last modified date-time. **name** stringrequired **Possible values:** `<= 250 characters` The name. **penalty** double **Possible values:** `>= 0.5` and `<= 1.9` **Default value:** `0.5` The penalty score. **prompt\_template** string The prompt template. **stop** string **Default value:** `###` The stop sequence. **temperature** double **Possible values:** `>= 0.4` and `<= 0.8` **Default value:** `0.4` The temperature score. **words\_to\_ignore** string\[\] Words to ignore when checking for words not in prompt. ``` { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "graphql_query": "string", "id": 0, "max_tokens": 64, "min_words": 0, "model_id": 1, "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "penalty": 0.5, "prompt_template": "string", "stop": "###", "temperature": 0.4, "words_to_ignore": [ "string" ] } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/export/ --- # export | WordLift Developer Documentation # export GET ## /content-generations/:contentGenerationId/records.tsv export ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 OK * text/tsv * Schema * Example (from schema) **Schema** * Array \[ string * \] ``` [ "string" ] ``` --- --- url: https://docs.wordlift.io/api/content-generation/get-content-generation/ --- # Get | WordLift Developer Documentation # Get GET ## /content-generations/:id Get ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Content Generation id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **account\_id** int64required The Account id bound to this Content Generation. **created\_at** date-time The create date-time. **deleted** booleanrequired True if the project has been deleted. **deleted\_at** date-time The delete date-time. **graphql\_query** stringrequired The GraphQL query which will be used to import entity data from the Knowledge Graph. **id** int64 The unique id. **max\_tokens** int32 **Possible values:** `<= 2000` **Default value:** `64` The maximum number of tokens. **min\_words** int32 Minimum amount of words per completion **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model ID. **modified\_at** date-time The last modified date-time. **name** stringrequired **Possible values:** `<= 250 characters` The name. **penalty** double **Possible values:** `>= 0.5` and `<= 1.9` **Default value:** `0.5` The penalty score. **prompt\_template** string The prompt template. **stop** string **Default value:** `###` The stop sequence. **temperature** double **Possible values:** `>= 0.4` and `<= 0.8` **Default value:** `0.4` The temperature score. **words\_to\_ignore** string\[\] Words to ignore when checking for words not in prompt. ``` { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "graphql_query": "string", "id": 0, "max_tokens": 64, "min_words": 0, "model_id": 1, "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "penalty": 0.5, "prompt_template": "string", "stop": "###", "temperature": 0.4, "words_to_ignore": [ "string" ] } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/get-questions-and-answers/ --- # Get | WordLift Developer Documentation # Get GET ## /questions-and-answers Get ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **account\_id** int64 The account id. **iri** string The webpage IRI **smart\_content\_id** int64 The smart content id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** * Array \[ **answer** string The generated answer. **created\_at** date-time The create date-time. **entity\_gaps** string\[\] **errors** object\[\] The set of errors found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **id** int64 The unique id. **iri** stringrequired The webpage IRI tied to this Q&A. **is\_deleted** boolean The deleted flag. **is\_published** boolean The published flag. **modified\_at** date-time The last modified date-time. **question** string The generated question. **smart\_content\_id** int64 **url** stringrequired The webpage URL tied to this Q&A. **warnings** object\[\] The set of warnings found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] * \] ``` [ { "answer": "string", "created_at": "2024-07-29T15:51:28.071Z", "entity_gaps": [ "string" ], "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "id": 0, "iri": "string", "is_deleted": false, "is_published": false, "modified_at": "2024-07-29T15:51:28.071Z", "question": "string", "smart_content_id": 0, "url": "string", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ] ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/get-record/ --- # Get | WordLift Developer Documentation # Get GET ## /content-generations/:contentGenerationId/records/:recordId Get ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. **recordId** int64required The Record id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **completion** string **content\_generation\_id** int64required The parent content generation id. **data** object The data from knowledge graph after applying the graphql query. **errors** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **has\_upvote** booleanrequired This indicates whether the user upvoted the completion. **id** int64 **is\_accepted** booleanrequired This indicates whether the completion is accepted by the user. **modified\_at** date-time The last modified date-time. **not\_in\_prompt\_words** string\[\] Words in completion that are not in the prompt. **prompt** stringrequired The prompt. **repeated\_words** object Words in completion which are repeated. **property name\*** WordRepetitionData Words in completion which are repeated. **count** int32 **repeated\_in\_same\_sentence** boolean **status** string **Possible values:** \[`accepted`, `warnings`, `errors`, `valid`\] The status of the record, whether it's accepted, with errors, with warnings or valid. **validated\_at** date-time The last validation date-time. **warnings** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] ``` { "completion": "string", "content_generation_id": 0, "data": {}, "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "has_upvote": true, "id": 0, "is_accepted": true, "modified_at": "2024-07-29T15:51:28.071Z", "not_in_prompt_words": [ "string" ], "prompt": "string", "repeated_words": {}, "status": "accepted", "validated_at": "2024-07-29T15:51:28.071Z", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/get/ --- # Get | WordLift Developer Documentation # Get GET ## /content-generations/:contentGenerationId/stats Get ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **accepted** int64 The number of accepted records. **errors** int64 The number of records with errors. **total** int64 The total number of records. **valid** int64 The number of valid records. **warnings** int64 The number of records with warnings. ``` { "accepted": 0, "errors": 0, "total": 0, "valid": 0, "warnings": 0 } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/list-content-generations/ --- # List | WordLift Developer Documentation # List GET ## /content-generations List ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results **deleted** boolean Filter for the deleted flag ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **account\_id** int64required The Account id bound to this Content Generation. **created\_at** date-time The create date-time. **deleted** booleanrequired True if the project has been deleted. **deleted\_at** date-time The delete date-time. **graphql\_query** stringrequired The GraphQL query which will be used to import entity data from the Knowledge Graph. **id** int64 The unique id. **max\_tokens** int32 **Possible values:** `<= 2000` **Default value:** `64` The maximum number of tokens. **min\_words** int32 Minimum amount of words per completion **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model ID. **modified\_at** date-time The last modified date-time. **name** stringrequired **Possible values:** `<= 250 characters` The name. **penalty** double **Possible values:** `>= 0.5` and `<= 1.9` **Default value:** `0.5` The penalty score. **prompt\_template** string The prompt template. **stop** string **Default value:** `###` The stop sequence. **temperature** double **Possible values:** `>= 0.4` and `<= 0.8` **Default value:** `0.4` The temperature score. **words\_to\_ignore** string\[\] Words to ignore when checking for words not in prompt. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "graphql_query": "string", "id": 0, "max_tokens": 64, "min_words": 0, "model_id": 1, "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "penalty": 0.5, "prompt_template": "string", "stop": "###", "temperature": 0.4, "words_to_ignore": [ "string" ] } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-fields-for-graph-ql-query/ --- # List for GraphQl Query | WordLift Developer Documentation # List for GraphQl Query POST ## /fields List for GraphQl Query ## Request[โ€‹](#request "Direct link to Request") * application/graphql ### Body **required** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * application/json * Schema * Example (from schema) **Schema** * Array \[ **id** int64 **name** string * \] ``` [ { "id": 0, "name": "string" } ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-fields/ --- # List | WordLift Developer Documentation # List GET ## /content-generations/:contentGenerationId/fields List ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **id** int64 **name** string * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "id": 0, "name": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-models/ --- # List | WordLift Developer Documentation # List GET ## /models List ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **id** int64 The unique id. **name** stringrequired The language model name. **system\_prompt** string The system prompt for the model - chat models only. **token\_margin** int32 **Possible values:** `<= 30` The upper token margin for completions. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "id": 0, "name": "string", "system_prompt": "string", "token_margin": 0 } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-presets/ --- # List | WordLift Developer Documentation # List GET ## /graphql-query-presets List ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **body** stringrequired The predefined graphql query. **id** int64 **label** stringrequired The label of the preset. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "body": "string", "id": 0, "label": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-records-as-events/ --- # List as Events | WordLift Developer Documentation # List as Events GET ## /content-generations/:contentGenerationId/records-sse List as Events ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-records/ --- # List | WordLift Developer Documentation # List GET ## /content-generations/:contentGenerationId/records List ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results **q** string Search query ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **completion** string **content\_generation\_id** int64required The parent content generation id. **data** object The data from knowledge graph after applying the graphql query. **errors** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **has\_upvote** booleanrequired This indicates whether the user upvoted the completion. **id** int64 **is\_accepted** booleanrequired This indicates whether the completion is accepted by the user. **modified\_at** date-time The last modified date-time. **not\_in\_prompt\_words** string\[\] Words in completion that are not in the prompt. **prompt** stringrequired The prompt. **repeated\_words** object Words in completion which are repeated. **property name\*** WordRepetitionData Words in completion which are repeated. **count** int32 **repeated\_in\_same\_sentence** boolean **status** string **Possible values:** \[`accepted`, `warnings`, `errors`, `valid`\] The status of the record, whether it's accepted, with errors, with warnings or valid. **validated\_at** date-time The last validation date-time. **warnings** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "completion": "string", "content_generation_id": 0, "data": {}, "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "has_upvote": true, "id": 0, "is_accepted": true, "modified_at": "2024-07-29T15:51:28.071Z", "not_in_prompt_words": [ "string" ], "prompt": "string", "repeated_words": {}, "status": "accepted", "validated_at": "2024-07-29T15:51:28.071Z", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-rules/ --- # List | WordLift Developer Documentation # List GET ## /rules List ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results **project\_id** int64 The project id - if provided, must also provide the project type **project\_type** ProjectType **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type - if provided, must also provide the project id **scope** Scope **Possible values:** \[`USER`, `PROJECT`\] The scope ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 400 * 401 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **created\_at** date-time The create date-time. **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **id** int64 **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **modified\_at** date-time The last modified date-time. **name** stringrequired The rule name. **project\_id** int64 **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "fixes": [ { "type": "FIND_AND_REPLACE", "what": "string", "with": "string" } ], "id": 0, "is_enabled": true, "level": "RECOMMENDED", "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "project_id": 0, "project_type": "SMART_CONTENT", "scope": "USER", "type": "string", "what_operand_lhs": "EVERYWHERE", "what_operand_rhs": "string", "what_operator": "CONTAINS", "when_operand_lhs": "string", "when_operand_rhs": "string", "when_operator": "ALWAYS" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Bad request Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/list-words/ --- # List | WordLift Developer Documentation # List GET ## /content-generations/:contentGenerationId/words List ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ### Query Parameters **The cursor.** string **The maximum number of results.** int32 **Default value:** `10` ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **bias** int32required The bias. **cluster** stringrequired **Possible values:** `<= 1000 characters` The cluster of the word. **content\_generation\_id** int64required The content generation id. **created\_at** date-time The create date-time. **id** int64 The unique id. **modified\_at** date-time The last modified date-time. **token\_id** stringrequired **Possible values:** `<= 1000 characters` The token id for the word. **word** stringrequired **Possible values:** `<= 1000 characters` The actual word. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "bias": 0, "cluster": "string", "content_generation_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": 0, "modified_at": "2024-07-29T15:51:28.071Z", "token_id": "string", "word": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/questions-and-answers/ --- # QuestionsAndAnswers | WordLift Developer Documentation # QuestionsAndAnswers Operations on Q&A smart content projects. [๐Ÿ“„๏ธ GetGet](/api/content-generation/get-questions-and-answers/) [๐Ÿ“„๏ธ CreateCreate](/api/content-generation/create-question-and-answer/) [๐Ÿ“„๏ธ DeleteDelete](/api/content-generation/delete-questions-and-answers-collection/) [๐Ÿ“„๏ธ CreateCreate](/api/content-generation/create-questions-and-answers-collection/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-questions-and-answers-collection/) [๐Ÿ“„๏ธ DeleteDelete](/api/content-generation/delete-question-and-answer/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-question-and-answer/) --- --- url: https://docs.wordlift.io/api/content-generation/render-template-collection/ --- # Render | WordLift Developer Documentation # Render POST ## /content-generations/renders-collection [GET with body payload](https://opensource.zalando.com/restful-api-guidelines/#get-with-body) \- no resources created ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body array **required** * Array \[ **template** stringrequired The liquid template. * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** * Array \[ string * \] ``` [ "string" ] ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/render-template/ --- # Render | WordLift Developer Documentation # Render POST ## /content-generations/renders [GET with body payload](https://opensource.zalando.com/restful-api-guidelines/#get-with-body) \- no resources created ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **template** stringrequired The liquid template. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * text/plain * Schema **Schema** string Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/rules/ --- # Rules | WordLift Developer Documentation # Rules Manage validation rules for Generative AI projects. [๐Ÿ“„๏ธ ListList](/api/content-generation/list-rules/) [๐Ÿ“„๏ธ CreateCreate](/api/content-generation/create-rule/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-rule-collection/) [๐Ÿ“„๏ธ CopyCopy](/api/content-generation/copy-rules/) [๐Ÿ“„๏ธ DeleteDelete](/api/content-generation/delete-rule/) [๐Ÿ“„๏ธ UpdateUpdate](/api/content-generation/update-rule/) --- --- url: https://docs.wordlift.io/api/content-generation/update-content-generation/ --- # Update | WordLift Developer Documentation # Update PUT ## /content-generations/:id Update ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Content Generation id. * application/json ### Body **required** **account\_id** int64required The account id bound to this content generation. **deleted** boolean The deleted flag. **graphql\_query** stringrequired The GraphQL query which will be used to import entity data from the Knowledge Graph. **max\_tokens** int32 **Possible values:** `<= 2000` **Default value:** `64` The maximum number of tokens. **min\_words** int32 **Default value:** `0` Minimum amount of words per completion. **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model ID. **name** stringrequired **Possible values:** `<= 250 characters` The model name. **penalty** double **Possible values:** `>= 0.5` and `<= 1.9` **Default value:** `0.5` The penalty score. **prompt\_template** string The prompt template. **stop** string **Default value:** `###` The stop sequence. **temperature** double **Possible values:** `>= 0.4` and `<= 0.8` **Default value:** `0.4` The temperature score. **words\_to\_ignore** string\[\] Words to ignore when checking for words not in prompt. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Update * application/json * Schema * Example (from schema) **Schema** **account\_id** int64required The Account id bound to this Content Generation. **created\_at** date-time The create date-time. **deleted** booleanrequired True if the project has been deleted. **deleted\_at** date-time The delete date-time. **graphql\_query** stringrequired The GraphQL query which will be used to import entity data from the Knowledge Graph. **id** int64 The unique id. **max\_tokens** int32 **Possible values:** `<= 2000` **Default value:** `64` The maximum number of tokens. **min\_words** int32 Minimum amount of words per completion **model\_id** int64 **Possible values:** `>= 1` **Default value:** `1` The model ID. **modified\_at** date-time The last modified date-time. **name** stringrequired **Possible values:** `<= 250 characters` The name. **penalty** double **Possible values:** `>= 0.5` and `<= 1.9` **Default value:** `0.5` The penalty score. **prompt\_template** string The prompt template. **stop** string **Default value:** `###` The stop sequence. **temperature** double **Possible values:** `>= 0.4` and `<= 0.8` **Default value:** `0.4` The temperature score. **words\_to\_ignore** string\[\] Words to ignore when checking for words not in prompt. ``` { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "graphql_query": "string", "id": 0, "max_tokens": 64, "min_words": 0, "model_id": 1, "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "penalty": 0.5, "prompt_template": "string", "stop": "###", "temperature": 0.4, "words_to_ignore": [ "string" ] } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/update-question-and-answer/ --- # Update | WordLift Developer Documentation # Update PUT ## /questions-and-answers/:id Update ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required * application/json ### Body **required** **answer** string **question** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **answer** string The generated answer. **created\_at** date-time The create date-time. **entity\_gaps** string\[\] **errors** object\[\] The set of errors found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **id** int64 The unique id. **iri** stringrequired The webpage IRI tied to this Q&A. **is\_deleted** boolean The deleted flag. **is\_published** boolean The published flag. **modified\_at** date-time The last modified date-time. **question** string The generated question. **smart\_content\_id** int64 **url** stringrequired The webpage URL tied to this Q&A. **warnings** object\[\] The set of warnings found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] ``` { "answer": "string", "created_at": "2024-07-29T15:51:28.071Z", "entity_gaps": [ "string" ], "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "id": 0, "iri": "string", "is_deleted": false, "is_published": false, "modified_at": "2024-07-29T15:51:28.071Z", "question": "string", "smart_content_id": 0, "url": "string", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/update-questions-and-answers-collection/ --- # Update | WordLift Developer Documentation # Update PUT ## /questions-and-answers-collection Update ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **smartContentId** int64 **webpageProperties** object **entities** string\[\]required **iri** stringrequired **query** string **url** stringrequired ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * application/json * Schema * Example (from schema) **Schema** * Array \[ **answer** string The generated answer. **created\_at** date-time The create date-time. **entity\_gaps** string\[\] **errors** object\[\] The set of errors found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **id** int64 The unique id. **iri** stringrequired The webpage IRI tied to this Q&A. **is\_deleted** boolean The deleted flag. **is\_published** boolean The published flag. **modified\_at** date-time The last modified date-time. **question** string The generated question. **smart\_content\_id** int64 **url** stringrequired The webpage URL tied to this Q&A. **warnings** object\[\] The set of warnings found for the answer. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] * \] ``` [ { "answer": "string", "created_at": "2024-07-29T15:51:28.071Z", "entity_gaps": [ "string" ], "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "id": 0, "iri": "string", "is_deleted": false, "is_published": false, "modified_at": "2024-07-29T15:51:28.071Z", "question": "string", "smart_content_id": 0, "url": "string", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/update-record/ --- # Update | WordLift Developer Documentation # Update PUT ## /content-generations/:contentGenerationId/records/:recordId Update ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. **recordId** int64required The Record id. * application/json ### Body **required** **completion** string **has\_upvote** booleanrequired This indicates whether the user upvoted the completion. **is\_accepted** booleanrequired This indicates whether the completion is accepted by the user. **validated\_at** date-time Validation time of the record - null to revalidate. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **completion** string **content\_generation\_id** int64required The parent content generation id. **data** object The data from knowledge graph after applying the graphql query. **errors** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **has\_upvote** booleanrequired This indicates whether the user upvoted the completion. **id** int64 **is\_accepted** booleanrequired This indicates whether the completion is accepted by the user. **modified\_at** date-time The last modified date-time. **not\_in\_prompt\_words** string\[\] Words in completion that are not in the prompt. **prompt** stringrequired The prompt. **repeated\_words** object Words in completion which are repeated. **property name\*** WordRepetitionData Words in completion which are repeated. **count** int32 **repeated\_in\_same\_sentence** boolean **status** string **Possible values:** \[`accepted`, `warnings`, `errors`, `valid`\] The status of the record, whether it's accepted, with errors, with warnings or valid. **validated\_at** date-time The last validation date-time. **warnings** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] ``` { "completion": "string", "content_generation_id": 0, "data": {}, "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "has_upvote": true, "id": 0, "is_accepted": true, "modified_at": "2024-07-29T15:51:28.071Z", "not_in_prompt_words": [ "string" ], "prompt": "string", "repeated_words": {}, "status": "accepted", "validated_at": "2024-07-29T15:51:28.071Z", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/update-records-collection/ --- # Update | WordLift Developer Documentation # Update PUT ## /content-generations/:contentGenerationId/records-collection Update ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. * application/json ### Body array **required** * Array \[ **completion** string **has\_upvote** booleanrequired Whether the user upvoted the completion. **id** int64required **is\_accepted** booleanrequired Whether the completion is accepted by the user. * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** * Array \[ **completion** string **content\_generation\_id** int64required The parent content generation id. **data** object The data from knowledge graph after applying the graphql query. **errors** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] **has\_upvote** booleanrequired This indicates whether the user upvoted the completion. **id** int64 **is\_accepted** booleanrequired This indicates whether the completion is accepted by the user. **modified\_at** date-time The last modified date-time. **not\_in\_prompt\_words** string\[\] Words in completion that are not in the prompt. **prompt** stringrequired The prompt. **repeated\_words** object Words in completion which are repeated. **property name\*** WordRepetitionData Words in completion which are repeated. **count** int32 **repeated\_in\_same\_sentence** boolean **status** string **Possible values:** \[`accepted`, `warnings`, `errors`, `valid`\] The status of the record, whether it's accepted, with errors, with warnings or valid. **validated\_at** date-time The last validation date-time. **warnings** object\[\] The set of errors found for record. * Array \[ **levelEnum** LevelEnum (string) **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** string **result** string **Possible values:** \[`PASS`, `FAIL`, `SKIP`, `FIXED`\] * \] * \] ``` [ { "completion": "string", "content_generation_id": 0, "data": {}, "errors": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ], "has_upvote": true, "id": 0, "is_accepted": true, "modified_at": "2024-07-29T15:51:28.071Z", "not_in_prompt_words": [ "string" ], "prompt": "string", "repeated_words": {}, "status": "accepted", "validated_at": "2024-07-29T15:51:28.071Z", "warnings": [ { "levelEnum": "RECOMMENDED", "name": "string", "result": "PASS" } ] } ] ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/update-records/ --- # Update | WordLift Developer Documentation # Update PUT ## /content-generations/:contentGenerationId/records Update ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. ### Query Parameters **is\_accepted** booleanrequired Completion accepted * application/json ### Body **required** **validated\_at** date-time The validation time of the record. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/update-rule-collection/ --- # Update | WordLift Developer Documentation # Update PUT ## /rules-collection Update ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **project\_id** int64required The project id **project\_type** ProjectTyperequired **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type * application/json ### Body array **required** * Array \[ **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** stringrequired The rule name. **project\_id** int64 The project id, if applicable. **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 400 * 401 Found. * application/json * Schema * Example (from schema) **Schema** * Array \[ **created\_at** date-time The create date-time. **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **id** int64 **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **modified\_at** date-time The last modified date-time. **name** stringrequired The rule name. **project\_id** int64 **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. * \] ``` [ { "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "fixes": [ { "type": "FIND_AND_REPLACE", "what": "string", "with": "string" } ], "id": 0, "is_enabled": true, "level": "RECOMMENDED", "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "project_id": 0, "project_type": "SMART_CONTENT", "scope": "USER", "type": "string", "what_operand_lhs": "EVERYWHERE", "what_operand_rhs": "string", "what_operator": "CONTAINS", "when_operand_lhs": "string", "when_operand_rhs": "string", "when_operator": "ALWAYS" } ] ``` Bad request Authentication Failure --- --- url: https://docs.wordlift.io/api/content-generation/update-rule/ --- # Update | WordLift Developer Documentation # Update PUT ## /rules/:id Update ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The id * application/json ### Body **required** **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **name** stringrequired The rule name. **project\_id** int64 The project id, if applicable. **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **created\_at** date-time The create date-time. **description** string Description for the rule **fixes** object\[\] The list of fixes to apply when the rule validation fails. * Array \[ **type** ValidationTypeEnum (string) **Possible values:** \[`FIND_AND_REPLACE`, `OPEN_AI`, `APPEND`\] **what** string **with** string * \] **id** int64 **is\_enabled** boolean **level** LevelEnum (string)required **Possible values:** \[`RECOMMENDED`, `REQUIRED`\] The rule level. **modified\_at** date-time The last modified date-time. **name** stringrequired The rule name. **project\_id** int64 **project\_type** ProjectType (string) **Possible values:** \[`SMART_CONTENT`, `CONTENT_GENERATION`\] The project type, if applicable. **scope** Scope (string)required **Possible values:** \[`USER`, `PROJECT`\] The rule scope. **type** stringrequired The rule type, one of `field`, `word` or `code`. By default `field`. **what\_operand\_lhs** WhatOperandLhs (string)required **Possible values:** \[`EVERYWHERE`, `FIRST_SENTENCE`, `LAST_SENTENCE`\] The left hand side operand for what condition. **what\_operand\_rhs** stringrequired The right hand side operand for what condition. **what\_operator** WhatOperator (string)required **Possible values:** \[`CONTAINS`, `DOESNT_CONTAIN`, `ENDS_WITH`, `REGEX`, `REGEX_DOESNT_MATCH`\] The operator for what condition. **when\_operand\_lhs** stringrequired The left hand side operand for when condition. **when\_operand\_rhs** stringrequired The right hand side operand for when condition. **when\_operator** WhenOperator (string)required **Possible values:** \[`ALWAYS`, `EQUALS`, `NOT_EQUALS`\] The operator for when condition. ``` { "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "fixes": [ { "type": "FIND_AND_REPLACE", "what": "string", "with": "string" } ], "id": 0, "is_enabled": true, "level": "RECOMMENDED", "modified_at": "2024-07-29T15:51:28.071Z", "name": "string", "project_id": 0, "project_type": "SMART_CONTENT", "scope": "USER", "type": "string", "what_operand_lhs": "EVERYWHERE", "what_operand_rhs": "string", "what_operator": "CONTAINS", "when_operand_lhs": "string", "when_operand_rhs": "string", "when_operator": "ALWAYS" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/content-generation/update-word/ --- # Update | WordLift Developer Documentation # Update PUT ## /content-generations/:contentGenerationId/words/:id Update ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **contentGenerationId** int64required The Content Generation id. **id** int64required The Word bias to update. * application/json ### Body **required** **bias** int32required The bias. **word** stringrequired **Possible values:** `<= 1000 characters` The actual word. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Updated * application/json * Schema * Example (from schema) **Schema** **bias** int32required The bias. **cluster** stringrequired **Possible values:** `<= 1000 characters` The cluster of the word. **content\_generation\_id** int64required The content generation id. **created\_at** date-time The create date-time. **id** int64 The unique id. **modified\_at** date-time The last modified date-time. **token\_id** stringrequired **Possible values:** `<= 1000 characters` The token id for the word. **word** stringrequired **Possible values:** `<= 1000 characters` The actual word. ``` { "bias": 0, "cluster": "string", "content_generation_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": 0, "modified_at": "2024-07-29T15:51:28.071Z", "token_id": "string", "word": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/events/create-event/ --- # Create | WordLift Developer Documentation # Create POST ## /plugin/events Create an event ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **source** string **args** object **url** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Created * application/json * Schema * Example (from schema) **Schema** **source** string **args** object **url** string **recorded\_at** date-time **account\_id** int64 ``` { "source": "string", "args": {}, "url": "string", "recorded_at": "2024-07-29T15:51:28.071Z", "account_id": 0 } ``` Authentication failure * application/json * Schema * Example (from schema) **Schema** **source** string **args** object **url** string **recorded\_at** date-time **account\_id** int64 ``` { "source": "string", "args": {}, "url": "string", "recorded_at": "2024-07-29T15:51:28.071Z", "account_id": 0 } ``` --- --- url: https://docs.wordlift.io/api/events/events/ --- # Events | WordLift Developer Documentation Version: 1.0 # Events An API to record and query events raised by clients in order to facilitate KPI tracking. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey `Key {your key}` | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/events/list-events/ --- # List | WordLift Developer Documentation # List GET ## /plugin/events List the events bound to the authenticated account. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **url** string\[\] URLs to return **date\_greater\_than** date-time Event datetime filter to return events with date greater than the parameter **date\_less\_than** date-time Event datetime filter to return events with date less than the parameter **cursor** string The pagination cursor **limit** int32 The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **source** string **args** object **url** string **recorded\_at** date-time **account\_id** int64 * \] **self** string **next** string **prev** string **last** string **first** string ``` { "items": [ { "source": "string", "args": {}, "url": "string", "recorded_at": "2024-07-29T15:51:28.071Z", "account_id": 0 } ], "self": "string", "next": "string", "prev": "string", "last": "string", "first": "string" } ``` Authentication failure * application/json * Schema * Example (from schema) **Schema** **items** object\[\] * Array \[ **source** string **args** object **url** string **recorded\_at** date-time **account\_id** int64 * \] **self** string **next** string **prev** string **last** string **first** string ``` { "items": [ { "source": "string", "args": {}, "url": "string", "recorded_at": "2024-07-29T15:51:28.071Z", "account_id": 0 } ], "self": "string", "next": "string", "prev": "string", "last": "string", "first": "string" } ``` --- --- url: https://docs.wordlift.io/api/events/plugin-events/ --- # Plugin Events | WordLift Developer Documentation # Plugin Events Record and query for events raised by the WordLift Plugin in order to analyze KPI data. [๐Ÿ“„๏ธ ListList the events bound to the authenticated account.](/api/events/list-events/) [๐Ÿ“„๏ธ CreateCreate an event](/api/events/create-event/) --- --- url: https://docs.wordlift.io/api/fact-check/submit-fact-check/ --- # Submit a fact-checking request | WordLift Developer Documentation # Submit a fact-checking request POST ## /fact-check/score Submit a fact-checking request ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **query** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 Fact-checking result * application/json * Schema * Example (from schema) **Schema** **response** string ``` { "response": "{\n \"@context\": \"http://schema.org\",\n \"@type\": \"ClaimReview\",\n \"claimReviewed\": \"Aristotle quote 'It is the mark of an educated mind to be able to entertain a thought without accepting it.'\",\n \"author\": { \"@type\": \"Organization\", \"name\": \"WordLift\" },\n \"datePublished\": \"2024-01-17\",\n \"reviewRating\": {\n \"@type\": \"Rating\",\n \"ratingValue\": \"5\",\n \"alternateName\": \"True\",\n \"bestRating\": \"5\",\n \"worstRating\": \"1\"\n },\n \"url\": \"https://fact-check.wordlift.io/review/aristotle-quote\",\n \"reviewBody\": \"The quote 'It is the mark of an educated mind to be able to entertain a thought without accepting it.' is correctly attributable to Aristotle. It has been found in multiple credible sources, including publications of academic texts, reputable quote repositories, and philosophical discussions.\",\n \"itemReviewed\": {\n \"@type\": \"CreativeWork\",\n \"url\": [\"https://www.azquotes.com/quote/10261\", \"https://philosiblog.com/2012/03/07/it-is-the-mark-of-an-educated-mind-to-be-able-to-entertain-a-thought-without-accepting-it/\", \"https://www.brainyquote.com/quotes/aristotle_100584\", \"https://www.goodreads.com/quotes/1629-it-is-the-mark-of-an-educated-mind-to-be\", \"https://www.socratic-method.com/philosophy-quote-meanings/aristotle-it-is-the-mark-of-an-educated-mind-to-be-able-to-entertain-a-thought-without-accepting-it\"]\n }\n}" } ``` --- --- url: https://docs.wordlift.io/api/fact-check/wordlift-fact-checking-api/ --- # WordLift Fact-Checking API | WordLift Developer Documentation Version: 1.0.0 # WordLift Fact-Checking API API for semi-automated fact-checking. Returns schema.org/ClaimReview markup. This markup is structured data that contains information about the fact check -- for example, what was the claim being assessed, who made the claim, what was the verdict. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | --- --- url: https://docs.wordlift.io/api/graphql/graph-ql/ --- # GraphQL | WordLift Developer Documentation # GraphQL Query Knowledge Graphs using GraphQL [๐Ÿ“„๏ธ QueryQuery](/api/graphql/graphql-using-post/) --- --- url: https://docs.wordlift.io/api/graphql/graphql-support/ --- # GraphQL support | WordLift Developer Documentation Version: 1.0 # GraphQL support GraphQL endpoint to query Knowledge Graphs ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/graphql/graphql-using-post/ --- # Query | WordLift Developer Documentation # Query POST ## /graphql Query ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** body **query** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 201 * 401 * 403 * 404 OK * application/json * Schema * Example (from schema) **Schema** **property name\*** object object ``` {} ``` Created Unauthorized Forbidden Not Found --- --- url: https://docs.wordlift.io/api/gsc-url-inspections/google-search-console-url-inspections/ --- # Google Search Console - URL Inspections | WordLift Developer Documentation Version: 1.0.0 # Google Search Console - URL Inspections API for requesting Google Search Console URL inspections via WordLift Manager API. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey `Key {your key}` | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) --- --- url: https://docs.wordlift.io/api/gsc-url-inspections/google-search-console/ --- # Google Search Console | WordLift Developer Documentation # Google Search Console [๐Ÿ“„๏ธ Inspect a URL using Google Search ConsoleInspect a URL using Google Search Console](/api/gsc-url-inspections/post-gsc-url-inspections/) --- --- url: https://docs.wordlift.io/api/gsc-url-inspections/post-gsc-url-inspections/ --- # Inspect a URL using Google Search Console | WordLift Developer Documentation # Inspect a URL using Google Search Console POST ## /gsc/url-inspections Inspect a URL using Google Search Console ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **url** urirequired The URL to inspect ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 400 * 401 URL inspection result from Google Search Console * application/json * Schema * Example (from schema) * Example **Schema** **inspectionResult** object **inspectionResultLink** uri Link to view the full inspection result in Google Search Console **indexStatusResult** object **verdict** string **Possible values:** \[`PASS`, `FAIL`, `NEUTRAL`\] Overall indexing verdict **coverageState** string Current coverage state of the URL **robotsTxtState** string **Possible values:** \[`ALLOWED`, `DISALLOWED`\] Whether robots.txt allows indexing **indexingState** string Current indexing state **lastCrawlTime** date-time Timestamp of the last crawl **pageFetchState** string Status of the page fetch **googleCanonical** uri Canonical URL detected by Google **userCanonical** uri Canonical URL specified by the user **sitemap** uri\[\] Sitemaps that reference this URL **referringUrls** uri\[\] URLs that link to this page **crawledAs** string **Possible values:** \[`MOBILE`, `DESKTOP`\] Device type used for crawling **mobileUsabilityResult** object **verdict** string Mobile usability verdict **richResultsResult** object **verdict** string **Possible values:** \[`PASS`, `FAIL`, `NEUTRAL`, `VERDICT_UNSPECIFIED`\] Rich results verdict **detectedItems** object\[\] * Array \[ **richResultType** string Type of rich result detected **items** object\[\] * Array \[ **name** string Name of the detected item **issues** object\[\] * Array \[ **issueMessage** string Description of the issue **severity** string **Possible values:** \[`WARNING`, `ERROR`\] Severity level of the issue * \] * \] * \] ``` { "inspectionResult": { "inspectionResultLink": "string", "indexStatusResult": { "verdict": "PASS", "coverageState": "string", "robotsTxtState": "ALLOWED", "indexingState": "string", "lastCrawlTime": "2024-07-29T15:51:28.071Z", "pageFetchState": "string", "googleCanonical": "string", "userCanonical": "string", "sitemap": [ "string" ], "referringUrls": [ "string" ], "crawledAs": "MOBILE" }, "mobileUsabilityResult": { "verdict": "string" }, "richResultsResult": { "verdict": "PASS", "detectedItems": [ { "richResultType": "string", "items": [ { "name": "string", "issues": [ { "issueMessage": "string", "severity": "WARNING" } ] } ] } ] } } } ``` ``` { "inspectionResult": { "inspectionResultLink": "https://search.google.com/search-console/inspect?resource_id=sc-domain:example.com&id=3LKVoOqyHSOj12br3NiNoQ&utm_medium=link&utm_source=api", "indexStatusResult": { "verdict": "PASS", "coverageState": "Submitted and indexed", "robotsTxtState": "ALLOWED", "indexingState": "INDEXING_ALLOWED", "lastCrawlTime": "2025-11-04T02:36:47Z", "pageFetchState": "SUCCESSFUL", "googleCanonical": "https://www.example.com/product/12345", "userCanonical": "https://www.example.com/product/12345", "sitemap": [ "https://www.example.com/sitemap.xml" ], "referringUrls": [ "https://www.example.com/sitemap.xml", "https://www.example.com/product-listing" ], "crawledAs": "MOBILE" }, "mobileUsabilityResult": { "verdict": "VERDICT_UNSPECIFIED" }, "richResultsResult": { "verdict": "PASS", "detectedItems": [ { "richResultType": "Product snippets", "items": [ { "name": "Sample Product Name", "issues": [ { "issueMessage": "Missing field \"review\"", "severity": "WARNING" }, { "issueMessage": "Missing field \"aggregateRating\"", "severity": "WARNING" } ] } ] }, { "richResultType": "Merchant listings", "items": [ { "name": "Sample Product Name", "issues": [ { "issueMessage": "Missing field \"shippingDetails\"", "severity": "WARNING" }, { "issueMessage": "Missing field \"hasMerchantReturnPolicy\"", "severity": "WARNING" } ] } ] }, { "richResultType": "Breadcrumbs", "items": [ { "name": "Unnamed item" } ] } ] } } } ``` Bad Request Authentication Failure --- --- url: https://docs.wordlift.io/api/image-to-text/image-to-text-api-image-2-text-v-1-post/ --- # Convert Image to Text | WordLift Developer Documentation # Convert Image to Text POST ## /image-2-text-v1 Process an image and generate descriptive text based on its content. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **image\_url** Image URL (string)required URL of the image to be processed **prompt\_type** Prompt Type (string)required **Possible values:** \[`Other`, `Product`, `Scene`\] Type of analysis to perform **custom\_prompt** Custom Prompt (string) Custom instructions for text generation ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 422 Successful Response * application/json * Schema * Example (from schema) **Schema** **text** Text (string)required Generated text description of the image ``` { "text": "string" } ``` Validation Error * application/json * Schema * Example (from schema) **Schema** **detail** object\[\] * Array \[ **loc** object\[\] required * Array \[ anyOf * MOD1 * MOD2 string integer * \] **msg** Message (string)required **type** Error Type (string)required * \] ``` { "detail": [ { "loc": [ "string", 0 ], "msg": "string", "type": "string" } ] } ``` --- --- url: https://docs.wordlift.io/api/image-to-text/wordlift-image-to-text-api/ --- # WordLift Image-to-Text API | WordLift Developer Documentation Version: 1.0.0 # WordLift Image-to-Text API API for converting images into text descriptions using AI technology. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | authorization | --- --- url: https://docs.wordlift.io/api/inspector/get/ --- # Inspect | WordLift Developer Documentation # Inspect GET ## /inspect Inspect a URL to perform a variety of tasks defined by the list of applied filters. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **u** stringrequired The URL to inspect **Example:** https://wordlift.io **f** stringrequired **Possible values:** \[`validator`, `content-analysis`, `mock-language-detection`, `browser-response`, `jena-graph`, `links`, `browser-response`, `lingua-language-detection`, `language-detection`, `redlink-content-analysis`, `summarize`, `text`, `validator`, `xmltei`, `classify`\] Filters to be applied on the result, if you want to apply multiple filters they should be separated by comma **Example:** validator,content-analysis **classes** string\[\] A list of categories to be provided for classify filter. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Found. * application/json * Schema * Example (from schema) **Schema** **empty** boolean ``` { "empty": true } ``` Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/inspector/inspection/ --- # Inspection | WordLift Developer Documentation Version: 1.0 # Inspection Inspect web pages for structured data. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey `Key {your key}` | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/inspector/inspector/ --- # Inspector | WordLift Developer Documentation # Inspector Inspect a web page URL [๐Ÿ“„๏ธ InspectInspect a URL to perform a variety of tasks defined by the list of applied filters.](/api/inspector/get/) --- --- url: https://docs.wordlift.io/api/inspector/microdata-to-json-ld/ --- # Microdata to JSON-LD | WordLift Developer Documentation # Microdata to JSON-LD GET ## /microdata-to-jsonld Provided a URL, converts any microdata found on that URL to JSON-LD. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **u** stringrequired The web page URL ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Found. * application/ld+json * Schema * Example (from schema) **Schema** ``` {} ``` Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/inspector/microdata/ --- # Microdata | WordLift Developer Documentation # Microdata Converts any microdata found on a web page to JSON-LD. [๐Ÿ“„๏ธ Microdata to JSON-LDProvided a URL, converts any microdata found on that URL to JSON-LD.](/api/inspector/microdata-to-json-ld/) --- --- url: https://docs.wordlift.io/api/long-tail/get-1/ --- # Get by id | WordLift Developer Documentation # Get by id GET ## /webasyncs/:id/pull Get a Web Async response by id. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** stringrequired The Web Async id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** * Array \[ string * \] ``` [ "string" ] ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/long-tail/get-2/ --- # Get entities | WordLift Developer Documentation # Get entities GET ## /longtail Query for long tail opportunities and receive entities. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **q** stringrequired The Longtail query **ln** stringrequired A location name, origin of the search **Example:** London,England,United Kingdom **lc** stringrequired Language Code **Example:** en **sd** stringrequired Search Domain **Example:** google.co.uk, google.com.au, google.de, etc. **sc** string **Possible values:** \[`all`, `local`, `network`\] Analysis Scope **d** string **Default value:** `10` The maximum number of results to analyze ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Found. * \*/\* * Schema * Example (from schema) **Schema** **summary** string The page summary. **entities** object\[\] The list of entities matching the query. * Array \[ **reference** string The referenced entity URI **properties** object **name** string The name of the entity. **sameAs** string\[\] A list of sameAs entity URIs. * \] ``` { "summary": "string", "entities": [ { "reference": "string", "properties": { "name": "string", "sameAs": [ "string" ] } } ] } ``` Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/long-tail/get-3/ --- # Get entities by rank (async) | WordLift Developer Documentation # Get entities by rank (async) GET ## /longtail/hook Query for long tail opportunities and receive entities along with their position in SERP. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **q** stringrequired The Longtail query **ln** stringrequired A location name, origin of the search **Example:** London,England,United Kingdom **lc** stringrequired Language Code **Example:** en **sd** stringrequired Search Domain **Example:** google.co.uk, google.com.au, google.de, etc. **sc** string **Possible values:** \[`all`, `local`, `network`\] Analysis Scope **hk** stringrequired Webhook URL **d** string **Default value:** `10` The maximum number of results to analyze ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Found. Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/long-tail/get-v-2/ --- # Get entities by rank | WordLift Developer Documentation # Get entities by rank GET ## /longtail/v2 Query for long tail opportunities and receive entities along with their position in SERP. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **q** stringrequired The Longtail query **ln** stringrequired A location name, origin of the search **Example:** London,England,United Kingdom **lc** stringrequired Language Code **Example:** en **sd** stringrequired Search Domain **Example:** google.co.uk, google.com.au, google.de, etc. **sc** string **Possible values:** \[`all`, `local`, `network`\] Analysis Scope **d** string **Default value:** `10` The maximum number of results to analyze ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 500 Found. * \*/\* * Schema * Example (from schema) **Schema** * Array \[ **rank** int32 **entities** object\[\] * Array \[ **reference** string The referenced entity URI **properties** object **name** string The name of the entity. **sameAs** string\[\] A list of sameAs entity URIs. * \] * \] ``` [ { "rank": 0, "entities": [ { "reference": "string", "properties": { "name": "string", "sameAs": [ "string" ] } } ] } ] ``` Authentication Failure Server Error --- --- url: https://docs.wordlift.io/api/long-tail/get/ --- # Get by id | WordLift Developer Documentation # Get by id GET ## /webasyncs/:id Get a Web Async operation by its id. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** uuidrequired The Web Async id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * \*/\* * Schema * Example (from schema) **Schema** **id** uuid **created** date-time **completed** date-time **delivered** date-time **method** string **url** string **callback** string **remoteAddress** string ``` { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created": "2024-07-29T15:51:28.071Z", "completed": "2024-07-29T15:51:28.071Z", "delivered": "2024-07-29T15:51:28.071Z", "method": "string", "url": "string", "callback": "string", "remoteAddress": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/long-tail/list/ --- # List | WordLift Developer Documentation # List GET ## /webasyncs List all Web Async operations. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found. * \*/\* * Schema * Example (from schema) **Schema** * Array \[ **id** uuid **created** date-time **completed** date-time **delivered** date-time **method** string **url** string **callback** string **remoteAddress** string * \] ``` [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created": "2024-07-29T15:51:28.071Z", "completed": "2024-07-29T15:51:28.071Z", "delivered": "2024-07-29T15:51:28.071Z", "method": "string", "url": "string", "callback": "string", "remoteAddress": "string" } ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/long-tail/long-tail/ --- # Long Tail | WordLift Developer Documentation Version: 1.0 # Long Tail Provide suggestions for long tail opportunities. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey `Key {your key}` | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/long-tail/long-tails/ --- # Long Tails | WordLift Developer Documentation # Long Tails Research long tail opportunities. [๐Ÿ“„๏ธ Get entitiesQuery for long tail opportunities and receive entities.](/api/long-tail/get-2/) [๐Ÿ“„๏ธ Get entities by rankQuery for long tail opportunities and receive entities along with their position in SERP.](/api/long-tail/get-v-2/) [๐Ÿ“„๏ธ Get entities by rank (async)Query for long tail opportunities and receive entities along with their position in SERP.](/api/long-tail/get-3/) --- --- url: https://docs.wordlift.io/api/long-tail/web-asyncs-metadata/ --- # Web Asyncs metadata | WordLift Developer Documentation # Web Asyncs metadata Operation on asynchronous calls. [๐Ÿ“„๏ธ ListList all Web Async operations.](/api/long-tail/list/) [๐Ÿ“„๏ธ Get by idGet a Web Async operation by its id.](/api/long-tail/get/) --- --- url: https://docs.wordlift.io/api/long-tail/web-asyncs-responses/ --- # Web Asyncs responses | WordLift Developer Documentation # Web Asyncs responses Retrieve Web Async data. [๐Ÿ“„๏ธ Get by idGet a Web Async response by id.](/api/long-tail/get-1/) --- --- url: https://docs.wordlift.io/api/manager/account-google-search-console/ --- # Account - Google Search Console | WordLift Developer Documentation # Account - Google Search Console Manage the relationship between the account and the Google Search Console siteUrl. [๐Ÿ“„๏ธ Account configuration updateUpdate the Google Search Console siteUrl for the authenticated account.](/api/manager/update-account-config/) --- --- url: https://docs.wordlift.io/api/manager/account-stats/ --- # Account Stats | WordLift Developer Documentation # Account Stats Account Statistics [๐Ÿ“„๏ธ Get my Account statisticsGet the Account statistics, such the number of products, product groups and urls in the KG.](/api/manager/get-my-stats/) --- --- url: https://docs.wordlift.io/api/manager/account/ --- # Account | WordLift Developer Documentation # Account Get Account Information [๐Ÿ“„๏ธ GetGet the account data for the current account identified by its key.](/api/manager/get-me/) --- --- url: https://docs.wordlift.io/api/manager/accounts/ --- # Accounts | WordLift Developer Documentation # Accounts Manage Accounts [๐Ÿ“„๏ธ ListList the accounts](/api/manager/list-accounts/) [๐Ÿ“„๏ธ Get an account.Get the account](/api/manager/get-account/) [๐Ÿ“„๏ธ Patch an account.Patch an account.](/api/manager/patch-account/) [๐Ÿ“„๏ธ Update an account.Update the account](/api/manager/update-account/) --- --- url: https://docs.wordlift.io/api/manager/add-ons/ --- # AddOns | WordLift Developer Documentation # AddOns Retrieve Add-ons data [๐Ÿ“„๏ธ ListList the Add-ons configurations](/api/manager/list-configurations/) --- --- url: https://docs.wordlift.io/api/manager/analytics-imports/ --- # Analytics Imports | WordLift Developer Documentation # Analytics Imports Import Analytics data to the KG using different sources, e.g. Google Search Console. [๐Ÿ“„๏ธ CreateCreate a Analytics Import using Google Search Console or Botify depending on the Account configuration.](/api/manager/create-analytics-import/) --- --- url: https://docs.wordlift.io/api/manager/analytics-syncs/ --- # Analytics syncs | WordLift Developer Documentation # Analytics syncs Data about performed search analytics synchronizations to the KG [๐Ÿ“„๏ธ ListRetrieve the analytics syncs](/api/manager/list-analytics-syncs/) [๐Ÿ“„๏ธ CreateCreate and run analytics sync](/api/manager/create-analytics-sync/) --- --- url: https://docs.wordlift.io/api/manager/authors/ --- # Authors | WordLift Developer Documentation # Authors Create structured data for authors. [๐Ÿ“„๏ธ CreateCreates the structured data for an author.](/api/manager/create-author/) --- --- url: https://docs.wordlift.io/api/manager/botify-crawl-imports/ --- # Botify Crawl Imports | WordLift Developer Documentation # Botify Crawl Imports Import Botify Crawl data to KG [๐Ÿ“„๏ธ CreateCreate a Botify Crawl Import](/api/manager/create-botify-crawl-import/) --- --- url: https://docs.wordlift.io/api/manager/create-analytics-import/ --- # Create | WordLift Developer Documentation # Create POST ## /analytics-imports Create a Analytics Import using Google Search Console or Botify depending on the Account configuration. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **urls** string\[\] An array of URLs. ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 Success * application/x-ndjson * Schema * Example (from schema) **Schema** * Array \[ **property name\*** string * \] ``` [ {} ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-analytics-sync/ --- # Create | WordLift Developer Documentation # Create POST ## /analytics-syncs Create and run analytics sync ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **account\_id** int64 ## Responses[โ€‹](#responses "Direct link to Responses") * 201 Created * application/json * Schema * Example (from schema) **Schema** **account\_id** int64 The Account identifier **created\_at** date-time The creation date-time. **id** uuid The resource identifier **queries\_retrieved** int64 Total number of queries retrieved by the analytics provider. **retrievable\_urls** int32 Number of URLs processable by the analytics provider based on the Account URL. **started\_at** date-time The started date-time. **status** string **Possible values:** \[`SCHEDULED`, `SYNCING`, `COMPLETED`, `ERROR`, `CANCELLED`\] Status of the sync process. **stopped\_at** date-time The stopped date-time. **total\_entities\_updated** int32 Number of unique entities updated with analytics by this sync. **urls\_in\_dataset** int32 Number of total URLs retrieved from dataset entities ``` { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "queries_retrieved": 0, "retrievable_urls": 0, "started_at": "2024-07-29T15:51:28.071Z", "status": "SCHEDULED", "stopped_at": "2024-07-29T15:51:28.071Z", "total_entities_updated": 0, "urls_in_dataset": 0 } ``` --- --- url: https://docs.wordlift.io/api/manager/create-auth-code-exchange/ --- # Get an Access Code | WordLift Developer Documentation # Get an Access Code POST ## /google-search-console/oauth2/auth-code-exchanges deprecated Call this API to have the Platform receive an Authentication Token to access the Analytics data via Google Search Console. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **code** stringrequired The Authorization Code. The API will use the Authorization Code to exchange it with an Access Token. **google\_search\_console\_resource\_id** stringrequired The Google Search Console Resource Id as it shows in the Google Search Console, e.g. sc-domain:example.org. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **access\_token** string The access token **expires\_in** int32 The number of seconds for the access token to expire **refresh\_token** string The refresh token **scope** string The scope **token\_type** string The token type, usually Bearer ``` { "access_token": "string", "expires_in": 0, "refresh_token": "string", "scope": "string", "token_type": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/create-author/ --- # Create | WordLift Developer Documentation # Create POST ## /data/authors Creates the structured data for an author. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **name** stringrequired The name of the author, e.g. `John Smith`. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/ld+json * application/n-triples * application/rdf+xml * text/turtle * Schema **Schema** string * Schema **Schema** string * Schema **Schema** string * Schema **Schema** string Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-authorize-uri/ --- # Create an Authorization URI | WordLift Developer Documentation # Create an Authorization URI POST ## /google-search-console/oauth2/authorize-uris deprecated Call this API to get an authorization URI needed to interactively get an authorization token. Then call the `exchangeAuthCode` to exchange it with an authorization token. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **redirect\_uri** stringrequired The Redirect URI to where redirect the Client after successful authentication. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **authorize\_uri** stringrequired The Authorization URI. The Client should be redirected to this URI. ``` { "authorize_uri": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/create-botify-crawl-import/ --- # Create | WordLift Developer Documentation # Create POST ## /botify-crawl-imports Create a Botify Crawl Import ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **collection** string **description** string\[\] **filters** object\[\] * Array \[ **filters** undefined\[\] Operational filters such as AND or OR. **key** string The filter key. Key is required for the filters \[EQ, NE, GT, LT, GTE, LTE, IN, NIN\] **operator** stringrequired **Possible values:** \[`EQ`, `GT`, `LT`, `NE`, `GTE`, `LTE`, `IN`, `NIN`, `AND`, `OR`\] A query request filter operator. **value** object The filter value. oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 * MOD6 * MOD7 * MOD8 * Array \[ string * \] string * Array \[ integer * \] integer * Array \[ number * \] number * Array \[ integer * \] integer **value\_date** date-time The filter value as a date, if provided will be preferred over the `value` field. * \] **headline** string **request\_embeddings** string\[\] **text** string\[\] **types** string\[\] **url** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/x-ndjson * Schema * Example (from schema) **Schema** * Array \[ **abstract** string **date\_published** date **headline** string **html** string **image** string **markdown** string **text** string **types** string\[\] **url** string * \] ``` [ { "abstract": "string", "date_published": "2024-07-29", "headline": "string", "html": "string", "image": "string", "markdown": "string", "text": "string", "types": [ "string" ], "url": "string" } ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-embedding/ --- # Create | WordLift Developer Documentation # Create POST ## /kg/embeddings Create the embedding for the IRIs for the provided query. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **embedding** object required A request to generate the embeddings. **model** string **Default value:** `nomic-ai/nomic-embed-text-v1` The model used to generate the embeddings. **properties** string\[\] The list of properties to use to generate the embeddings. **graphql\_query** stringrequired The GraphQL query used to select entities to create embedding vectors for. ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 401 Success * application/x-ndjson * Schema * Example (from schema) **Schema** * Array \[ **id** stringrequired The id/iri of the web page in the Graph. **model** stringrequired * \] ``` [ { "id": "string", "model": "string" } ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-internal-link-suggestion/ --- # Suggest | WordLift Developer Documentation # Suggest POST ## /internal-links/suggestions Create an Internal Links suggestion. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **anchor\_text** object The Anchor Text request. **enabled** boolean Whether to enable Anchor Text, by default false. **max\_characters** int32 **Default value:** `15` The maximum anchor text length, by default 15 characters. **model** string **Default value:** `gpt-4o` The model to use. **prompt\_template** string **Default value:** \`As an SEO and content editor, your task is to create a concise and appropriate anchor text to enhance keyword targeting, using the provided keyword and page title. Ensure to maintain a neutral tone and adhere to the examples below for guidance: {%- for anchor in anchors -%} * Title: {{ anchor.title }} * Keyword: {{ anchor.keyword }} * Anchor text: {{ anchor.anchor\_text }} {%- endfor -%} \` The prompt template, we provide a default. Liquid template language is supported. **items** object\[\] required An array of items. * Array \[ **id** uri The entity id, reused in the output template. **query** object required A query request. **fields** string\[\] List of extra fields to be retrieved. **filters** object\[\] A list of prefilters. * Array \[ **filters** undefined\[\] Operational filters such as AND or OR. **key** string The filter key. Key is required for the filters \[EQ, NE, GT, LT, GTE, LTE, IN, NIN\] **operator** stringrequired **Possible values:** \[`EQ`, `GT`, `LT`, `NE`, `GTE`, `LTE`, `IN`, `NIN`, `AND`, `OR`\] A query request filter operator. **value** object The filter value. oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 * MOD6 * MOD7 * MOD8 * Array \[ string * \] string * Array \[ integer * \] integer * Array \[ number * \] number * Array \[ integer * \] integer **value\_date** date-time The filter value as a date, if provided will be preferred over the `value` field. * \] **query\_embedding** double\[\] The list of embeddings, not required if `query_string` is provided. **query\_string** string The query string, not required if the `query_embeddings` are provided. Please note that the `query_string` is ignored if the `query_embeddings` are provided. **query\_uri** uri Perform a Vector Search based on similarities with an entity with the specified URI. **query\_url** url Perform a Vector Search based on similarities with an entity with the specified URL (schema:url). **similarity\_top\_k** int32 **Possible values:** `>= 1` **Default value:** `2` The similarity top K. **source\_name** string The webpage name, reused in the output template. * \] **template** string The output template, not required, we provide a default JSON-LD template ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Created * application/json * Schema * Example (from schema) **Schema** * Array \[ **destinations** object\[\] required InternalLink destinations configuration. * Array \[ **id** stringrequired The entity ID, usually a URI. **name** stringrequired The entity's name, or headline. **position** int32required The position of an item in a series or sequence of items. **url** urlrequired The entity's web page URL. * \] **source** object required InternalLink source configuration. **id** uri Entity identifier. **name** string Entity name. **url** urlrequired Entity url. * \] ``` [ { "destinations": [ { "id": "string", "name": "string", "position": 0, "url": "string" } ], "source": { "id": "string", "name": "string", "url": "string" } } ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-internal-link/ --- # Create | WordLift Developer Documentation # Create POST ## /internal-links Create Internal Links. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **anchor\_text** object The Anchor Text request. **enabled** boolean Whether to enable Anchor Text, by default false. **max\_characters** int32 **Default value:** `15` The maximum anchor text length, by default 15 characters. **model** string **Default value:** `gpt-4o` The model to use. **prompt\_template** string **Default value:** \`As an SEO and content editor, your task is to create a concise and appropriate anchor text to enhance keyword targeting, using the provided keyword and page title. Ensure to maintain a neutral tone and adhere to the examples below for guidance: {%- for anchor in anchors -%} * Title: {{ anchor.title }} * Keyword: {{ anchor.keyword }} * Anchor text: {{ anchor.anchor\_text }} {%- endfor -%} \` The prompt template, we provide a default. Liquid template language is supported. **items** object\[\] required An array of items. * Array \[ **id** uri The entity id, reused in the output template. **query** object required A query request. **fields** string\[\] List of extra fields to be retrieved. **filters** object\[\] A list of prefilters. * Array \[ **filters** undefined\[\] Operational filters such as AND or OR. **key** string The filter key. Key is required for the filters \[EQ, NE, GT, LT, GTE, LTE, IN, NIN\] **operator** stringrequired **Possible values:** \[`EQ`, `GT`, `LT`, `NE`, `GTE`, `LTE`, `IN`, `NIN`, `AND`, `OR`\] A query request filter operator. **value** object The filter value. oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 * MOD6 * MOD7 * MOD8 * Array \[ string * \] string * Array \[ integer * \] integer * Array \[ number * \] number * Array \[ integer * \] integer **value\_date** date-time The filter value as a date, if provided will be preferred over the `value` field. * \] **query\_embedding** double\[\] The list of embeddings, not required if `query_string` is provided. **query\_string** string The query string, not required if the `query_embeddings` are provided. Please note that the `query_string` is ignored if the `query_embeddings` are provided. **query\_uri** uri Perform a Vector Search based on similarities with an entity with the specified URI. **query\_url** url Perform a Vector Search based on similarities with an entity with the specified URL (schema:url). **similarity\_top\_k** int32 **Possible values:** `>= 1` **Default value:** `2` The similarity top K. **source\_name** string The webpage name, reused in the output template. * \] **template** string The output template, not required, we provide a default JSON-LD template ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Created * application/x-ndjson * Schema * Example (from schema) **Schema** * Array \[ string * \] ``` [ "string" ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-merchant/ --- # Create | WordLift Developer Documentation # Create POST ## /merchants Create a Merchant ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **access\_token** string Google Merchant access token **account\_id** int64 The Knowledge Graph to use for the Merchant. Please note that the Knowledge Graph will be reset. When not provided, this method will use the first available Knowledge Graph. **dataset\_domain** string The custom domain (for example data.example.org) **dataset\_name** string The dataset path (for example "data") **deleted** boolean True if the merchant has been deleted **google\_merchant\_id** int64required The Google Merchant id **ignore\_brand** boolean Whether to ignore the `brand` property during validation **ignore\_image** boolean Whether to ignore the `image` property during validation **publisher\_name** stringrequired The publisher name (shows in schema publisher) **refresh\_token** stringrequired Google Merchant refresh token **url** stringrequired The website URL **url\_strategy** string **Possible values:** `<= 50 characters`, \[`canonicalLinkAndLink`, `canonicalLinkOtherwiseLink`\] **Default value:** `canonicalLinkAndLink` Which strategy to use to write the url schema. **writer\_service** string How to write the merchant data to the graph, if unsure, do not set anything (by default `wordpressMerchantWriter`). ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success * application/json * Schema * Example (from schema) **Schema** **access\_token** stringrequired The Google merchant access token **account\_id** int64 The account id **automatic\_synchronization** boolean Whether the Merchant data will be synchronized automatically **created\_at** date-time The create date-time **custom\_seller** string Custom seller entity - if applicable. **dataset\_domain** stringdeprecated The custom domain (for example data.example.org) **dataset\_name** stringdeprecated The dataset path (for example /data) **default\_products\_filter\_action** stringrequired **Possible values:** \[`PROCESS`, `IGNORE`\] **Default value:** `PROCESS` Default Products filter action to apply during sync process. **deleted** booleanrequired True if the merchant has been deleted **deleted\_at** date-time The delete date-time **google\_merchant\_id** int64required The Google Merchant id **id** int64 The unique id **ignore\_brand** boolean Whether to ignore the `brand` property during validation **ignore\_image** boolean Whether to ignore the `image` property during validation **modified\_at** date-time The last modified date-time **publisher\_name** stringrequired The publisher name (shows in schema publisher) **refresh\_token** stringrequired The Google merchant refresh token **url** string The website URL **url\_strategy** string **Possible values:** `<= 50 characters`, \[`canonicalLinkAndLink`, `canonicalLinkOtherwiseLink`\] **Default value:** `canonicalLinkAndLink` Which strategy to use to write the url schema. **writer\_service** string How to write the merchant data to the graph, if unsure, do not set anything (by default `wordpressMerchantWriter`). ``` { "access_token": "string", "account_id": 0, "automatic_synchronization": true, "created_at": "2024-07-29T15:51:28.071Z", "custom_seller": "string", "default_products_filter_action": "PROCESS", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "google_merchant_id": 0, "id": 0, "ignore_brand": true, "ignore_image": true, "modified_at": "2024-07-29T15:51:28.071Z", "publisher_name": "string", "refresh_token": "string", "url": "string", "url_strategy": "canonicalLinkAndLink", "writer_service": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/create-o-auth-2-authorized-client/ --- # Create | WordLift Developer Documentation # Create POST ## /oauth2/authorized-clients Create a OAuth2 Authorized Client ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **access\_token\_expires\_at** date-time When the Access Token expires **access\_token\_issued\_at** date-time When the Access Token was issued **access\_token\_scopes** string The Access Token scopes **access\_token\_type** string The Access Token Type **access\_token\_value** string The Access Token Value **client\_registration\_id** string The Client Registration Id **principal\_name** string The Principal Name **refresh\_token\_issued\_at** date-time When the Access Token was issued **refresh\_token\_value** string The Refresh Token Value ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **access\_token\_expires\_at** date-time **access\_token\_issued\_at** date-time **access\_token\_scopes** string **access\_token\_type** string **access\_token\_value** string **client\_registration\_id** string **id** int64 **principal\_name** string **refresh\_token\_issued\_at** date-time **refresh\_token\_value** string ``` { "access_token_expires_at": "2024-07-29T15:51:28.071Z", "access_token_issued_at": "2024-07-29T15:51:28.071Z", "access_token_scopes": "string", "access_token_type": "string", "access_token_value": "string", "client_registration_id": "string", "id": 0, "principal_name": "string", "refresh_token_issued_at": "2024-07-29T15:51:28.071Z", "refresh_token_value": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-or-update-my-platform-consumption/ --- # Create or update the Platform Consumption | WordLift Developer Documentation # Create or update the Platform Consumption PUT ## /platform-limit/consumptions/me Create or update the Platform Consumption for the authenticated user. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **applies\_to** stringrequired **consumption\_to\_add** int32 **Default value:** `1` ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **account\_limits** int32 **applies\_to** stringrequired **block** boolean **consumption** int32 **id** int64 **limits** int32 **reference\_id** int64required **reference\_type** stringrequired **Possible values:** \[`SUBSCRIPTION`, `ACCOUNT`\] **remaining** int32 **resets\_in\_seconds** int64 **subscription\_limits** int32 * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "account_limits": 0, "applies_to": "string", "block": true, "consumption": 0, "id": 0, "limits": 0, "reference_id": 0, "reference_type": "SUBSCRIPTION", "remaining": 0, "resets_in_seconds": 0, "subscription_limits": 0 } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/create-platform-limit/ --- # Create Platform Limit | WordLift Developer Documentation # Create Platform Limit POST ## /platform-limit/limits Create a platform limit. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **applies\_to** stringrequired **based\_on** stringrequired **Possible values:** \[`SKU`\] **based\_on\_value** stringrequired **description** string **limits** int32required **Possible values:** `>= 1` **scope** stringrequired **Possible values:** \[`ACCOUNT`, `SUBSCRIPTION`\] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **applies\_to** stringrequired **based\_on** stringrequired **Possible values:** \[`SKU`\] **based\_on\_value** stringrequired **created\_at** date-time The create date-time. **description** string **id** int64 **limits** int32required **Possible values:** `>= 1` **modified\_at** date-time The last modified date-time. **scope** stringrequired **Possible values:** \[`ACCOUNT`, `SUBSCRIPTION`\] ``` { "applies_to": "string", "based_on": "SKU", "based_on_value": "string", "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "id": 0, "limits": 0, "modified_at": "2024-07-29T15:51:28.071Z", "scope": "ACCOUNT" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/create-query/ --- # Create | WordLift Developer Documentation # Create POST ## /vector-search/queries Create ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **fields** string\[\] List of extra fields to be retrieved. **filters** object\[\] A list of prefilters. * Array \[ **filters** undefined\[\] Operational filters such as AND or OR. **key** string The filter key. Key is required for the filters \[EQ, NE, GT, LT, GTE, LTE, IN, NIN\] **operator** stringrequired **Possible values:** \[`EQ`, `GT`, `LT`, `NE`, `GTE`, `LTE`, `IN`, `NIN`, `AND`, `OR`\] A query request filter operator. **value** object The filter value. oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 * MOD6 * MOD7 * MOD8 * Array \[ string * \] string * Array \[ integer * \] integer * Array \[ number * \] number * Array \[ integer * \] integer **value\_date** date-time The filter value as a date, if provided will be preferred over the `value` field. * \] **query\_embedding** double\[\] The list of embeddings, not required if `query_string` is provided. **query\_string** string The query string, not required if the `query_embeddings` are provided. Please note that the `query_string` is ignored if the `query_embeddings` are provided. **query\_uri** uri Perform a Vector Search based on similarities with an entity with the specified URI. **query\_url** url Perform a Vector Search based on similarities with an entity with the specified URL (schema:url). **similarity\_top\_k** int32 **Possible values:** `>= 1` **Default value:** `2` The similarity top K. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **fields** object Map of extra retrieved fields. The values of the requested fields are always returned in an array.If no value is found an empty array is returned. **property name\*** object\[\] Map of extra retrieved fields. The values of the requested fields are always returned in an array.If no value is found an empty array is returned. * Array \[ oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 string integer number number boolean * \] **id** string **iri** stringrequired The IRI of the entity that this node belongs to. **metadata** object A nodes extra metadata. **property name\*** object A nodes extra metadata. oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 string integer number number boolean **node\_id** string A nodes id. **score** doublerequired The similarity score between the node and the query embeddings. **text** string The text of a node from which the embeddings were generated. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "fields": {}, "id": "string", "iri": "string", "metadata": {}, "node_id": "string", "score": 0, "text": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/create-sitemap-import/ --- # Create | WordLift Developer Documentation # Create POST ## /sitemap-imports Create a Sitemap Import ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **embedding** object A request to generate the embeddings. **model** string **Default value:** `nomic-ai/nomic-embed-text-v1` The model used to generate the embeddings. **properties** string\[\] The list of properties to use to generate the embeddings. **id\_generator** string **Possible values:** \[`default`, `headline-with-url-hash`\] **Default value:** `default` The entity id generator, by default uses the web page path. **output\_types** string\[\] **Default value:** `http://schema.org/WebPage` The type of the generated entities, by default `http://schema.org/WebPage`. **overwrite** boolean Whether to overwrite existing entities. **sitemap\_url** string The sitemap URL **sitemap\_url\_regex** string A regex filter to apply to discovered URLs, it only applies to URLs in sitemaps. **urls** string\[\] The URLs ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/x-ndjson * Schema * Example (from schema) **Schema** * Array \[ string * \] ``` [ "string" ] ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-sync/ --- # Start | WordLift Developer Documentation # Start POST ## /merchants/:merchantId/syncs Start ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **merchantId** int64required The Merchant's `id` ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 400 * 401 * 403 Found. * \*/\* * Schema * Example (from schema) **Schema** **created\_at** date-time The create date-time. **error\_reason** string **Possible values:** `<= 500 characters` Error that caused the synchronization to fail. **has\_errors** boolean Whether the sync encountered errors. **id** int64 The unique id. **merchant\_id** int64required The parent Merchant id. **modified\_at** date-time The last modified date-time. **overall\_products\_in\_kg** int64 The overall amount of products available on KG after syncing. **products\_created** int32 The number of created products **products\_deleted** int32 The number of deleted products **products\_errored** int32 The number of errored products **products\_skipped** int32 The number of skipped products **products\_total** int32 The total number of processed products, including the skipped and errored. **products\_unchanged** int32 The number of products that haven't changed and therefore haven't been synced again **products\_updated** int32 The number of update products **started\_at** date-time The started date-time. **stopped\_at** date-time The stopped date-time. **synced\_products\_in\_kg** int64 The number of products synced by this process available in KG. **synced\_products\_in\_kg\_before\_cleanup** int64 ``` { "created_at": "2024-07-29T15:51:28.071Z", "error_reason": "string", "has_errors": true, "id": 0, "merchant_id": 0, "modified_at": "2024-07-29T15:51:28.071Z", "overall_products_in_kg": 0, "products_created": 0, "products_deleted": 0, "products_errored": 0, "products_skipped": 0, "products_total": 0, "products_unchanged": 0, "products_updated": 0, "started_at": "2024-07-29T15:51:28.071Z", "stopped_at": "2024-07-29T15:51:28.071Z", "synced_products_in_kg": 0, "synced_products_in_kg_before_cleanup": 0 } ``` Another merchant sync is in already in progress. There can only be one sync running at a time. * application/json * Schema * Example (from schema) **Schema** **detail** string **instance** uri **properties** object **status** int32 **title** string **type** uri ``` { "detail": "string", "instance": "string", "properties": {}, "status": 0, "title": "string", "type": "string" } ``` Authentication Failure Authorization Failure --- --- url: https://docs.wordlift.io/api/manager/create-url-inspection/ --- # Create | WordLift Developer Documentation # Create POST ## /gsc/url-inspections Inspect a URL using the Google Search Console connected to the authenticated account. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **url** stringrequired The URL to analyze. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 301 Success * application/json * Schema **Schema** string Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/create-vector-search-question/ --- # Create | WordLift Developer Documentation # Create POST ## /vector-search/questions-collection Create ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **language** string The desired language of the answer. **questions** string\[\]required The list of questions. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **answer** string **question** string * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "answer": "string", "question": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/create-web-page-imports/ --- # Create | WordLift Developer Documentation # Create POST ## /web-page-imports Create a Web Page Import ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **embedding** object A request to generate the embeddings. **model** string **Default value:** `nomic-ai/nomic-embed-text-v1` The model used to generate the embeddings. **properties** string\[\] The list of properties to use to generate the embeddings. **id** string The Web Page id (or iri) in Graph when available. **id\_generator** string **Possible values:** \[`default`, `headline-with-url-hash`\] **Default value:** `default` The entity id generator, by default uses the web page path. **output\_types** string\[\] **Default value:** `http://schema.org/WebPage` The type of the generated entities, by default `http://schema.org/WebPage`. **url** stringrequired The Web Page url to import **write\_strategy** string **Default value:** `createOrUpdateModel` The strategy used to write to the Graph: `createOrUpdateModel` (default) will replace existing entities; `patchReplaceModel` will replace the `type`, `headline`, `abstract` and `text` properties. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/json * Schema * Example (from schema) **Schema** **id** stringrequired The id/iri of the web page in the Graph. **model** stringrequired **web\_page** object required The Web Page data **abstract** string **date\_published** date **headline** string **html** string **image** string **markdown** string **text** string **types** string\[\] **url** string ``` { "id": "string", "model": "string", "web_page": { "abstract": "string", "date_published": "2024-07-29", "headline": "string", "html": "string", "image": "string", "markdown": "string", "text": "string", "types": [ "string" ], "url": "string" } } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/custom-domains/ --- # Custom Domains | WordLift Developer Documentation # Custom Domains Manage Custom Domains [๐Ÿ“„๏ธ ValidateCheck if the provided custom domain can be set for the account](/api/manager/validate/) --- --- url: https://docs.wordlift.io/api/manager/data-uri/ --- # Data URI | WordLift Developer Documentation # Data URI Data URI for a Web page URL. [๐Ÿ“„๏ธ Get the Web Data URI for a Web Page URL.The service will return a Web Data URI only for existing datasets. The Web Data URI is not guaranteed to exist (i.e. it may return 404).](/api/manager/get/) --- --- url: https://docs.wordlift.io/api/manager/delete-authorization/ --- # Delete an authorization | WordLift Developer Documentation # Delete an authorization DELETE ## /google-search-console/authorization Retrieve the authorizations of the authenticated user. ## Responses[โ€‹](#responses "Direct link to Responses") * 202 Authorization of the account authenticated is deleted. --- --- url: https://docs.wordlift.io/api/manager/delete-merchant/ --- # Delete by id | WordLift Developer Documentation # Delete by id DELETE ## /merchants/:id Delete a Merchant by its `id`. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Merchant id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Deleted Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/delete-o-auth-2-authorized-client/ --- # Delete | WordLift Developer Documentation # Delete DELETE ## /oauth2/authorized-clients/:id Delete a OAuth2 Authorized Client given its client registration id ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/delete-platform-consumption-by-id/ --- # Delete Platform Consumption by ID | WordLift Developer Documentation # Delete Platform Consumption by ID DELETE ## /platform-limit/consumptions/:id deprecated Allow admins to delete platform consumptions. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required ## Responses[โ€‹](#responses "Direct link to Responses") * 204 Done --- --- url: https://docs.wordlift.io/api/manager/delete-platform-consumption/ --- # Delete Platform Consumption | WordLift Developer Documentation # Delete Platform Consumption DELETE ## /platform-limit/consumptions/:referenceType/:referenceId/:appliesTo Allow admins to delete platform consumptions. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **referenceType** stringrequired **Possible values:** \[`SUBSCRIPTION`, `ACCOUNT`\] **referenceId** int64required **appliesTo** stringrequired ## Responses[โ€‹](#responses "Direct link to Responses") * 204 Done --- --- url: https://docs.wordlift.io/api/manager/delete-platform-limit/ --- # Delete Platform Limit | WordLift Developer Documentation # Delete Platform Limit DELETE ## /platform-limit/limits/:id Delete a platform limit. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required Platform Limit id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/duplicate/ --- # Duplicate the Google Search Console connection through accounts | WordLift Developer Documentation # Duplicate the Google Search Console connection through accounts POST ## /google-search-console/authorize/duplicate Call this API to duplicate an existing google search console connection to another accounts. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **from\_account\_key** stringrequired **to\_account\_keys** string\[\]required ## Responses[โ€‹](#responses "Direct link to Responses") * 201 * 422 The connection has been duplicated * \*/\* * Schema * Example (from schema) **Schema** object ``` {} ``` The account keys are invalid * \*/\* * Schema * Example (from schema) **Schema** object ``` {} ``` --- --- url: https://docs.wordlift.io/api/manager/embedding/ --- # Embedding | WordLift Developer Documentation # Embedding Add embeddings to a Knowledge Graphs. [๐Ÿ“„๏ธ CreateCreate the embedding for the IRIs for the provided query.](/api/manager/create-embedding/) --- --- url: https://docs.wordlift.io/api/manager/get-account/ --- # Get an account. | WordLift Developer Documentation # Get an account. GET ## /accounts/:id Get the account ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **analytics\_client\_factory** string **analyzerId** int64 **botify\_project** string **botify\_token** string **botify\_username** string **collection** string **Default value:** `entity` The collection hosing the Knowledge Graph. **country** string **datasetId** stringdeprecated **datasetUri** string **default\_data\_formatter** string **domainUri** string **google\_search\_console\_site\_url** string **id** int64 **indexed** boolean **is\_wordpress** boolean **key** string **language** string **ngDatasetId** string **resolvedUrl** string **subscriptionId** int64 **url** string **wpAdmin** string **wpJson** string **wp\_include\_exclude\_default** string ``` { "analytics_client_factory": "string", "analyzerId": 0, "botify_project": "string", "botify_token": "string", "botify_username": "string", "collection": "entity", "country": "string", "datasetUri": "string", "default_data_formatter": "string", "domainUri": "string", "google_search_console_site_url": "string", "id": 0, "indexed": true, "is_wordpress": true, "key": "string", "language": "string", "ngDatasetId": "string", "resolvedUrl": "string", "subscriptionId": 0, "url": "string", "wpAdmin": "string", "wpJson": "string", "wp_include_exclude_default": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/get-authorizations/ --- # Get the authorizations | WordLift Developer Documentation # Get the authorizations GET ## /google-search-console/authorizations Retrieve the authorizations of the authenticated user. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **account\_key** string\[\] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 The authorizations of the user * application/json * Schema * Example (from schema) **Schema** * Array \[ **access\_token\_issued\_at** date-timerequired When the access token was issued **account** stringrequired Account key **refresh\_token\_issued\_at** date-time When the refresh token was issued **status** AuthorizationStatus (string)required **Possible values:** \[`connected`\] The connections status * \] ``` [ { "access_token_issued_at": "2024-07-29T15:51:28.071Z", "account": "string", "refresh_token_issued_at": "2024-07-29T15:51:28.071Z", "status": "connected" } ] ``` --- --- url: https://docs.wordlift.io/api/manager/get-gsc-sites/ --- # Get Google Search Console sites | WordLift Developer Documentation # Get Google Search Console sites GET ## /google-search-console/sites List all of sites from the authenticated google search console in account. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **relatedSiteUrl** string Filters the list to include only site URLs that are equal to or related to the given site URL, including its parent or base URLs. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 412 List of GSC sites * application/json * Schema * Example (from schema) **Schema** * Array \[ **url** stringrequired The Website URL, it may also start with thew `sc-domain:` prefix. * \] ``` [ { "url": "string" } ] ``` Unauthorized * application/json * Schema * Example (from schema) **Schema** * Array \[ **url** stringrequired The Website URL, it may also start with thew `sc-domain:` prefix. * \] ``` [ { "url": "string" } ] ``` When the account is not connected to any Google Search Console * application/json * Schema * Example (from schema) **Schema** * Array \[ **url** stringrequired The Website URL, it may also start with thew `sc-domain:` prefix. * \] ``` [ { "url": "string" } ] ``` --- --- url: https://docs.wordlift.io/api/manager/get-link-groups/ --- # Get | WordLift Developer Documentation # Get GET ## /accounts/:id/link-groups Get Link Groups ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required Graph id ### Query Parameters **url** string\[\]required One or more URLs. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/json * Schema * Example (from schema) **Schema** **link\_groups** object\[\] * Array \[ **identifier** string **iri** string **items** object\[\] * Array \[ **id** uri The entity id, reused in the output template. **query** object required A query request. **fields** string\[\] List of extra fields to be retrieved. **filters** object\[\] A list of prefilters. * Array \[ **filters** undefined\[\] Operational filters such as AND or OR. **key** string The filter key. Key is required for the filters \[EQ, NE, GT, LT, GTE, LTE, IN, NIN\] **operator** stringrequired **Possible values:** \[`EQ`, `GT`, `LT`, `NE`, `GTE`, `LTE`, `IN`, `NIN`, `AND`, `OR`\] A query request filter operator. **value** object The filter value. oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 * MOD6 * MOD7 * MOD8 * Array \[ string * \] string * Array \[ integer * \] integer * Array \[ number * \] number * Array \[ integer * \] integer **value\_date** date-time The filter value as a date, if provided will be preferred over the `value` field. * \] **query\_embedding** double\[\] The list of embeddings, not required if `query_string` is provided. **query\_string** string The query string, not required if the `query_embeddings` are provided. Please note that the `query_string` is ignored if the `query_embeddings` are provided. **query\_uri** uri Perform a Vector Search based on similarities with an entity with the specified URI. **query\_url** url Perform a Vector Search based on similarities with an entity with the specified URL (schema:url). **similarity\_top\_k** int32 **Possible values:** `>= 1` **Default value:** `2` The similarity top K. **source\_name** string The webpage name, reused in the output template. * \] **name** string * \] ``` { "link_groups": [ { "identifier": "string", "iri": "string", "items": [ { "id": "string", "query": { "fields": [ "string" ], "filters": [ { "filters": [ null ], "key": "string", "operator": "EQ", "value": [ null ], "value_date": "2024-07-29T15:51:28.071Z" } ], "query_embedding": [ 0 ], "query_string": "string", "query_uri": "string", "query_url": "string", "similarity_top_k": 2 }, "source_name": "string" } ], "name": "string" } ] } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/get-me/ --- # Get | WordLift Developer Documentation # Get GET ## /accounts/me Get the account data for the current account identified by its key. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/vnd.wordlift.account-info.v2+json * Schema * Example (from schema) **Schema** **accountId** int64required The Account Id **country\_code** string The country code **datasetId** string The Dataset Id **datasetUri** stringrequired The dataset URI **defaultDataFormatter** string The default data formatter used by the account to format the JSON+LD of the data from the KG. **features** object A list of features enabled or disabled for the account **property name\*** boolean A list of features enabled or disabled for the account **googleSearchConsoleSiteUrl** string Google Search Console Site URL **includeExcludeDefault** string **Default value:** `include` The default setting for include/exclude URLs. **key** string The Key **language** string The language code **networks** object\[\] required A list of connected Account Information * Array \[ **accountId** int64 The Account Id **datasetId** string The Dataset Id **datasetUri** stringrequired The Dataset URI **url** string The website URL * \] **ngDatasetId** string **subscriptionId** int64required The Subscription Id **tokens** object Tokens associated with this account/graph. **property name\*** Tokens The tokens to access a service **access\_token** string The access token **refresh\_token** string The refresh token **url** string The website URL **wpAdmin** string If WordPress, the WP-ADMIN URL **wpJson** string If WordPress, the WP-JSON end-point ``` { "accountId": 0, "country_code": "string", "datasetId": "string", "datasetUri": "string", "defaultDataFormatter": "string", "features": {}, "googleSearchConsoleSiteUrl": "string", "includeExcludeDefault": "include", "key": "string", "language": "string", "networks": [ { "accountId": 0, "datasetId": "string", "datasetUri": "string", "url": "string" } ], "ngDatasetId": "string", "subscriptionId": 0, "tokens": {}, "url": "string", "wpAdmin": "string", "wpJson": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/get-merchant-sync/ --- # Get by id | WordLift Developer Documentation # Get by id GET ## /merchants/:merchantId/syncs/:id Get by id ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **merchantId** int64required The Merchant's `id` **id** int64required The Merchant Sync `id`. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. * application/json * Schema * Example (from schema) **Schema** **created\_at** date-time The create date-time. **error\_reason** string **Possible values:** `<= 500 characters` Error that caused the synchronization to fail. **has\_errors** boolean Whether the sync encountered errors. **id** int64 The unique id. **merchant\_id** int64required The parent Merchant id. **modified\_at** date-time The last modified date-time. **overall\_products\_in\_kg** int64 The overall amount of products available on KG after syncing. **products\_created** int32 The number of created products **products\_deleted** int32 The number of deleted products **products\_errored** int32 The number of errored products **products\_skipped** int32 The number of skipped products **products\_total** int32 The total number of processed products, including the skipped and errored. **products\_unchanged** int32 The number of products that haven't changed and therefore haven't been synced again **products\_updated** int32 The number of update products **started\_at** date-time The started date-time. **stopped\_at** date-time The stopped date-time. **synced\_products\_in\_kg** int64 The number of products synced by this process available in KG. **synced\_products\_in\_kg\_before\_cleanup** int64 ``` { "created_at": "2024-07-29T15:51:28.071Z", "error_reason": "string", "has_errors": true, "id": 0, "merchant_id": 0, "modified_at": "2024-07-29T15:51:28.071Z", "overall_products_in_kg": 0, "products_created": 0, "products_deleted": 0, "products_errored": 0, "products_skipped": 0, "products_total": 0, "products_unchanged": 0, "products_updated": 0, "started_at": "2024-07-29T15:51:28.071Z", "stopped_at": "2024-07-29T15:51:28.071Z", "synced_products_in_kg": 0, "synced_products_in_kg_before_cleanup": 0 } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/get-merchant/ --- # Get by id | WordLift Developer Documentation # Get by id GET ## /merchants/:id Get a Merchant by its `id`. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Merchant id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/json * Schema * Example (from schema) **Schema** **access\_token** stringrequired The Google merchant access token **account\_id** int64 The account id **automatic\_synchronization** boolean Whether the Merchant data will be synchronized automatically **created\_at** date-time The create date-time **custom\_seller** string Custom seller entity - if applicable. **dataset\_domain** stringdeprecated The custom domain (for example data.example.org) **dataset\_name** stringdeprecated The dataset path (for example /data) **default\_products\_filter\_action** stringrequired **Possible values:** \[`PROCESS`, `IGNORE`\] **Default value:** `PROCESS` Default Products filter action to apply during sync process. **deleted** booleanrequired True if the merchant has been deleted **deleted\_at** date-time The delete date-time **google\_merchant\_id** int64required The Google Merchant id **id** int64 The unique id **ignore\_brand** boolean Whether to ignore the `brand` property during validation **ignore\_image** boolean Whether to ignore the `image` property during validation **modified\_at** date-time The last modified date-time **publisher\_name** stringrequired The publisher name (shows in schema publisher) **refresh\_token** stringrequired The Google merchant refresh token **url** string The website URL **url\_strategy** string **Possible values:** `<= 50 characters`, \[`canonicalLinkAndLink`, `canonicalLinkOtherwiseLink`\] **Default value:** `canonicalLinkAndLink` Which strategy to use to write the url schema. **writer\_service** string How to write the merchant data to the graph, if unsure, do not set anything (by default `wordpressMerchantWriter`). ``` { "access_token": "string", "account_id": 0, "automatic_synchronization": true, "created_at": "2024-07-29T15:51:28.071Z", "custom_seller": "string", "default_products_filter_action": "PROCESS", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "google_merchant_id": 0, "id": 0, "ignore_brand": true, "ignore_image": true, "modified_at": "2024-07-29T15:51:28.071Z", "publisher_name": "string", "refresh_token": "string", "url": "string", "url_strategy": "canonicalLinkAndLink", "writer_service": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/get-my-platform-consumption/ --- # Get the Platform Consumption | WordLift Developer Documentation # Get the Platform Consumption GET ## /platform-limit/consumptions/me Get the Platform Consumption for the authenticated user. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **applies\_to** stringrequired **include\_subscription** boolean **include\_limit** boolean ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **account\_limits** int32 **applies\_to** stringrequired **block** boolean **consumption** int32 **id** int64 **limits** int32 **reference\_id** int64required **reference\_type** stringrequired **Possible values:** \[`SUBSCRIPTION`, `ACCOUNT`\] **remaining** int32 **resets\_in\_seconds** int64 **subscription\_limits** int32 * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "account_limits": 0, "applies_to": "string", "block": true, "consumption": 0, "id": 0, "limits": 0, "reference_id": 0, "reference_type": "SUBSCRIPTION", "remaining": 0, "resets_in_seconds": 0, "subscription_limits": 0 } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/get-my-stats/ --- # Get my Account statistics | WordLift Developer Documentation # Get my Account statistics GET ## /accounts/me/stats Get the Account statistics, such the number of products, product groups and urls in the KG. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **account\_id** int64required The account ID. **entities** int64required The number of entities. **entities\_with\_url** int64required The number of entities with URL. **product\_groups** int64required The number of product groups in the KG. **products** int64required The number of products in the KG. ``` { "account_id": 0, "entities": 0, "entities_with_url": 0, "product_groups": 0, "products": 0 } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/get-o-auth-2-authorized-client/ --- # Get | WordLift Developer Documentation # Get GET ## /oauth2/authorized-clients/:id Get a OAuth2 Authorized Client given its client registration id ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **access\_token\_expires\_at** date-time **access\_token\_issued\_at** date-time **access\_token\_scopes** string **access\_token\_type** string **access\_token\_value** string **client\_registration\_id** string **id** int64 **principal\_name** string **refresh\_token\_issued\_at** date-time **refresh\_token\_value** string ``` { "access_token_expires_at": "2024-07-29T15:51:28.071Z", "access_token_issued_at": "2024-07-29T15:51:28.071Z", "access_token_scopes": "string", "access_token_type": "string", "access_token_value": "string", "client_registration_id": "string", "id": 0, "principal_name": "string", "refresh_token_issued_at": "2024-07-29T15:51:28.071Z", "refresh_token_value": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/get-platform-limit/ --- # Get Platform Limit | WordLift Developer Documentation # Get Platform Limit GET ## /platform-limit/limits/:id Get a platform limit. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required Platform Limit id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **applies\_to** stringrequired **based\_on** stringrequired **Possible values:** \[`SKU`\] **based\_on\_value** stringrequired **created\_at** date-time The create date-time. **description** string **id** int64 **limits** int32required **Possible values:** `>= 1` **modified\_at** date-time The last modified date-time. **scope** stringrequired **Possible values:** \[`ACCOUNT`, `SUBSCRIPTION`\] ``` { "applies_to": "string", "based_on": "SKU", "based_on_value": "string", "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "id": 0, "limits": 0, "modified_at": "2024-07-29T15:51:28.071Z", "scope": "ACCOUNT" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/get-token/ --- # Get | WordLift Developer Documentation # Get GET ## /tokens Get a token ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **registration\_id** stringrequired The registration id **Example:** google-search-console ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/json * Schema * Example (from schema) **Schema** **access\_token** string The access token **access\_token\_expires\_at** date-time The access token expiration **refresh\_token** string The refresh token ``` { "access_token": "string", "access_token_expires_at": "2024-07-29T15:51:28.071Z", "refresh_token": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/get-web-page/ --- # Get | WordLift Developer Documentation # Get GET ## /web-pages Get extracted web page content ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **url** stringrequired Url to extract ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Success * application/json * Schema * Example (from schema) **Schema** **abstract** string **date\_published** date **headline** string **html** string **image** string **markdown** string **text** string **types** string\[\] **url** string ``` { "abstract": "string", "date_published": "2024-07-29", "headline": "string", "html": "string", "image": "string", "markdown": "string", "text": "string", "types": [ "string" ], "url": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/get/ --- # Get the Web Data URI for a Web Page URL. | WordLift Developer Documentation # Get the Web Data URI for a Web Page URL. GET ## /data-uri The service will return a Web Data URI only for existing datasets. The Web Data URI is not guaranteed to exist (i.e. it may return 404). ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **u** urlrequired The Web Page URL. ## Responses[โ€‹](#responses "Direct link to Responses") * 303 See Other **Response Headers** * **Location** any ${api.data-uri-controller.get.headers.location.description} --- --- url: https://docs.wordlift.io/api/manager/google-merchants/ --- # Google Merchants | WordLift Developer Documentation # Google Merchants Manage Google Merchants [๐Ÿ“„๏ธ ListList the Google Merchants](/api/manager/list-google-merchants/) --- --- url: https://docs.wordlift.io/api/manager/google-search-console-o-auth-2/ --- # Google Search Console OAuth2 | WordLift Developer Documentation # Google Search Console OAuth2 Configure Google Search Console OAuth2 authorized access codes. [๐Ÿ“„๏ธ Delete an authorizationRetrieve the authorizations of the authenticated user.](/api/manager/delete-authorization/) [๐Ÿ“„๏ธ Get the authorizationsRetrieve the authorizations of the authenticated user.](/api/manager/get-authorizations/) [๐Ÿ“„๏ธ Duplicate the Google Search Console connection through accountsCall this API to duplicate an existing google search console connection to another accounts.](/api/manager/duplicate/) [๐Ÿ“„๏ธ Login to the Google Search Console API clientCall this API to go to the login page of the Google Search Console.](/api/manager/login/) [๐Ÿ“„๏ธ Get an Access CodeCall this API to have the Platform receive an Authentication Token to access the Analytics data via Google Search Console.](/api/manager/create-auth-code-exchange/) [๐Ÿ“„๏ธ Create an Authorization URICall this API to get an authorization URI needed to interactively get an authorization token. Then call the \`exchangeAuthCode\` to exchange it with an authorization token.](/api/manager/create-authorize-uri/) --- --- url: https://docs.wordlift.io/api/manager/google-search-console-searches/ --- # Google Search Console Searches | WordLift Developer Documentation # Google Search Console Searches Retrieve analytics data from Google Search Console [๐Ÿ“„๏ธ List Website Search dataList the Website Search performance data](/api/manager/list-website-search-1/) --- --- url: https://docs.wordlift.io/api/manager/google-search-console-websites/ --- # Google Search Console Websites | WordLift Developer Documentation # Google Search Console Websites Get a list of all properties from google search console related to an account. [๐Ÿ“„๏ธ Get Google Search Console sitesList all of sites from the authenticated google search console in account.](/api/manager/get-gsc-sites/) --- --- url: https://docs.wordlift.io/api/manager/google-search-console/ --- # Google Search Console | WordLift Developer Documentation # Google Search Console Google Search Console methods. [๐Ÿ“„๏ธ List Website Search dataList the Website Search performance data](/api/manager/list-website-search/) [๐Ÿ“„๏ธ ListList the Websites](/api/manager/list-websites/) [๐Ÿ“„๏ธ CreateInspect a URL using the Google Search Console connected to the authenticated account.](/api/manager/create-url-inspection/) --- --- url: https://docs.wordlift.io/api/manager/include-excludes/ --- # Include Excludes | WordLift Developer Documentation # Include Excludes The list of included or excluded URLs [๐Ÿ“„๏ธ ListList the include and exclude configurations.](/api/manager/list-include-excludes/) [๐Ÿ“„๏ธ UpdateUpdate the include and exclude configurations.](/api/manager/update-include-excludes/) --- --- url: https://docs.wordlift.io/api/manager/internal-links/ --- # Internal Links | WordLift Developer Documentation # Internal Links Create Internal Links. [๐Ÿ“„๏ธ CreateCreate Internal Links.](/api/manager/create-internal-link/) [๐Ÿ“„๏ธ SuggestCreate an Internal Links suggestion.](/api/manager/create-internal-link-suggestion/) --- --- url: https://docs.wordlift.io/api/manager/link-groups/ --- # Link Groups | WordLift Developer Documentation # Link Groups Link Groups [๐Ÿ“„๏ธ GetGet Link Groups](/api/manager/get-link-groups/) --- --- url: https://docs.wordlift.io/api/manager/list-accounts/ --- # List | WordLift Developer Documentation # List GET ## /accounts List the accounts ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **limit** int32 **Default value:** `10` **can\_content\_generation** boolean Filter accounts that can or cannot do Content Generation **include\_entity\_count** boolean Add entity count data **include\_all\_accounts** boolean Include all the accounts the user has access to **include\_subscription** boolean Include the subscription data **url** string The URL **ng\_dataset\_id** string The dataset id ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/vnd.wordlift.accounts+json;version=1 * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **collection** string **Default value:** `entity` The collection hosting the Knowledge Graph. **country** string **diagnostic\_plugins** object\[\] * Array \[ **account\_id** int64 The account id. **active** boolean Whether the plugin is active. **created\_at** date-time The create date-time **id** int64 The record id. **name** string The plugin name. **version** string The plugin version. * \] **domain\_uri** string **google\_search\_console\_site\_url** string **id** int64 **is\_wordpress** boolean **key** string **language** string **ng\_dataset\_id** string **package\_type** string **subscription** object **email** string **first\_name** string **last\_name** string **order\_id** int64 **sku** string **subscription\_id** int64 **total\_entities** int64 **total\_entities\_with\_schema\_url** int64 **url** string **user\_id** int64 **wp\_admin** string **wp\_include\_exclude\_default** string **wp\_json** string * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "collection": "entity", "country": "string", "diagnostic_plugins": [ { "account_id": 0, "active": true, "created_at": "2024-07-29T15:51:28.071Z", "id": 0, "name": "string", "version": "string" } ], "domain_uri": "string", "google_search_console_site_url": "string", "id": 0, "is_wordpress": true, "key": "string", "language": "string", "ng_dataset_id": "string", "package_type": "string", "subscription": { "email": "string", "first_name": "string", "last_name": "string", "order_id": 0, "sku": "string" }, "subscription_id": 0, "total_entities": 0, "total_entities_with_schema_url": 0, "url": "string", "user_id": 0, "wp_admin": "string", "wp_include_exclude_default": "string", "wp_json": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-analytics-syncs/ --- # List | WordLift Developer Documentation # List GET ## /analytics-syncs Retrieve the analytics syncs ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **account\_ids** int64\[\]required **sort** string **Possible values:** \[`MOST_RECENT`\] **group\_by** string **Possible values:** \[`ACCOUNT_ID`\] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 400 OK * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64 The Account identifier **created\_at** date-time The creation date-time. **id** uuid The resource identifier **queries\_retrieved** int64 Total number of queries retrieved by the analytics provider. **retrievable\_urls** int32 Number of URLs processable by the analytics provider based on the Account URL. **started\_at** date-time The started date-time. **status** string **Possible values:** \[`SCHEDULED`, `SYNCING`, `COMPLETED`, `ERROR`, `CANCELLED`\] Status of the sync process. **stopped\_at** date-time The stopped date-time. **total\_entities\_updated** int32 Number of unique entities updated with analytics by this sync. **urls\_in\_dataset** int32 Number of total URLs retrieved from dataset entities * \] ``` [ { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "queries_retrieved": 0, "retrievable_urls": 0, "started_at": "2024-07-29T15:51:28.071Z", "status": "SCHEDULED", "stopped_at": "2024-07-29T15:51:28.071Z", "total_entities_updated": 0, "urls_in_dataset": 0 } ] ``` Bad Request * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64 The Account identifier **created\_at** date-time The creation date-time. **id** uuid The resource identifier **queries\_retrieved** int64 Total number of queries retrieved by the analytics provider. **retrievable\_urls** int32 Number of URLs processable by the analytics provider based on the Account URL. **started\_at** date-time The started date-time. **status** string **Possible values:** \[`SCHEDULED`, `SYNCING`, `COMPLETED`, `ERROR`, `CANCELLED`\] Status of the sync process. **stopped\_at** date-time The stopped date-time. **total\_entities\_updated** int32 Number of unique entities updated with analytics by this sync. **urls\_in\_dataset** int32 Number of total URLs retrieved from dataset entities * \] ``` [ { "account_id": 0, "created_at": "2024-07-29T15:51:28.071Z", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "queries_retrieved": 0, "retrievable_urls": 0, "started_at": "2024-07-29T15:51:28.071Z", "status": "SCHEDULED", "stopped_at": "2024-07-29T15:51:28.071Z", "total_entities_updated": 0, "urls_in_dataset": 0 } ] ``` --- --- url: https://docs.wordlift.io/api/manager/list-configurations/ --- # List | WordLift Developer Documentation # List GET ## /addon/configurations List the Add-ons configurations ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **token** string The access token **key** string The key **limit** integer **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **can\_do\_content\_expansion** boolean Whether this Add-on can do content expansion **can\_import\_to\_wordpress** boolean Whether this Add-on can import to WordPress. **key** string A key **wp\_admin** string The wp-admin endpoint for a website using the key. **wp\_json** string The wp-json endpoint for a website using the key. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "can_do_content_expansion": true, "can_import_to_wordpress": true, "key": "string", "wp_admin": "string", "wp_json": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-google-merchants/ --- # List | WordLift Developer Documentation # List GET ## /ext/google/shopping/merchants List the Google Merchants ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **google\_access\_token** stringrequired ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **google\_merchant\_id** int64required The Google Merchant id **website\_url** stringrequired The Google Merchant Website URL * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "google_merchant_id": 0, "website_url": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-include-excludes/ --- # List | WordLift Developer Documentation # List GET ## /accounts/me/include-excludes List the include and exclude configurations. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64required Account unique identifier **flag** stringrequired **Possible values:** \[`INCLUDE`, `EXCLUDE`\] A flag which determines whether the URL is `INCLUDE` or `EXCLUDE`. **id** int64 Unique identifier **url** stringrequired The URL * \] ``` [ { "account_id": 0, "flag": "INCLUDE", "id": 0, "url": "string" } ] ``` Unauthorized * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64required Account unique identifier **flag** stringrequired **Possible values:** \[`INCLUDE`, `EXCLUDE`\] A flag which determines whether the URL is `INCLUDE` or `EXCLUDE`. **id** int64 Unique identifier **url** stringrequired The URL * \] ``` [ { "account_id": 0, "flag": "INCLUDE", "id": 0, "url": "string" } ] ``` Not Found * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64required Account unique identifier **flag** stringrequired **Possible values:** \[`INCLUDE`, `EXCLUDE`\] A flag which determines whether the URL is `INCLUDE` or `EXCLUDE`. **id** int64 Unique identifier **url** stringrequired The URL * \] ``` [ { "account_id": 0, "flag": "INCLUDE", "id": 0, "url": "string" } ] ``` --- --- url: https://docs.wordlift.io/api/manager/list-merchant-syncs/ --- # List | WordLift Developer Documentation # List GET ## /merchants/:merchantId/syncs List the Merchants Syncs ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **merchantId** int64required The Merchant's `id` ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results **sort** string **Default value:** `+id` The sorting, `+id` or `-id` ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **created\_at** date-time The create date-time. **error\_reason** string **Possible values:** `<= 500 characters` Error that caused the synchronization to fail. **has\_errors** boolean Whether the sync encountered errors. **id** int64 The unique id. **merchant\_id** int64required The parent Merchant id. **modified\_at** date-time The last modified date-time. **overall\_products\_in\_kg** int64 The overall amount of products available on KG after syncing. **products\_created** int32 The number of created products **products\_deleted** int32 The number of deleted products **products\_errored** int32 The number of errored products **products\_skipped** int32 The number of skipped products **products\_total** int32 The total number of processed products, including the skipped and errored. **products\_unchanged** int32 The number of products that haven't changed and therefore haven't been synced again **products\_updated** int32 The number of update products **started\_at** date-time The started date-time. **stopped\_at** date-time The stopped date-time. **synced\_products\_in\_kg** int64 The number of products synced by this process available in KG. **synced\_products\_in\_kg\_before\_cleanup** int64 * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "created_at": "2024-07-29T15:51:28.071Z", "error_reason": "string", "has_errors": true, "id": 0, "merchant_id": 0, "modified_at": "2024-07-29T15:51:28.071Z", "overall_products_in_kg": 0, "products_created": 0, "products_deleted": 0, "products_errored": 0, "products_skipped": 0, "products_total": 0, "products_unchanged": 0, "products_updated": 0, "started_at": "2024-07-29T15:51:28.071Z", "stopped_at": "2024-07-29T15:51:28.071Z", "synced_products_in_kg": 0, "synced_products_in_kg_before_cleanup": 0 } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-merchants/ --- # List | WordLift Developer Documentation # List GET ## /merchants List the Merchants, optionally filtering by the `deleted` flag ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results **deleted** boolean Filter by the `deleted` flag ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **access\_token** stringrequired The Google merchant access token **account\_id** int64 The account id **automatic\_synchronization** boolean Whether the Merchant data will be synchronized automatically **created\_at** date-time The create date-time **custom\_seller** string Custom seller entity - if applicable. **dataset\_domain** stringdeprecated The custom domain (for example data.example.org) **dataset\_name** stringdeprecated The dataset path (for example /data) **default\_products\_filter\_action** stringrequired **Possible values:** \[`PROCESS`, `IGNORE`\] **Default value:** `PROCESS` Default Products filter action to apply during sync process. **deleted** booleanrequired True if the merchant has been deleted **deleted\_at** date-time The delete date-time **google\_merchant\_id** int64required The Google Merchant id **id** int64 The unique id **ignore\_brand** boolean Whether to ignore the `brand` property during validation **ignore\_image** boolean Whether to ignore the `image` property during validation **modified\_at** date-time The last modified date-time **publisher\_name** stringrequired The publisher name (shows in schema publisher) **refresh\_token** stringrequired The Google merchant refresh token **sid** string **sync\_has\_errors** boolean **sync\_id** int64 **sync\_products\_created** int32 **sync\_products\_deleted** int32 **sync\_products\_errored** int32 **sync\_products\_skipped** int32 **sync\_products\_total** int32 **sync\_products\_unchanged** int32 **sync\_products\_updated** int32 **sync\_started\_at** date-time The started date-time. **sync\_stopped\_at** date-time The stopped date-time. **url** string The website URL **url\_strategy** string **Possible values:** `<= 50 characters`, \[`canonicalLinkAndLink`, `canonicalLinkOtherwiseLink`\] **Default value:** `canonicalLinkAndLink` Which strategy to use to write the url schema. **writer\_service** string How to write the merchant data to the graph, if unsure, do not set anything (by default `wordpressMerchantWriter`). * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "access_token": "string", "account_id": 0, "automatic_synchronization": true, "created_at": "2024-07-29T15:51:28.071Z", "custom_seller": "string", "default_products_filter_action": "PROCESS", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "google_merchant_id": 0, "id": 0, "ignore_brand": true, "ignore_image": true, "modified_at": "2024-07-29T15:51:28.071Z", "publisher_name": "string", "refresh_token": "string", "sid": "string", "sync_has_errors": true, "sync_id": 0, "sync_products_created": 0, "sync_products_deleted": 0, "sync_products_errored": 0, "sync_products_skipped": 0, "sync_products_total": 0, "sync_products_unchanged": 0, "sync_products_updated": 0, "sync_started_at": "2024-07-29T15:51:28.071Z", "sync_stopped_at": "2024-07-29T15:51:28.071Z", "url": "string", "url_strategy": "canonicalLinkAndLink", "writer_service": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-o-auth-2-authorized-clients/ --- # List | WordLift Developer Documentation # List GET ## /oauth2/authorized-clients List OAuth2 Authorized Clients ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **limit** integer **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **access\_token\_expires\_at** date-time **access\_token\_issued\_at** date-time **access\_token\_scopes** string **access\_token\_type** string **access\_token\_value** string **client\_registration\_id** string **id** int64 **principal\_name** string **refresh\_token\_issued\_at** date-time **refresh\_token\_value** string * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "access_token_expires_at": "2024-07-29T15:51:28.071Z", "access_token_issued_at": "2024-07-29T15:51:28.071Z", "access_token_scopes": "string", "access_token_type": "string", "access_token_value": "string", "client_registration_id": "string", "id": 0, "principal_name": "string", "refresh_token_issued_at": "2024-07-29T15:51:28.071Z", "refresh_token_value": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-platform-limits/ --- # List Platform Limits | WordLift Developer Documentation # List Platform Limits GET ## /platform-limit/limits List the platform limits. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **based\_on\_in** string\[\] **Possible values:** \[`SKU`\] The type of based on, e.g. `sku`. **based\_on\_value\_in** string\[\] The based on values. **applies\_to\_in** string\[\] The applies to (e.g. API name). **scope\_in** string\[\] **Possible values:** \[`ACCOUNT`, `SUBSCRIPTION`\] The scope. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **applies\_to** stringrequired **based\_on** stringrequired **Possible values:** \[`SKU`\] **based\_on\_value** stringrequired **created\_at** date-time The create date-time. **description** string **id** int64 **limits** int32required **Possible values:** `>= 1` **modified\_at** date-time The last modified date-time. **scope** stringrequired **Possible values:** \[`ACCOUNT`, `SUBSCRIPTION`\] * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "applies_to": "string", "based_on": "SKU", "based_on_value": "string", "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "id": 0, "limits": 0, "modified_at": "2024-07-29T15:51:28.071Z", "scope": "ACCOUNT" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/list-website-search-1/ --- # List Website Search data | WordLift Developer Documentation # List Website Search data GET ## /accounts/me/google/searches List the Website Search performance data ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **cursor** string The cursor **since** stringrequired The start date, inclusive, in yyyy-MM-dd format. **until** stringrequired The end date, inclusive, in yyyy-MM-dd format. **dimensions** string\[\]required The dimensions, e.g. `query`, `page`. Must repeat for each dimension. **data\_state** string **Possible values:** \[`all`, `final`\] If "all" (case-insensitive), data will include fresh data. If "final" (case-insensitive) or if this parameter is omitted, the returned data will include only finalized data. **limit** integer **Possible values:** `<= 25000` **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **clicks** int32required Number of clicks. **ctr** doublerequired CTR. **id** int64required The id: it's now a unique id, but a row index. **impressions** int32required Number of impressions. **keys** string\[\]required The keys for the current data, matching the provided `dimensions` in the query. **position** doublerequired Position. **score** doublerequired A score to spot traffic opportunities, from 0.0 to 1.0 (the higher the better). The score is based on the traffic data. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "clicks": 0, "ctr": 0, "id": 0, "impressions": 0, "keys": [ "string" ], "position": 0, "score": 0 } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-website-search/ --- # List Website Search data | WordLift Developer Documentation # List Website Search data GET ## /ext/google/searchconsole/searches List the Website Search performance data ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **website** stringrequired The website URL **cursor** string The cursor **since** stringrequired The start date, inclusive, in yyyy-MM-dd format. **until** stringrequired The end date, inclusive, in yyyy-MM-dd format. **dimensions** string\[\]required The dimensions, e.g. `query`, `page`. Must repeat for each dimension. **google\_access\_token** stringrequired The Google access token, must have access to the Google Search Console scope **limit** integer **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **clicks** int32required Number of clicks. **ctr** doublerequired CTR. **id** int64required The id: it's now a unique id, but a row index. **impressions** int32required Number of impressions. **keys** string\[\]required The keys for the current data, matching the provided `dimensions` in the query. **position** doublerequired Position. **score** doublerequired A score to spot traffic opportunities, from 0.0 to 1.0 (the higher the better). The score is based on the traffic data. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "clicks": 0, "ctr": 0, "id": 0, "impressions": 0, "keys": [ "string" ], "position": 0, "score": 0 } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/list-websites/ --- # List | WordLift Developer Documentation # List GET ## /ext/google/searchconsole/websites List the Websites ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **google\_access\_token** stringrequired The Google access token, must have access to the Google Search Console scope **limit** integer **Default value:** `10` The maximum number of results ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **first** stringnullablerequired The link to the first page. **items** object\[\] required An array of objects. * Array \[ **url** stringrequired The Website URL, it may also start with thew `sc-domain:` prefix. * \] **last** stringnullablerequired The link to the last page. **next** stringnullablerequired The link to the next page or `null` if there's no page. **prev** stringnullablerequired The link to the previous page or `null` if there's no page. **self** stringnullablerequired The link to the current page. ``` { "first": "string", "items": [ { "url": "string" } ], "last": "string", "next": "string", "prev": "string", "self": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/login/ --- # Login to the Google Search Console API client | WordLift Developer Documentation # Login to the Google Search Console API client GET ## /google-search-console/authorize/init Call this API to go to the login page of the Google Search Console. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **accountKey** stringrequired The account key **redirectUri** urirequired The redirect URI to redirect to after the login **state** string The state to maintain after authorize. ## Responses[โ€‹](#responses "Direct link to Responses") * 307 Redirect to redirectUri value **Response Headers** * **Location** any Redirect to google login page --- --- url: https://docs.wordlift.io/api/manager/manager/ --- # Manager | WordLift Developer Documentation Version: 1.0 # Manager Subscription management and related services. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey * HTTP: Basic Auth * OAuth 2.0: OAuth2 `Key {your key}` | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | `Basic {encoded username:password}` | Security Scheme Type: | http | | -------------------------- | ----- | | HTTP Authorization Scheme: | basic | | Security Scheme Type: | oauth2 | | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | OAuth Flow (authorizationCode): | Token URL: Authorization URL: Scopes:basic: basic scope | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/manager/merchant-syncs/ --- # Merchant Syncs | WordLift Developer Documentation # Merchant Syncs Synchronize Products from the Merchant Feed [๐Ÿ“„๏ธ ListList the Merchants Syncs](/api/manager/list-merchant-syncs/) [๐Ÿ“„๏ธ StartStart](/api/manager/create-sync/) [๐Ÿ“„๏ธ Get by idGet by id](/api/manager/get-merchant-sync/) --- --- url: https://docs.wordlift.io/api/manager/merchants/ --- # Merchants | WordLift Developer Documentation # Merchants Manage Merchants [๐Ÿ“„๏ธ ListList the Merchants, optionally filtering by the \`deleted\` flag](/api/manager/list-merchants/) [๐Ÿ“„๏ธ CreateCreate a Merchant](/api/manager/create-merchant/) [๐Ÿ“„๏ธ Delete by idDelete a Merchant by its \`id\`.](/api/manager/delete-merchant/) [๐Ÿ“„๏ธ Get by idGet a Merchant by its \`id\`.](/api/manager/get-merchant/) [๐Ÿ“„๏ธ UpdateUpdate a Merchant](/api/manager/update-merchant/) --- --- url: https://docs.wordlift.io/api/manager/o-auth-2-authorized-clients/ --- # OAuth2 Authorized Clients | WordLift Developer Documentation # OAuth2 Authorized Clients Manage OAuth2 Authorized Clients [๐Ÿ“„๏ธ ListList OAuth2 Authorized Clients](/api/manager/list-o-auth-2-authorized-clients/) [๐Ÿ“„๏ธ CreateCreate a OAuth2 Authorized Client](/api/manager/create-o-auth-2-authorized-client/) [๐Ÿ“„๏ธ DeleteDelete a OAuth2 Authorized Client given its client registration id](/api/manager/delete-o-auth-2-authorized-client/) [๐Ÿ“„๏ธ GetGet a OAuth2 Authorized Client given its client registration id](/api/manager/get-o-auth-2-authorized-client/) [๐Ÿ“„๏ธ UpdateUpdate a OAuth2 Authorized Client given its client registration id](/api/manager/update-o-auth-2-authorized-client/) --- --- url: https://docs.wordlift.io/api/manager/patch-account/ --- # Patch an account. | WordLift Developer Documentation # Patch an account. PATCH ## /accounts/:id Patch an account. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required * application/json-patch+json ### Body **required** object ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **analytics\_client\_factory** string **analyzerId** int64 **botify\_project** string **botify\_token** string **botify\_username** string **collection** string **Default value:** `entity` The collection hosing the Knowledge Graph. **country** string **datasetId** stringdeprecated **datasetUri** string **default\_data\_formatter** string **domainUri** string **google\_search\_console\_site\_url** string **id** int64 **indexed** boolean **is\_wordpress** boolean **key** string **language** string **ngDatasetId** string **resolvedUrl** string **subscriptionId** int64 **url** string **wpAdmin** string **wpJson** string **wp\_include\_exclude\_default** string ``` { "analytics_client_factory": "string", "analyzerId": 0, "botify_project": "string", "botify_token": "string", "botify_username": "string", "collection": "entity", "country": "string", "datasetUri": "string", "default_data_formatter": "string", "domainUri": "string", "google_search_console_site_url": "string", "id": 0, "indexed": true, "is_wordpress": true, "key": "string", "language": "string", "ngDatasetId": "string", "resolvedUrl": "string", "subscriptionId": 0, "url": "string", "wpAdmin": "string", "wpJson": "string", "wp_include_exclude_default": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/platform-consumptions/ --- # Platform Consumptions | WordLift Developer Documentation # Platform Consumptions Manage Platform Consumptions [๐Ÿ“„๏ธ Get the Platform ConsumptionGet the Platform Consumption for the authenticated user.](/api/manager/get-my-platform-consumption/) [๐Ÿ“„๏ธ Create or update the Platform ConsumptionCreate or update the Platform Consumption for the authenticated user.](/api/manager/create-or-update-my-platform-consumption/) [๐Ÿ“„๏ธ Delete Platform Consumption by IDAllow admins to delete platform consumptions.](/api/manager/delete-platform-consumption-by-id/) [๐Ÿ“„๏ธ Delete Platform ConsumptionAllow admins to delete platform consumptions.](/api/manager/delete-platform-consumption/) --- --- url: https://docs.wordlift.io/api/manager/platform-limits/ --- # Platform Limits | WordLift Developer Documentation # Platform Limits Manage Platform Limits [๐Ÿ“„๏ธ List Platform LimitsList the platform limits.](/api/manager/list-platform-limits/) [๐Ÿ“„๏ธ Create Platform LimitCreate a platform limit.](/api/manager/create-platform-limit/) [๐Ÿ“„๏ธ Delete Platform LimitDelete a platform limit.](/api/manager/delete-platform-limit/) [๐Ÿ“„๏ธ Get Platform LimitGet a platform limit.](/api/manager/get-platform-limit/) [๐Ÿ“„๏ธ Update Platform LimitUpdate a platform limit.](/api/manager/update-platform-limit/) --- --- url: https://docs.wordlift.io/api/manager/plugin-diagnostics/ --- # Plugin Diagnostics | WordLift Developer Documentation # Plugin Diagnostics Update Plugin Diagnostics data for WordPress clients. [๐Ÿ“„๏ธ UpdateReplace the list of the plugins for the current account with the one provided by the client](/api/manager/update-diagnostic-plugin-collection/) --- --- url: https://docs.wordlift.io/api/manager/redeem-code/ --- # Redeem the provided code and get a key | WordLift Developer Documentation # Redeem the provided code and get a key POST ## /redeem-codes Redeem the provided code and get a key ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **redeem\_code** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 404 * 409 * 500 Found. * application/json * Schema * Example (from schema) **Schema** **key** string ``` { "key": "string" } ``` Not Found. * application/problem+json * Schema * Example (from schema) **Schema** **detail** string **instance** uri **properties** object **status** int32 **title** string **type** uri ``` { "detail": "string", "instance": "string", "properties": {}, "status": 0, "title": "string", "type": "string" } ``` Code already redeemed. * application/problem+json * Schema * Example (from schema) **Schema** **detail** string **instance** uri **properties** object **status** int32 **title** string **type** uri ``` { "detail": "string", "instance": "string", "properties": {}, "status": 0, "title": "string", "type": "string" } ``` Configuration error. * application/problem+json * Schema * Example (from schema) **Schema** **detail** string **instance** uri **properties** object **status** int32 **title** string **type** uri ``` { "detail": "string", "instance": "string", "properties": {}, "status": 0, "title": "string", "type": "string" } ``` --- --- url: https://docs.wordlift.io/api/manager/redeem-codes/ --- # Redeem Codes | WordLift Developer Documentation # Redeem Codes Manage redeem codes. [๐Ÿ“„๏ธ Redeem the provided code and get a keyRedeem the provided code and get a key](/api/manager/redeem-code/) --- --- url: https://docs.wordlift.io/api/manager/sitemap-imports/ --- # Sitemap Imports | WordLift Developer Documentation # Sitemap Imports Import sitemaps to the KG [๐Ÿ“„๏ธ CreateCreate a Sitemap Import](/api/manager/create-sitemap-import/) --- --- url: https://docs.wordlift.io/api/manager/tokens/ --- # Tokens | WordLift Developer Documentation # Tokens Read tokens connected to Graphs. [๐Ÿ“„๏ธ GetGet a token](/api/manager/get-token/) --- --- url: https://docs.wordlift.io/api/manager/update-account-config/ --- # Account configuration update | WordLift Developer Documentation # Account configuration update PATCH ## /accounts/me/google-search-console Update the Google Search Console siteUrl for the authenticated account. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **site\_url** string **Possible values:** Value must match regular expression `^(https?://|sc-domain:)\S+` ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 412 * 422 Google Search Console configuration updated on the account * \*/\* * Schema * Example (from schema) **Schema** **account** int32 **siteUrl** string ``` { "account": 0, "siteUrl": "string" } ``` Unauthorized * \*/\* * Schema * Example (from schema) **Schema** **account** int32 **siteUrl** string ``` { "account": 0, "siteUrl": "string" } ``` GSC api denied or missing * \*/\* * Schema * Example (from schema) **Schema** **account** int32 **siteUrl** string ``` { "account": 0, "siteUrl": "string" } ``` Validation error * \*/\* * Schema * Example (from schema) **Schema** **account** int32 **siteUrl** string ``` { "account": 0, "siteUrl": "string" } ``` --- --- url: https://docs.wordlift.io/api/manager/update-account/ --- # Update an account. | WordLift Developer Documentation # Update an account. PUT ## /accounts/:id Update the account ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required * application/json ### Body **required** **country** string **language** string **url** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **analytics\_client\_factory** string **analyzerId** int64 **botify\_project** string **botify\_token** string **botify\_username** string **collection** string **Default value:** `entity` The collection hosing the Knowledge Graph. **country** string **datasetId** stringdeprecated **datasetUri** string **default\_data\_formatter** string **domainUri** string **google\_search\_console\_site\_url** string **id** int64 **indexed** boolean **is\_wordpress** boolean **key** string **language** string **ngDatasetId** string **resolvedUrl** string **subscriptionId** int64 **url** string **wpAdmin** string **wpJson** string **wp\_include\_exclude\_default** string ``` { "analytics_client_factory": "string", "analyzerId": 0, "botify_project": "string", "botify_token": "string", "botify_username": "string", "collection": "entity", "country": "string", "datasetUri": "string", "default_data_formatter": "string", "domainUri": "string", "google_search_console_site_url": "string", "id": 0, "indexed": true, "is_wordpress": true, "key": "string", "language": "string", "ngDatasetId": "string", "resolvedUrl": "string", "subscriptionId": 0, "url": "string", "wpAdmin": "string", "wpJson": "string", "wp_include_exclude_default": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/update-diagnostic-plugin-collection/ --- # Update | WordLift Developer Documentation # Update PUT ## /accounts/me/plugin/diagnostics/plugins-collection Replace the list of the plugins for the current account with the one provided by the client ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **account** objectrequired * application/json ### Body array **required** * Array \[ **active** boolean Whether the plugin is active. **name** string The plugin name. **version** string The plugin version. * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 204 * 401 * 404 Found. No Content Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/update-include-excludes/ --- # Update | WordLift Developer Documentation # Update PUT ## /accounts/me/include-excludes Update the include and exclude configurations. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body array **required** * Array \[ **flag** stringrequired **Possible values:** \[`INCLUDE`, `EXCLUDE`\] A flag which determines whether the URL is `INCLUDE` or `EXCLUDE`. **url** stringrequired The URL * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64required Account unique identifier **flag** stringrequired **Possible values:** \[`INCLUDE`, `EXCLUDE`\] A flag which determines whether the URL is `INCLUDE` or `EXCLUDE`. **id** int64 Unique identifier **url** stringrequired The URL * \] ``` [ { "account_id": 0, "flag": "INCLUDE", "id": 0, "url": "string" } ] ``` Unauthorized * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64required Account unique identifier **flag** stringrequired **Possible values:** \[`INCLUDE`, `EXCLUDE`\] A flag which determines whether the URL is `INCLUDE` or `EXCLUDE`. **id** int64 Unique identifier **url** stringrequired The URL * \] ``` [ { "account_id": 0, "flag": "INCLUDE", "id": 0, "url": "string" } ] ``` Not Found * application/json * Schema * Example (from schema) **Schema** * Array \[ **account\_id** int64required Account unique identifier **flag** stringrequired **Possible values:** \[`INCLUDE`, `EXCLUDE`\] A flag which determines whether the URL is `INCLUDE` or `EXCLUDE`. **id** int64 Unique identifier **url** stringrequired The URL * \] ``` [ { "account_id": 0, "flag": "INCLUDE", "id": 0, "url": "string" } ] ``` --- --- url: https://docs.wordlift.io/api/manager/update-merchant/ --- # Update | WordLift Developer Documentation # Update PUT ## /merchants/:id Update a Merchant ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Merchant id * application/json ### Body **required** **access\_token** string Google Merchant access token **account\_id** int64 The Knowledge Graph to use for the Merchant. Please note that the Knowledge Graph will be reset. When not provided, this method will use the first available Knowledge Graph. **dataset\_domain** string The custom domain (for example data.example.org) **dataset\_name** string The dataset path (for example "data") **deleted** boolean True if the merchant has been deleted **google\_merchant\_id** int64required The Google Merchant id **ignore\_brand** boolean Whether to ignore the `brand` property during validation **ignore\_image** boolean Whether to ignore the `image` property during validation **publisher\_name** stringrequired The publisher name (shows in schema publisher) **refresh\_token** stringrequired Google Merchant refresh token **url** stringrequired The website URL **url\_strategy** string **Possible values:** `<= 50 characters`, \[`canonicalLinkAndLink`, `canonicalLinkOtherwiseLink`\] **Default value:** `canonicalLinkAndLink` Which strategy to use to write the url schema. **writer\_service** string How to write the merchant data to the graph, if unsure, do not set anything (by default `wordpressMerchantWriter`). ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success * application/json * Schema * Example (from schema) **Schema** **access\_token** stringrequired The Google merchant access token **account\_id** int64 The account id **automatic\_synchronization** boolean Whether the Merchant data will be synchronized automatically **created\_at** date-time The create date-time **custom\_seller** string Custom seller entity - if applicable. **dataset\_domain** stringdeprecated The custom domain (for example data.example.org) **dataset\_name** stringdeprecated The dataset path (for example /data) **default\_products\_filter\_action** stringrequired **Possible values:** \[`PROCESS`, `IGNORE`\] **Default value:** `PROCESS` Default Products filter action to apply during sync process. **deleted** booleanrequired True if the merchant has been deleted **deleted\_at** date-time The delete date-time **google\_merchant\_id** int64required The Google Merchant id **id** int64 The unique id **ignore\_brand** boolean Whether to ignore the `brand` property during validation **ignore\_image** boolean Whether to ignore the `image` property during validation **modified\_at** date-time The last modified date-time **publisher\_name** stringrequired The publisher name (shows in schema publisher) **refresh\_token** stringrequired The Google merchant refresh token **url** string The website URL **url\_strategy** string **Possible values:** `<= 50 characters`, \[`canonicalLinkAndLink`, `canonicalLinkOtherwiseLink`\] **Default value:** `canonicalLinkAndLink` Which strategy to use to write the url schema. **writer\_service** string How to write the merchant data to the graph, if unsure, do not set anything (by default `wordpressMerchantWriter`). ``` { "access_token": "string", "account_id": 0, "automatic_synchronization": true, "created_at": "2024-07-29T15:51:28.071Z", "custom_seller": "string", "default_products_filter_action": "PROCESS", "deleted": false, "deleted_at": "2024-07-29T15:51:28.071Z", "google_merchant_id": 0, "id": 0, "ignore_brand": true, "ignore_image": true, "modified_at": "2024-07-29T15:51:28.071Z", "publisher_name": "string", "refresh_token": "string", "url": "string", "url_strategy": "canonicalLinkAndLink", "writer_service": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/update-nodes-collection/ --- # Update | WordLift Developer Documentation # Update PUT ## /vector-search/nodes-collection Update ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body array **required** * Array \[ **embeddings** double\[\] A list of embeddings. **entity\_id** stringrequired The entity id in the form on an IRI, e.g. https://data.example.org/dataset/entity. **metadata** object A map of metadata properties. **property name\*** object A map of metadata properties. oneOf * MOD1 * MOD2 * MOD3 * MOD4 * MOD5 string integer number number boolean **node\_id** stringrequired The node id generally expressed in the form of a UUID. **text** string The original text. * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found. Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/update-o-auth-2-authorized-client/ --- # Update | WordLift Developer Documentation # Update PUT ## /oauth2/authorized-clients/:id Update a OAuth2 Authorized Client given its client registration id ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required The Id * application/json ### Body **required** **access\_token\_expires\_at** date-time When the Access Token expires **access\_token\_issued\_at** date-time When the Access Token was issued **access\_token\_scopes** string The Access Token scopes **access\_token\_type** string The Access Token Type **access\_token\_value** string The Access Token Value **client\_registration\_id** string The Client Registration Id **principal\_name** string The Principal Name **refresh\_token\_issued\_at** date-time When the Access Token was issued **refresh\_token\_value** string The Refresh Token Value ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 Found * application/json * Schema * Example (from schema) **Schema** **access\_token\_expires\_at** date-time **access\_token\_issued\_at** date-time **access\_token\_scopes** string **access\_token\_type** string **access\_token\_value** string **client\_registration\_id** string **id** int64 **principal\_name** string **refresh\_token\_issued\_at** date-time **refresh\_token\_value** string ``` { "access_token_expires_at": "2024-07-29T15:51:28.071Z", "access_token_issued_at": "2024-07-29T15:51:28.071Z", "access_token_scopes": "string", "access_token_type": "string", "access_token_value": "string", "client_registration_id": "string", "id": 0, "principal_name": "string", "refresh_token_issued_at": "2024-07-29T15:51:28.071Z", "refresh_token_value": "string" } ``` Authentication Failure --- --- url: https://docs.wordlift.io/api/manager/update-platform-limit/ --- # Update Platform Limit | WordLift Developer Documentation # Update Platform Limit PUT ## /platform-limit/limits/:id Update a platform limit. ## Request[โ€‹](#request "Direct link to Request") ### Path Parameters **id** int64required Platform Limit id * application/json ### Body **required** **applies\_to** stringrequired **based\_on** stringrequired **Possible values:** \[`SKU`\] **based\_on\_value** stringrequired **description** string **limits** int32required **Possible values:** `>= 1` **scope** stringrequired **Possible values:** \[`ACCOUNT`, `SUBSCRIPTION`\] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Found * application/json * Schema * Example (from schema) **Schema** **applies\_to** stringrequired **based\_on** stringrequired **Possible values:** \[`SKU`\] **based\_on\_value** stringrequired **created\_at** date-time The create date-time. **description** string **id** int64 **limits** int32required **Possible values:** `>= 1` **modified\_at** date-time The last modified date-time. **scope** stringrequired **Possible values:** \[`ACCOUNT`, `SUBSCRIPTION`\] ``` { "applies_to": "string", "based_on": "SKU", "based_on_value": "string", "created_at": "2024-07-29T15:51:28.071Z", "description": "string", "id": 0, "limits": 0, "modified_at": "2024-07-29T15:51:28.071Z", "scope": "ACCOUNT" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/validate/ --- # Validate | WordLift Developer Documentation # Validate POST ## /validations Check if the provided custom domain can be set for the account ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **dataset\_domain** stringrequired The dataset domain, e.g. data.example.org **dataset\_name** stringrequired The dataset name, e.g. my-dataset-name ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success * application/vnd.wordlift.custom-domain-validation+json;version-1 * Schema **Schema** any Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/manager/vector-search-nodes/ --- # Vector Search Nodes | WordLift Developer Documentation # Vector Search Nodes Manage vector search nodes embeddings. [๐Ÿ“„๏ธ UpdateUpdate](/api/manager/update-nodes-collection/) --- --- url: https://docs.wordlift.io/api/manager/vector-search-queries/ --- # Vector Search Queries | WordLift Developer Documentation # Vector Search Queries Create vector search queries. [๐Ÿ“„๏ธ CreateCreate](/api/manager/create-query/) --- --- url: https://docs.wordlift.io/api/manager/vector-search-questions/ --- # Vector Search Questions | WordLift Developer Documentation # Vector Search Questions Get answers to questions. [๐Ÿ“„๏ธ CreateCreate](/api/manager/create-vector-search-question/) --- --- url: https://docs.wordlift.io/api/manager/web-pages-imports/ --- # Web Pages Imports | WordLift Developer Documentation # Web Pages Imports Import Web Pages to the Graph [๐Ÿ“„๏ธ CreateCreate a Web Page Import](/api/manager/create-web-page-imports/) --- --- url: https://docs.wordlift.io/api/manager/web-pages/ --- # Web pages | WordLift Developer Documentation # Web pages Extract web page content [๐Ÿ“„๏ธ GetGet extracted web page content](/api/manager/get-web-page/) --- --- url: https://docs.wordlift.io/api/middleware/autocomplete/ --- # Autocomplete | WordLift Developer Documentation # Autocomplete Find entities in Linked Data or Knowledge Graph by partial match. [๐Ÿ“„๏ธ GetThe autocomplete endpoint suggests entities from Linked Data that match the provided query.](/api/middleware/get/) --- --- url: https://docs.wordlift.io/api/middleware/create-entities/ --- # Create | WordLift Developer Documentation # Create POST ## /entities Create new entities by automatically generating their id. ## Request[โ€‹](#request "Direct link to Request") * application/ld+json * application/rdf+xml * text/turtle ### Body required string ### Body required string ### Body required string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 412 Success * application/ld+json * application/rdf+xml * text/turtle * Schema **Schema** string * Schema **Schema** string * Schema **Schema** string Invalid request parameters --- --- url: https://docs.wordlift.io/api/middleware/create-or-update-entities-1/ --- # Create or update many | WordLift Developer Documentation # Create or update many POST ## /dataset/batch Create or update many entities in the Knowledge Graph. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body array **required** * Array \[ **uri** stringrequired The entity URI. **model** stringrequired **private** boolean Whether the entity should be hidden from Linked Data and GraphQL. * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success * application/json * Schema * Example (from schema) **Schema** object ``` {} ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/middleware/create-or-update-entities/ --- # Update (or create) | WordLift Developer Documentation # Update (or create) PUT ## /entities Create or update entities by using the provided ids. ## Request[โ€‹](#request "Direct link to Request") * application/ld+json * application/rdf+xml * text/turtle ### Body required string ### Body required string ### Body required string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 412 Success Invalid request parameters --- --- url: https://docs.wordlift.io/api/middleware/create-or-update-entity/ --- # Create or update one | WordLift Developer Documentation # Create or update one POST ## /dataset Create or update an entity in the Knowledge Graph. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **uri** stringrequired The entity's URI **private** boolean **Default value:** `true` Whether the entity should be hidden from Linked Data and GraphQL **Example:** true * application/ld+json ### Body **required** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/middleware/dataset/ --- # Dataset | WordLift Developer Documentation # Dataset Manage Entities (legacy) [๐Ÿ“„๏ธ Create or update manyCreate or update many entities in the Knowledge Graph.](/api/middleware/create-or-update-entities-1/) [๐Ÿ“„๏ธ Create or update oneCreate or update an entity in the Knowledge Graph.](/api/middleware/create-or-update-entity/) [๐Ÿ“„๏ธ Delete oneDelete an entity from the Knowledge Graph.](/api/middleware/delete-entity/) [๐Ÿ“„๏ธ Delete allDelete all the entities in the Knowledge Graph.](/api/middleware/delete-all-entities/) --- --- url: https://docs.wordlift.io/api/middleware/delete-all-entities/ --- # Delete all | WordLift Developer Documentation # Delete all DELETE ## /dataset/all Delete all the entities in the Knowledge Graph. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/middleware/delete-entities/ --- # Delete | WordLift Developer Documentation # Delete DELETE ## /entities Delete entities with the provided ids. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **id** uri\[\]required One or more ids, in the form of URLs. **include\_children** string **Default value:** `false` Whether to delete all the entities whose ids start with the provided ids, by default false. **include\_referenced** string **Default value:** `false` Whether to delete all the referenced entities (e.g. in `schema:mentions`), by default false. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 412 Success Invalid request parameters --- --- url: https://docs.wordlift.io/api/middleware/delete-entity/ --- # Delete one | WordLift Developer Documentation # Delete one DELETE ## /dataset Delete an entity from the Knowledge Graph. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **uri** stringrequired The URI of the entity to delete. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/middleware/entities/ --- # Entities | WordLift Developer Documentation # Entities Manage entities in Knowledge Graphs [๐Ÿ“„๏ธ GetGet entities with the provided ids.](/api/middleware/get-entities/) [๐Ÿ“„๏ธ Update (or create)Create or update entities by using the provided ids.](/api/middleware/create-or-update-entities/) [๐Ÿ“„๏ธ CreateCreate new entities by automatically generating their id.](/api/middleware/create-entities/) [๐Ÿ“„๏ธ DeleteDelete entities with the provided ids.](/api/middleware/delete-entities/) [๐Ÿ“„๏ธ Patch EntityPatch entity](/api/middleware/patch-entities/) --- --- url: https://docs.wordlift.io/api/middleware/get-entities/ --- # Get | WordLift Developer Documentation # Get GET ## /entities Get entities with the provided ids. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **id** uri\[\]required One or more ids, in the form of URLs. **include\_children** string **Default value:** `false` Whether to return all the entities whose ids start with the provided ids, by default false. **include\_referenced** string **Default value:** `false` Whether to return all the referenced entities (e.g. in `schema:mentions`), by default false. **include\_private** string **Default value:** `false` Whether to return private properties, requires an authenticated request, by default false. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 412 Success * application/ld+json * application/rdf+xml * text/turtle * Schema **Schema** string * Schema **Schema** string * Schema **Schema** string Invalid request parameters --- --- url: https://docs.wordlift.io/api/middleware/get/ --- # Get | WordLift Developer Documentation # Get GET ## /autocomplete The autocomplete endpoint suggests entities from Linked Data that match the provided query. ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **query** stringrequired Autocomplete query **language** stringrequired 2-letter language code, e.g. 'en'. **scope** string **Possible values:** \[`cloud`\] **Default value:** `cloud` Scope **limit** string **Default value:** `10` Maximum number of results. By default 10. **exclude** string\[\] List of entity URIs to exclude. ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 401 * 404 Success * \*/\* * Schema * Example (from schema) **Schema** **id** uri **labels** string\[\] **descriptions** string\[\] **types** url\[\] **urls** url\[\] **images** url\[\] A list of image URLs. **sameAss** url\[\] **scope** string **Possible values:** \[`local`, `network`, `cloud`\] **description** string **mainType** string Schema type slug **label** string **value** string **displayTypes** string ``` { "id": "string", "labels": [ "string" ], "descriptions": [ "string" ], "types": [ "string" ], "urls": [ "string" ], "images": [ "string" ], "sameAss": [ "string" ], "scope": "local", "description": "string", "mainType": "string", "label": "string", "value": "string", "displayTypes": "string" } ``` Authentication Failure Not Found --- --- url: https://docs.wordlift.io/api/middleware/middleware/ --- # Middleware | WordLift Developer Documentation Version: 1.0 # Middleware Knowledge Graph data management. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey `Key {your key}` | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/middleware/patch-entities/ --- # Patch Entity | WordLift Developer Documentation # Patch Entity PATCH ## /entities Patch entity ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **id** urirequired Entity id. * application/json-patch+json ### Body array **required** * Array \[ **op** string **Possible values:** \[`add`, `remove`, `replace`, `move`, `copy`, `test`, `add`, `remove`, `replace`\] The patch operation, example `add`. **path** string The property to apply the operation, JSONPath formatted (leading slash) on, e.g. \`/https://schema.org/image (note the leading slash). **value** string * \] ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 412 Success * application/ld+json * application/rdf+xml * text/turtle * Schema **Schema** string * Schema **Schema** string * Schema **Schema** string Invalid request parameters --- --- url: https://docs.wordlift.io/api/sitemap-generator/generate-sitemap/ --- # Generate Sitemap | WordLift Developer Documentation # Generate Sitemap POST ## /build Generates a sitemap from a GraphQL query to WordLift KG. You must provide a valid GraphQL query as the request body. ## Request[โ€‹](#request "Direct link to Request") * application/json ### Body **required** **query** string **operationName** string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 400 * 401 * 500 Successful response * application/json * Schema * Example (from schema) **Schema** **sitemap** string The generated sitemap in XML format. ``` { "sitemap": "string" } ``` Bad Request Unauthorized Internal Server Error --- --- url: https://docs.wordlift.io/api/sitemap-generator/sitemap-generator/ --- # Sitemap Generator | WordLift Developer Documentation # Sitemap Generator Generate sitemaps using GraphQL queries to WordLift KG. [๐Ÿ“„๏ธ Generate SitemapGenerates a sitemap from a GraphQL query to WordLift KG. You must provide a valid GraphQL query as the request body.](/api/sitemap-generator/generate-sitemap/) --- --- url: https://docs.wordlift.io/api/sitemap-generator/wordlift-sitemap-generator-api/ --- # WordLift Sitemap Generator API | WordLift Developer Documentation Version: 1.0 # WordLift Sitemap Generator API Generate a sitemap from a GraphQL query to WordLift KG. ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2023-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/api/summarizer/microdata-to-json-ld-using-post/ --- # Create | WordLift Developer Documentation # Create POST ## /summarize Create ## Request[โ€‹](#request "Direct link to Request") ### Query Parameters **max\_length** int32 **Default value:** `500` Maximum text length **min\_length** int32 **Default value:** `25` Minimum text length **ratio** float **Default value:** `0.2` Ratio * text/plain ### Body **required** body string ## Responses[โ€‹](#responses "Direct link to Responses") * 200 * 201 * 401 * 403 * 404 OK * application/ld+json * Schema * Example (from schema) **Schema** **property name\*** string ``` {} ``` Created Unauthorized Forbidden Not Found --- --- url: https://docs.wordlift.io/api/summarizer/summarizations/ --- # Summarizations | WordLift Developer Documentation # Summarizations Create a generic text summarization [๐Ÿ“„๏ธ CreateCreate](/api/summarizer/microdata-to-json-ld-using-post/) --- --- url: https://docs.wordlift.io/api/summarizer/summarizer/ --- # Summarizer | WordLift Developer Documentation Version: 1.0 # Summarizer Generic text summarization ## Authentication[โ€‹](#authentication "Direct link to Authentication") * API Key: ApiKey | Security Scheme Type: | apiKey | | ---------------------- | ------------- | | Header parameter name: | Authorization | ### Contact WordLift: [hello@wordlift.io](mailto:hello@wordlift.io) URL: [https://wordlift.io](mailto:https://wordlift.io) ### Terms of Service ### License [(c) copyright 2022-present WordLift](https://wordlift.io) --- --- url: https://docs.wordlift.io/category/api/ --- # API | WordLift Developer Documentation ![Chat Bot Icon](https://bot-framework-westeurope.azureedge.net/bot-icons-v1/bdb5390f-2312-420b-89b3-6d753841cdb1_DjAC7MB61QR80uauCeo1sPEve8jqABuAkHEcY8I28t0Dno.png) [Skip to main content](#%5F%5Fdocusaurus%5FskipToContent%5Ffallback) [![WordLift](/img/logo.svg)![WordLift](/img/logo-dark.svg)**Guide**](/)[Start Here](/) [Products](#) * [Search Demand / Google Sheets Add-on](/seo-add-on-google-sheets/introduction/) * [Knowledge Graph / Botify Connector](/knowledge-graph/botify/) * [Knowledge Graph / Sitemap Import](/knowledge-graph/sitemap-import/) * [Knowledge Graph / Analytics Import](/knowledge-graph/analytics-api/) * [Knowledge Graph / Product Knowledge Graph Builder](/product-knowledge-graph-builder/introduction/) * [Knowledge Graph / WordPress Plugin](/wordpress-plugin/) * [Knowledge Graph / WooCommerce Plugin](/woocommerce/introduction/) * [Knowledge Graph / Cloud](/cloud/) * [Knowledge Graph / KG-REST](/knowledge-graph/kg-rest/) * [Knowledge Graph / Multilingual Graphs](/knowledge-graph/multilingual/) * [Smart Content / AI SEO Agent](/agent-wordlift/) * [Smart Content / Content Generation](/content-generation/) * [Smart Content / AI & LLM Integrations](/llm-connectors/wordlift-reader/) * [Marketing Automation / Zapier](/marketing-automation/zapier/introduction/) * [Marketing Automation / Power Automate](/marketing-automation/power-automate/introduction/) * [Semantic Reporting / Looker Studio Connector ](/looker-studio-connector/introduction/) [AI SEO Agent](/agent-wordlift/)[API](/category/api/) [GitHub](https://github.com/wordlift) Search * [API](/category/api/) * [Agent WordLift](/api/agent/wordlift-agent-api/) * [Audit](/api/audit/wordlift-audit-api/) * [Image to Text](/api/image-to-text/wordlift-image-to-text-api/) * [Analysis](/api/analysis/analysis/) * [Classification](/api/classification/classification/) * [Content Generation](/api/content-generation/content-generation/) * [Content Evaluations](/api/content-evaluations/wordlift-content-evaluations-api/) * [Fact Check](/api/fact-check/wordlift-fact-checking-api/) * [GraphQL](/api/graphql/graphql-support/) * [Inspector](/api/inspector/inspection/) * [KPI Events](/api/events/events/) * [Long Tail](/api/long-tail/long-tail/) * [Manager](/api/manager/manager/) * [Google Search Console](/api/gsc-url-inspections/google-search-console-url-inspections/) * [Middleware](/api/middleware/middleware/) * [Summarization](/api/summarizer/summarizer/) * [Sitemap Generator](/api/sitemap-generator/wordlift-sitemap-generator-api/) * API AI โ–พ # API [๐Ÿ—ƒ๏ธ Agent WordLift2 items](/api/agent/wordlift-agent-api/) [๐Ÿ—ƒ๏ธ Audit2 items](/api/audit/wordlift-audit-api/) [๐Ÿ—ƒ๏ธ Image to Text2 items](/api/image-to-text/wordlift-image-to-text-api/) [๐Ÿ—ƒ๏ธ Analysis4 items](/api/analysis/analysis/) [๐Ÿ—ƒ๏ธ Classification2 items](/api/classification/classification/) [๐Ÿ—ƒ๏ธ Content Generation14 items](/api/content-generation/content-generation/) [๐Ÿ—ƒ๏ธ Content Evaluations2 items](/api/content-evaluations/wordlift-content-evaluations-api/) [๐Ÿ—ƒ๏ธ Fact Check2 items](/api/fact-check/wordlift-fact-checking-api/) [๐Ÿ—ƒ๏ธ GraphQL2 items](/api/graphql/graphql-support/) [๐Ÿ—ƒ๏ธ Inspector3 items](/api/inspector/inspection/) [๐Ÿ—ƒ๏ธ KPI Events2 items](/api/events/events/) [๐Ÿ—ƒ๏ธ Long Tail4 items](/api/long-tail/long-tail/) [๐Ÿ—ƒ๏ธ Manager35 items](/api/manager/manager/) [๐Ÿ—ƒ๏ธ Google Search Console2 items](/api/gsc-url-inspections/google-search-console-url-inspections/) [๐Ÿ—ƒ๏ธ Middleware4 items](/api/middleware/middleware/) [๐Ÿ—ƒ๏ธ Summarization2 items](/api/summarizer/summarizer/) [๐Ÿ—ƒ๏ธ Sitemap Generator2 items](/api/sitemap-generator/wordlift-sitemap-generator-api/) [NextIntroduction](/api/agent/wordlift-agent-api/) Social * [GitHub](https://github.com/wordlift) * [LinkedIn](https://www.linkedin.com/company/wordlift/) * [X (Twitter)](https://twitter.com/wordliftit) * [Facebook](https://www.facebook.com/wordlift/) Solutions * [Visibility Solution](https://wordlift.io/visibility-solution/) * [Product Performance](https://wordlift.io/product-performance-solution/) * [Agent WordLift](https://wordlift.io/agent/) * [Intelligence Service](https://wordlift.io/intelligence-service/) Get Started * [Pricing](https://wordlift.io/pricing/) * [Documentation](/) * [API Reference](/category/api/) AI Resources * [llms.txt](/llms.txt) * [llms-full.txt](/llms-full.txt) Copyright ยฉ 2025 WordLift srl --- --- url: https://docs.wordlift.io/category/power-automate-connector/ --- # Power Automate Connector | WordLift Developer Documentation ![Chat Bot Icon](https://bot-framework-westeurope.azureedge.net/bot-icons-v1/bdb5390f-2312-420b-89b3-6d753841cdb1_DjAC7MB61QR80uauCeo1sPEve8jqABuAkHEcY8I28t0Dno.png) [Skip to main content](#%5F%5Fdocusaurus%5FskipToContent%5Ffallback) [![WordLift](/img/logo.svg)![WordLift](/img/logo-dark.svg)**Guide**](/)[Start Here](/) [Products](#) * [Search Demand / Google Sheets Add-on](/seo-add-on-google-sheets/introduction/) * [Knowledge Graph / Botify Connector](/knowledge-graph/botify/) * [Knowledge Graph / Sitemap Import](/knowledge-graph/sitemap-import/) * [Knowledge Graph / Analytics Import](/knowledge-graph/analytics-api/) * [Knowledge Graph / Product Knowledge Graph Builder](/product-knowledge-graph-builder/introduction/) * [Knowledge Graph / WordPress Plugin](/wordpress-plugin/) * [Knowledge Graph / WooCommerce Plugin](/woocommerce/introduction/) * [Knowledge Graph / Cloud](/cloud/) * [Knowledge Graph / KG-REST](/knowledge-graph/kg-rest/) * [Knowledge Graph / Multilingual Graphs](/knowledge-graph/multilingual/) * [Smart Content / AI SEO Agent](/agent-wordlift/) * [Smart Content / Content Generation](/content-generation/) * [Smart Content / AI & LLM Integrations](/llm-connectors/wordlift-reader/) * [Marketing Automation / Zapier](/marketing-automation/zapier/introduction/) * [Marketing Automation / Power Automate](/marketing-automation/power-automate/introduction/) * [Semantic Reporting / Looker Studio Connector ](/looker-studio-connector/introduction/) [AI SEO Agent](/agent-wordlift/)[API](/category/api/) [GitHub](https://github.com/wordlift) Search * [Zapier Integration](/category/zapier-integration/) * [Power Automate Connector](/category/power-automate-connector/) * [Introduction](/marketing-automation/power-automate/introduction/) * Power Automate Connector AI โ–พ # Power Automate Connector Connect WordLift with Microsoft Power Platform using our Power Automate connector to automate your data workflows. [๐Ÿ“„๏ธ IntroductionThe WordLift Power Automate Connector allows you to integrate your Knowledge Graph data with the Microsoft Power Platform. This connector provides access to the WordLift GraphQL API, enabling you to extract and utilize entity data across Power Automate, Logic Apps, and Power Apps.](/marketing-automation/power-automate/introduction/) [PreviousIntroduction](/marketing-automation/zapier/introduction/)[NextIntroduction](/marketing-automation/power-automate/introduction/) Social * [GitHub](https://github.com/wordlift) * [LinkedIn](https://www.linkedin.com/company/wordlift/) * [X (Twitter)](https://twitter.com/wordliftit) * [Facebook](https://www.facebook.com/wordlift/) Solutions * [Visibility Solution](https://wordlift.io/visibility-solution/) * [Product Performance](https://wordlift.io/product-performance-solution/) * [Agent WordLift](https://wordlift.io/agent/) * [Intelligence Service](https://wordlift.io/intelligence-service/) Get Started * [Pricing](https://wordlift.io/pricing/) * [Documentation](/) * [API Reference](/category/api/) AI Resources * [llms.txt](/llms.txt) * [llms-full.txt](/llms-full.txt) Copyright ยฉ 2025 WordLift srl --- --- url: https://docs.wordlift.io/category/zapier-integration/ --- # Zapier Integration | WordLift Developer Documentation ![Chat Bot Icon](https://bot-framework-westeurope.azureedge.net/bot-icons-v1/bdb5390f-2312-420b-89b3-6d753841cdb1_DjAC7MB61QR80uauCeo1sPEve8jqABuAkHEcY8I28t0Dno.png) [Skip to main content](#%5F%5Fdocusaurus%5FskipToContent%5Ffallback) [![WordLift](/img/logo.svg)![WordLift](/img/logo-dark.svg)**Guide**](/)[Start Here](/) [Products](#) * [Search Demand / Google Sheets Add-on](/seo-add-on-google-sheets/introduction/) * [Knowledge Graph / Botify Connector](/knowledge-graph/botify/) * [Knowledge Graph / Sitemap Import](/knowledge-graph/sitemap-import/) * [Knowledge Graph / Analytics Import](/knowledge-graph/analytics-api/) * [Knowledge Graph / Product Knowledge Graph Builder](/product-knowledge-graph-builder/introduction/) * [Knowledge Graph / WordPress Plugin](/wordpress-plugin/) * [Knowledge Graph / WooCommerce Plugin](/woocommerce/introduction/) * [Knowledge Graph / Cloud](/cloud/) * [Knowledge Graph / KG-REST](/knowledge-graph/kg-rest/) * [Knowledge Graph / Multilingual Graphs](/knowledge-graph/multilingual/) * [Smart Content / AI SEO Agent](/agent-wordlift/) * [Smart Content / Content Generation](/content-generation/) * [Smart Content / AI & LLM Integrations](/llm-connectors/wordlift-reader/) * [Marketing Automation / Zapier](/marketing-automation/zapier/introduction/) * [Marketing Automation / Power Automate](/marketing-automation/power-automate/introduction/) * [Semantic Reporting / Looker Studio Connector ](/looker-studio-connector/introduction/) [AI SEO Agent](/agent-wordlift/)[API](/category/api/) [GitHub](https://github.com/wordlift) Search * [Zapier Integration](/category/zapier-integration/) * [Introduction](/marketing-automation/zapier/introduction/) * [Power Automate Connector](/category/power-automate-connector/) * Zapier Integration AI โ–พ # Zapier Integration Connect WordLift with over 6,000+ apps using our Zapier integration. [๐Ÿ“„๏ธ IntroductionThe WordLift Zapier Integration allows you to automate your semantic SEO workflows by connecting WordLift with over 6,000+ apps. You can now leverage the power of Agent WordLift and your Knowledge Graph data across your entire marketing stack.](/marketing-automation/zapier/introduction/) [NextIntroduction](/marketing-automation/zapier/introduction/) Social * [GitHub](https://github.com/wordlift) * [LinkedIn](https://www.linkedin.com/company/wordlift/) * [X (Twitter)](https://twitter.com/wordliftit) * [Facebook](https://www.facebook.com/wordlift/) Solutions * [Visibility Solution](https://wordlift.io/visibility-solution/) * [Product Performance](https://wordlift.io/product-performance-solution/) * [Agent WordLift](https://wordlift.io/agent/) * [Intelligence Service](https://wordlift.io/intelligence-service/) Get Started * [Pricing](https://wordlift.io/pricing/) * [Documentation](/) * [API Reference](/category/api/) AI Resources * [llms.txt](/llms.txt) * [llms-full.txt](/llms-full.txt) Copyright ยฉ 2025 WordLift srl --- --- url: https://docs.wordlift.io/cloud/ --- # WordLift Cloud | WordLift Developer Documentation # WordLift Cloud Learn how to use WordLift Cloud to improve the **organic traffic** of your website using [Semantic SEO](https://wordlift.io/blog/en/entity/semantic-seo%3E). ## Introduction[โ€‹](#introduction "Direct link to Introduction") --- The **WordLift Cloud** is a _web-based application_ designed to bring the semantic markup of WordLift to any website regardless of the CMS being used.**WordLift Cloud** is activated on any HTML page by adding a JS in the HEAD section of the page. **WordLift Cloud** enables content owners to re-use any [RDF knowledge graph](https://wordlift.io/blog/en/entity/knowledge-graph/) to add [schema markup](https://wordlift.io/blog/en/entity/schema-org/). ## Get Started with WordLift Cloud[โ€‹](#get-started-with-wordlift-cloud "Direct link to Get Started with WordLift Cloud") --- **WordLift Cloud** uses a launcher JavaScript that needs to be added to the pages of your website. Once the script has been added, authenticated users, are able to activate the WordLift Sidebar widget, choose the relevant entities for a given article and publish the linked metadata using [JSON Linked Data](https://wordlift.io/blog/en/entity/json-ld) to improve the SEO. The markup can be checked using the [Structured Data Testing Tool of Google](https://search.google.com/structured-data/testing-tool). To start enriching your content using WordLift Cloud: 1. [Contact us](https://wordlift.io/contact-us/) to get your account. 2. Add the following script in the `HEAD` section of all the pages: ``` ``` 1. Visit the page that you want to enrich with your favorite browser. 2. Activate the WordLift Sidebar widget by pressing the "W" key while holding the Control and Alt keys: Ctrl + Alt + "W". 3. Point and click to the area of the page that you wish to annotate. 4. Chose the list of entities from the widget that represent at best the content of the page. You are all set. Entities have been saved automatically and the page now features the required**WordLift Cloud** enables content owners to re-use any [RDF knowledge graph](https://wordlift.io/blog/en/entity/knowledge-graph/) to add [schema markup](https://wordlift.io/blog/en/entity/schema-org/). ## Note[โ€‹](#note "Direct link to Note") To learn more about the **WordLift Cloud** [get in contact](https://wordlift.io/contact-us/) with our _concierge team_ and request a WordLift access key. Our team will help you to get the best out of the service. --- --- url: https://docs.wordlift.io/content-generation/ --- # Content Generation | WordLift Developer Documentation # Content Generation Tool Welcome to the world of content creation at scale, where challenges abound in harnessing the potential of Large Language Models (LLMs). These powerful language models possess vast knowledge but also suffer from a critical flaw: **they don't know what they know**. However, a solution lies within the data-rich landscape of knowledge graphs. **By leveraging the data within these graphs built using WordLift, we can steer the model's knowledge, curtail hallucinations, and establish a robust validation pipeline**. At the heart of this transformative content creation process lies an essential tool: **the ontology**. By harnessing the power of ontology (or of linked data vocabularies such as schema.org), **we gain the ability to fine-tune and prompt LLMs, significantly enhancing the accuracy of their predictions**. This dynamic journey begins with a simple content idea, evolving into a sophisticated process of crafting tailored prompts that works best with your data. Drawing from an extensive pool of data available inside the knowledge graphs, **these prompts possess the remarkable potential to generate an infinite array of content variations**, precisely catering to any specific need or context. ![image](/assets/images/content-generation-prompt-template-workflow-7f1433c478896b2417c8285e3795f029.png) _The workflow for creating a prompt template using the attributes in your Knowledge Graph_. Furthermore, the implementation of a well-structured **validation pipeline plays a crucial role in the content creation process**. This pipeline serves as a rigorous quality assurance mechanism, allowing us to meticulously examine and fine-tune the output generated by the Large Language Model (LLM). As we navigate the landscape of content generation, **the harmonious convergence of knowledge graphs, ontologies (structured data), and LLMs promises to transform how we create content**. It paves the way for more efficient, accurate, and scalable content generation, revolutionizing the possibilities for creative expression and knowledge dissemination in today's dynamic digital world. # What is the Content Generation Tool? WordLift's **Content Generation Tool is a dynamic solution**, engineered to streamline the production of succinct, engaging, and detailed text for a multitude of purposes. Whether you're crafting product descriptions, restaurant profiles, or introductory text for category pages, our tool delivers results you can trust. Developed in close collaboration with editorial teams and SEO professionals from midsize to large organizations, our Content Generation Tool guarantees the generation of high-quality content tailored to meet your **enterprise's specific needs**. The tool uses a **dynamic [prompt](https://wordlift.io/blog/en/entity/prompt/) generated using the data from your knowledge graph and a fine-tuned model customized** to align with your brand's specific examples. This customization ensures the generated content maintains **a consistent tone and style per your brand's identity**. The content produced by the tool can be verified for accuracy through **validation rules that you define using the data in your knowledge graph**. This enables you to ensure that the generated content adheres to your company's editorial guidelines and standards, providing content that meets your specific requirements. ![image](/assets/images/content-generation-validation-pipeline-process-5b70e144ea0acb41367d2602a495abd8.png) _Here is how the validation pipeline works_. # Get Started To get started, log into your dashboard and you'll find '_Content Generation_' on the left. If you click on it, you can use the feature that allows you to **create large-scale content for your website**. ![image](/assets/images/content-generation-dashboard-intro-a6fe2bcbdb4eafd51c8a7fdb824324e3.png) # How it works Once you click '_Content Generation_' and create the '_New project_', you will arrive at the step-by-step wizard. ![image](/assets/images/content-generation-dashboard_new-64e5cf6bdab60618cdf5d688556f417f.png) ## Step 1 - Selecting Data Source[โ€‹](#step-1---selecting-data-source "Direct link to Step 1 - Selecting Data Source") In this step, you give the project a name and **select the knowledge graph** you want to use. At this point, you will have to extract the data, and thus the attributes, that you will need to create the prompt that you will use later. ![image](/assets/images/content-generation-get-started-f405fc74eece9360075e244a9f99af8f.png) **To extract the data, you will use a GraphQL query**. In the section _Preset_, you can select a template query, using the attributes of schema.org, or you can choose any custom ontology your knowledge graph might use. ![image](/assets/images/content-generation-data-source-b24f68898fc3868cfc8a0919fe714772.png) Here below is an example query that will extract the following attributes from a Product Knowledge Graph: * **id**: the unique ID of the product inside the knowledge graph; * **url**: the url of the associated web page (product description page); * **material**: the material of the product (here we use strings when constructing the query; as we might have multiple associated materials); * **names**: the names of the product, also in this case we might have multiple names; * **description**: the existing description of the product; * **brand**: the name of the brand (here we can use that the data related to the brand is an additional node in the graph, we use the curly brackets to extract data from a sub-node, in this example we only get the name of the brand); * **price**: the price of the product. We can also see that in **the query below** weโ€™re only getting the top 10 products as weโ€™re limiting the results by passing the page (0) and the number of rows (10) at the beginning of the query. ``` query { products(page:0, rows:10) { id: iri url: strings(name: "schema:url") material: strings(name: "schema:material") names: strings(name:"schema:name") brand: resource(name:"schema:brand"){ brand: string(name: "schema:name") } price: resource(name:"schema:offers"){ price: string(name: "schema:price")} } } ``` ## Step 2 - Configuring the prompt[โ€‹](#step-2---configuring-the-prompt "Direct link to Step 2 - Configuring the prompt") You can **create a dynamic and flexible prompt** using the data you extracted from your knowledge graph. To create your prompt template, you can **use the attributes** that interest you from those you previously selected. We use, as a templating language: [**Liquid**](https://shopify.github.io/liquid/), an open-source language invented by Shopify. Thanks to the template we can for example prevent a section of the prompt from appearing when some attributes are missing in the knowledge graph. Here is an example. ``` As the content writer of a luxury fashion brand write a short but catchy product description for the {{names}} {% if description %} by revising the following paragraph: {{description}}{% endif %}.### ``` Here we make sure that if the description is present we take it into consideration in the prompt (see everything inside the `{% if description %}{% endif %}` block). ![image](/assets/images/content-generation-prompt-configuration-15c92a8bfe9082412a7332fb598eca3e.png) Once you have added the attributes, **you can see the template** you have built for your prompt (sample prompt), which allows you to assess whether **the prompt meets your needs** or if you need to improve it in anything. Then **you can select the language model** you want to use. Before going to the next step, you can **set up the configuration parameters** (length, penalty, creativity) of the generation and **see a sample completion**. If you are not satisfied with the outcome, you can make changes, or if that is OK, you can go to the next step. The user interface enables you to validate both the prompt and generation settings across multiple data samples. As data can vary, a prompt effective for one product may not necessarily be effective for another. We encourage you to **collaborate with our team of specialists to discover the optimal configuration for your specific use-case**. The project you're configuring is designed to be scalable, with potential for reuse across thousands of entities. Also remember, when speaking with our team, that configuration parameters are highly dependent on the model being used for the task. ![image](/assets/images/content-generation-prompt-configuration-completed-9a218bd47211044bc44baad7f667dd17.png) ## Step 3 - Defining Validation Rules[โ€‹](#step-3---defining-validation-rules "Direct link to Step 3 - Defining Validation Rules") We've developed **a flexible validation process** enabling you to establish **customized validation rules** aligning with your specific needs. This ensures the generated content not only meets your expectations but also adheres to your **brand's or company's editorial guidelines**. Furthermore, you gain the ability to dictate when and **how AI should fix the generated content** to maintain compliance with your established rules. Firstly, decide whether your rule should **be based on a specific data field or a set of words**. We distinguish between validation checks associated with attributes (termed '_Field Based_') and those related to specific words (termed '_Word Based_'). ![image](/assets/images/content-generation-validation-rules-field-or-word-based-da1298d074d431ebd77f5a8fb1e676ac.png) **Let's examine a sample rule**. In this scenario (an e-commerce website), we're scrutinizing the predicted completion (i.e., the generated text) to check for any mention of color, ensuring that it aligns with the color attributes detailed in the knowledge graph. We've also stipulated this rule as a requirement, implying that no content will be considered valid unless it includes an accurate reference to the product's color. ![image](/assets/images/content-generation-validation-rules-5c3f8c43366a24ffdd0b41f93e3b653d.png) Here are the proposed settings for each and every rule: 1. **Rule Name**: Assign a distinctive name to the rule for easy recognition. 2. **Level**: Choose if the rule is '_required_' or '_recommended_.' If the '_required_' rule is not met, the completion status will show as ERROR. If a '_recommended_' rule isn't fulfilled, it will result in a WARNING status. 3. **What**: Define the specific components or conditions of the rule. 4. **When**: Specify when the rule is active - whether it's always in effect, or only under certain circumstances. And then โ€œ_Save_โ€. Letโ€™s add now one more rule, this time โ€œWord Basedโ€ to ensure that not ethnic group is mentioned in the generated text. ![image](/assets/images/content-generation-validation-rules-completed-ae2c04205326607fd8d30098b9d3dca3.png) In this example we check whether any mentioned term is present in the completion (as you can see multiple terms are separated by comma); the rule will check that the requirement is fulfilled. If it is not satisfied, it will try to fix the problem using an additional prompt that we have added (Ai Based). See the prompt below: ``` As {{brand}} content editor, read the following sentence and rewrite it by removing any reference to the {{value}}: "{{completion}}" ``` With this rule the system will retry (three or five times depending if it is recommended or required) to **solve the problem**. Once we have completed all the steps, you can **save the project and start the generation**. ![image](/assets/images/content-generation-results-8ec8b07fe641aaea7b68ed7039e13949.png) Completions generated are processed and divided into: 1. **Valid**: This status indicates that the completions have successfully passed the validation process in accordance with the rules you have set previously. 2. **Warning**: This status is assigned to generations that have satisfied 'recommended' rules but have failed to meet 'required' ones. 3. **Error**: This status is given when validation errors occur due to the absence of words or attributes that you had specified to be included. These flawed completions can either be automatically regenerated or manually rewritten and then approved. 4. **Accepted**: This status is applied to all the generations that you have reviewed and confirmed as satisfactory. Bear in mind that the editor always has the ability to review completions that did not pass validation, and move them to the validated column. Additionally, each completion can be effortlessly regenerated as needed by the system. Learn more on how to use the **Content Generation Tool** by [**watching this video**](https://youtu.be/6NiG2acKyyM) or [**booking a demo**](https://wordlift.io/book-a-demo/) with our team of experts. --- --- url: https://docs.wordlift.io/content-generation/api-guide/ --- # API Guide | WordLift Developer Documentation # API Guide ## Introduction[โ€‹](#introduction "Direct link to Introduction") The Content Generation API is based on Projects. Each Project contains the configuration that allows to: 1. Query and select data from the Knowledge Graph 2. Define a Prompt Template that is filled with the selected data 3. Configure the Model and its parameters This webpage will provide a step-by-step guide on how to create, configure and run a Content Generation Project. The API is organized according to the REST principles and in particular the [Zalando's Best Practices](https://opensource.zalando.com/restful-api-guidelines/). tip [The Content Generation API Reference is available here](https://docs.wordlift.io/api/content-generation/content-generation/). The [openapi.yaml is available here](https://raw.githubusercontent.com/wordlift/docs/main/api/content-generation.yaml), it can be used to automatically generate clients. ## Authorization[โ€‹](#authorization "Direct link to Authorization") info Using the Content Generation API requires an OAuth2 Access Token. ### Get an Access Token[โ€‹](#get-an-access-token "Direct link to Get an Access Token") An Access Token can be requested using User Credentials (username and password). This is a very simple method which only requires using the API Client ID (`W8sGqXvefG9XgnMXJYzk6nTiV6MWc3N8TyQJQJcO`). This method is useful when building client apps that don't have a direct interaction with the user. This is an example CURL: ``` curl -X "POST" "https://s.wordlift.io/oauth/token/" \ -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \ --data-urlencode "grant_type=password" \ --data-urlencode "username=" \ --data-urlencode "password=" \ --data-urlencode "client_id=W8sGqXvefG9XgnMXJYzk6nTiV6MWc3N8TyQJQJcO" ``` The server will reply with an Access Token (which expires after one hour) and Refresh Token to request a new Access Token: ``` { "access_token": "", "expires_in": 3600, "token_type": "bearer", "scope": "basic", "refresh_token": "" } ``` ### Refresh Access Token[โ€‹](#refresh-access-token "Direct link to Refresh Access Token") An expired Access Token can't be used anymore. In this case it is possible to request a new Access Token using the Refresh Token at the previous step. ``` curl -X "POST" "https://s.wordlift.io/oauth/token/" \ -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \ --data-urlencode "grant_type=refresh_token" \ --data-urlencode "refresh_token=" \ --data-urlencode "client_id=W8sGqXvefG9XgnMXJYzk6nTiV6MWc3N8TyQJQJcO" ``` The server will reply with an Access Token (which expires after one hour) and refresh token to request a new Access Token: ``` { "access_token": "", "expires_in": 3600, "token_type": "bearer", "scope": "basic", "refresh_token": "" } ``` caution Please note that also the Refresh Token is updated. ## Create a Project[โ€‹](#create-a-project "Direct link to Create a Project") A the very core of the Content Generation API, there are Projects which define the configuration. ### Project Model[โ€‹](#project-model "Direct link to Project Model") Following is a brief explanation of the properties of a Content Generation Project: | Property | Description | Values | | ----------------- | ---------------------------------------------------------------------------------------------- | ---------- | | id | The project ID | | | name | The project name | | | account\_id | The account id linking to a Knowledge Graph | | | graphql\_query | The GraphQL query to select the records from the Knowledge Graph | | | prompt\_template | The Prompt Template using the Liquid language to create the prompts using the selected records | | | model\_id | The model id, use the list model endpoint to retrieve the list of models | | | penalty | The model penalty | 0.5-1.9 | | temperature | The model temperature | 0.4-0.8 | | stop | The stop sequence | | | max\_tokens | The maximum number of the completion's tokens | 0-2,000 | | min\_words | The expected minimum amount of words for the completion | | | words\_to\_ignore | An array of words to ignore | | | created\_at | When the project was created | | | modified\_at | When the project was last updated | | | deleted\_at | When the project was deleted (null if it's not deleted) | | | deleted | Whether the project is deleted | true/false | ### New Project[โ€‹](#new-project "Direct link to New Project") To create a Project the following parameters are required: ``` curl 'https://api.wordlift.io/content-generation/content-generations' -X POST \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw $'...json request payload...' ``` This is an example **request** JSON payload: ``` { "name": "A Project Label", "account_id": 123, "graphql_query": "...graphql query...", "stop": "###", "model_id": 123, "penalty": 0.5, "prompt_template": "...liquid template...", "temperature": 0.7, "max_tokens": 110, "min_words": 45, "deleted": false, "words_to_ignore": [ ...an array of words... ] } ``` This is an example **response** JSON payload: ``` { "id": 123, "name": "A Project Label", "penalty": 0.5, "temperature": 0.4, "stop": "###", "deleted": false, "model_id": 123, "max_tokens": 119, "created_at": "2023-12-20T10:25:31.607727576Z", "modified_at": "2023-12-20T10:25:31.607727576Z", "deleted_at": null, "min_words": 45, "graphql_query": "...graphql query...", "prompt_template": "...prompt template...", "account_id": 123, "words_to_ignore": null } ``` #### Knowledge Graph Account ID[โ€‹](#account-id "Direct link to Knowledge Graph Account ID") The Account ID is used to connect to a Knowledge Graph. To retrive the list of Accounts use the List Accounts API: ``` curl 'https://api.wordlift.io/accounts?limit=2147483647&can_content_generation=true' \ -H 'Accept: application/vnd.wordlift.accounts+json;version=1' \ -H 'Authorization: Bearer ' ``` note The `content_generation` query parameter must be set to `true` in order to retrieve only Accounts that support Content Generation. This is an example response: ``` { "self": "eyJwb3NpdGlvbiI6eyJpZCI6MH0sImNvbmRpdGlvbiI6IkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MjE0NzQ4MzY0NywiZmlsdGVycyI6W3sicGFyYW1ldGVyIjoicGFja2FnZV90eXBlIiwib3BlcmF0b3IiOiJJTiIsInZhbHVlIjpbImJ1c2luZXNzICsgZWNvbW1lcmNlIl19XX0=", "first": "eyJwb3NpdGlvbiI6eyJpZCI6MH0sImNvbmRpdGlvbiI6IkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MjE0NzQ4MzY0NywiZmlsdGVycyI6W3sicGFyYW1ldGVyIjoicGFja2FnZV90eXBlIiwib3BlcmF0b3IiOiJJTiIsInZhbHVlIjpbImJ1c2luZXNzICsgZWNvbW1lcmNlIl19XX0=", "prev": null, "next": null, "last": "eyJwb3NpdGlvbiI6eyJpZCI6OTIyMzM3MjAzNjg1NDc3NTgwN30sImNvbmRpdGlvbiI6IkxFU1NfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MjE0NzQ4MzY0NywiZmlsdGVycyI6W3sicGFyYW1ldGVyIjoicGFja2FnZV90eXBlIiwib3BlcmF0b3IiOiJJTiIsInZhbHVlIjpbImJ1c2luZXNzICsgZWNvbW1lcmNlIl19XX0=", "items": [ { "id": 1, "key": "...wordlift-key...", "url": "https://example.org", "country": "us", "language": "en", "domain_uri": "https://data.example.org/example-dataset/", "ng_dataset_id": "abc123", "wp_admin": null, "wp_json": null, "wp_include_exclude_default": null, "subscription_id": 123, "user_id": 123, "package_type": "business + ecommerce", "diagnostic_plugins": [] }, ... ``` info The `key` contains the WordLift Key that can be used with the [GraphQL API](#graphql-api). #### GraphQL Query[โ€‹](#graphql-api "Direct link to GraphQL Query") The GraphQL Query runs against the Knowledge Graph to query and select the data. This is an example GraphQL Query to retrieve the default Products' data: ``` query { p: products(page:0,rows:10) { id: iri names: strings(name:"schema:name") types: refs(name:"rdf:type") urls: refs(name:"schema:url") material: strings(name:"schema:material") category: strings(name:"schema:category") color: strings(name:"schema:color") audience: resources(name:"schema:audience") { audienceType: strings(name:"schema:audienceType") } offers: resources(name:"schema:offers") { price: strings(name:"schema:price") } } } ``` It is possible to retrieve other GraphQL sample queryies by using the [GraphQL Query presets API](#graphql-presets). ``` curl 'https://api.wordlift.io/graphql' -X POST \ -H 'Accept: application/json' \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json' \ --data-raw '...graphql-query...' ``` tip Before creating a Project it is advised to test the GraphQL query using the GraphQL Query endpoint. caution The GraphQL query requires to use the WordLift Key associated with a Knowledge Graph (Account). The key can be found in the [Dashboard](https://my.wordlift.io) or by calling the [Accounts API](#account-id). #### Model[โ€‹](#model "Direct link to Model") The `model_id` property requires a model ID. To retrieve the available models and their ID the following API is used: ``` curl 'https://api.wordlift.io/content-generation/models?limit=2147483647' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ' ``` This is an example response: ``` { "self": "eyJwb3NpdGlvbiI6eyJpZCI6MH0sImNvbmRpdGlvbiI6IkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MTAsImZpbHRlcnMiOltdfQ==", "first": "eyJwb3NpdGlvbiI6eyJpZCI6MH0sImNvbmRpdGlvbiI6IkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MTAsImZpbHRlcnMiOltdfQ==", "prev": null, "next": "eyJwb3NpdGlvbiI6eyJpZCI6MzZ9LCJjb25kaXRpb24iOiJHUkVBVEVSX1RIQU4iLCJzb3J0IjoiK2lkIiwibGltaXQiOjEwLCJmaWx0ZXJzIjpbXX0=", "last": "eyJwb3NpdGlvbiI6eyJpZCI6OTIyMzM3MjAzNjg1NDc3NTgwN30sImNvbmRpdGlvbiI6IkxFU1NfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MTAsImZpbHRlcnMiOltdfQ==", "items": [ { "id": 7, "name": "ada", "type": "openai" }, { "id": 21, "name": "ada-code-search-code", "type": "openai" }, { "id": 27, "name": "ada-code-search-text", "type": "openai" }, { "id": 37, "name": "ada-search-document", "type": "openai" }, ... ``` info Almost all of the list API use cursor-based navigation. #### Prompt Template[โ€‹](#prompt-template "Direct link to Prompt Template") The Prompt Template is used to dynamically create the Prompts by replacing placeholders with actual values from the selected records. Templates use the [Liquid template language](https://shopify.github.io/liquid/) which allows to build an extensive logic into the template. In order to retrieve the list of available fields it is possible to use the [Fields API](#list-fields). A template can be tested with actual data by calling the [Template Render API](#render-template). A template can be as simple as this: ``` {{names.0}} is a {{types.0}}. The material is {{material.0}} and it can be found in the {{category.0}}. Its color is {{color.0}} and its targeted at {{audience.audienceType.0}}. The price tag is {{offers.price.0}}. More information can be found at {{urls.0}}. ``` Or as complex as this: ``` {%- case genderType -%} {%- when 'MAN' or 'man' -%} {%- assign genderTypeFixed = 'men' -%} {%- when 'WOMAN' or 'woman' -%} {%- assign genderTypeFixed = 'women' -%} {%- when 'UNISEX' -%} {%- assign genderTypeFixed = 'unisex' -%} {%- else -%} {%- assign genderTypeFixed = genderType | downcase -%} {%- endcase -%} {%- case macroAgeRange -%} {%- when 'Children' or 'children' -%} {%- assign genderTypeFixed = 'children' -%} {%- endcase -%} {%- case lensTreatment %} {% when lensTreatment.blank? %} {%- assign caseLensTreatment = false -%} {%- when 'classic' -%} {%- assign caseLensTreatment = false -%} {%- else -%} {%- assign caseLensTreatment = lensTreatment | downcase -%} {%- endcase -%} {%- case isLensPolar %} {% when isLensPolar.blank? %} {%- assign caseIsLensPolar = false -%} {%- when 'False' -%} {%- assign caseIsLensPolar = false -%} {%- else -%} {%- assign caseIsLensPolar = isLensPolar -%} {%- endcase -%} {%- case productGroup %} {%- when 'pptical' -%} {%- assign productGroupFixed = 'eyeglasses' -%} {%- assign lensColor = false -%} {%- assign caseLensTreatment = false -%} {%- assign isLensPolar = false -%} {%- when 'sun' -%} {%- assign productGroupFixed = 'sunglasses' -%} {%- else -%} {%- assign productGroupFixed = productGroup -%} {%- endcase -%} {%- case frameTypeDowncase %} {%- when 'progressive eligible' -%} {%- assign frameTypeDowncase = false -%} {%- when 'full rim' -%} {%- assign frameTypeDowncase = false -%} {%- when 'semi rim' -%} {%- assign frameTypeDowncase = 'semi-rimless' -%} {%- endcase -%} {%- case templeColor %} {%- when frontColor -%} {%- assign templeColor = false -%} {%- else -%} {%- assign templeColor = templeColor | downcase -%} {%- endcase -%} {%- case lensContrastEnhancement %} {% when lensContrastEnhancement.blank? %} {%- assign caseLensContrastEnhancement = false -%} {% when "False" %} {%- assign caseLensContrastEnhancement = false -%} {%- else -%} {%- assign caseLensContrastEnhancement = lensContrastEnhancement -%} {%- endcase -%} {%- case strassPresence %} {% when "False" %} {%- assign caseStrassPresence = false -%} {%- else -%} {%- assign caseStrassPresence = strassPresence -%} {%- case strassPosition %} {% when "not present" %} {%- assign caseStrassPosition = false -%} {%- assign caseStrassPresence = false -%} {%- else -%} {%- assign caseStrassPresence = strassPosition -%} {%- assign caseStrassPosition = strassPresence -%} {%- endcase -%} {%- endcase -%} {%- case bridgeType %} {% when bridgeType.blank? %} {%- assign caseBridgeType = false -%} {%- when 'standard' -%} {%- assign caseBridgeType = false -%} {%- else -%} {%- assign caseBridgeType = bridgeType -%} {%- endcase -%} {%- case specialProjectType %} {% when specialProjectType.blank? %} {%- assign caseSpecialProjectType = false -%} {% when "collaboration" %} {%- assign caseSpecialProjectType = specialProjectType -%} {%- case specialProjectCollection %} {% when specialProjectCollection.blank? %} {%- assign caseSpecialProjectCollection = false -%} {%- else -%} {%- assign caseSpecialProjectCollection = specialProjectCollection -%} {%- endcase -%} {%- else -%} {%- assign caseSpecialProjectType = false -%} {%- endcase -%} {%- case frontMaterial %} {% when frontMaterial.blank? %} {%- assign caseFrontMaterial = false -%} {%- when 'nylon' -%} {%- assign caseFrontMaterial = false -%} {%- when 'injected' -%} {%- assign caseFrontMaterial = false -%} {%- when 'o_matter' -%} {%- assign caseFrontMaterial = 'o matter' -%} {%- else -%} {%- assign caseFrontMaterial = frontMaterial | downcase -%} {%- endcase -%} {%- case frameShape %} {% when frameShape.blank? %} {%- assign caseFrameShape = false -%} {%- else -%} {%- assign caseFrameShape = frameShape | downcase -%} {%- endcase -%} {%- case frontColor %} {% when frontColor.blank? %} {%- assign caseFrontColor = false -%} {%- else -%} {%- assign caseFrontColor = frontColor | downcase -%} {%- endcase -%} {%- case frontColorFinish %} {% when frontColorFinish.blank? %} {%- assign caseFrontColorFinish = false -%} {%- when 'NOT APPLICABLE' -%} {%- assign caseFrontColorFinish = false -%} {%- else -%} {%- assign caseFrontColorFinish = frontColorFinish | downcase -%} {%- endcase -%} {%- case modelName %} {%- when modelName.blank? %} {%- assign caseModelName = false -%} {%- else %} {%- assign caseModelName = modelName | append: ' ' | append: productGroupFixed -%} {%- endcase -%} {%- if caseModelName == false %} {%- if modelCodeDisplay = blank %} {%- assign caseModelName = modelCodeDisplay | append: ' ' | append: productGroupFixed -%} {%- endif %} {%- endif -%} {% if caseModelName %} {%- assign brandAndModelName = brand | append: ' ' | append: modelName -%} {{ brandAndModelName }} is a pair of {{ productGroupFixed }}. {{ modelNameFix }} {% if caseSpecialProjectCollection %}These {{ productGroupFixed }} are part of the special collaboration with {{ caseSpecialProjectCollection }}.{% endif %} {%- if modelName -%} {{ brandAndModelName }} are designed for {{ genderTypeFixed }}.{% endif %} {% if caseLensTreatment %}The lens treatment is {{ caseLensTreatment }}.{% endif %} {% if lensColor %}The lens color facet is {{ lensColor | downcase }}.{% endif %} {% if caseIsLensPolar %}The lenses are polarized.{% endif %} {% if templeColor %}The color of the temples is {{ templeColor }}.{% endif %} {% if caseFrontMaterial %}The frame material is {{ caseFrontMaterial }}.{% endif %} {% if caseFrameShape %}The shape is {{ caseFrameShape }}.{% endif %} {% if caseFrontColorFinish %}The frame color finish is {{ frontColorFinish }}.{% endif %} {% if caseFrontColor %}The frame color is {{ caseFrontColor }}.{% endif %} {% if caseBridgeType %}It features a {{ caseBridgeType | downcase }}.{% endif %} {% if frameTypeDowncase %}The type of the frame is {{ frameTypeDowncase | downcase }}.{% endif %} {% if caseLensContrastEnhancement %}This pair of sunglasses feature lens contrast enhancements.{% endif %} {% if caseStrassPosition %}There are strass on these {{ productGroupFixed }}.{% endif %} {% if caseStrassPresence %}These sunglasses feature strass on {{ strassPosition | downcase }}.{% endif %} {% if frameFoldability %}It is foldable.{% endif %} #### {% endif %} ``` ## Run the Project[โ€‹](#run-the-project "Direct link to Run the Project") ### Load the KG Data into the Project's Records[โ€‹](#load-the-kg-data-into-the-projects-records "Direct link to Load the KG Data into the Project's Records") This will finally load the data from the Knowledge Graph based on the GraphQL query into the Project's records. info This step is required in order to create the completions. ``` curl 'https://api.wordlift.io/content-generation/content-generations//syncs' -X POST \ -H 'Accept: */*' \ -H 'Authorization: Bearer ' ``` If successful, the server will return a 200 OK with no content. ### List Completions[โ€‹](#list-completions "Direct link to List Completions") Once the Records have been imported, it is possible to access them along with their completion. This endpoint returns a JSONL formatted response which allows client to read the response as it loads without waiting for all the completions to be generated. ``` curl 'https://api.wordlift.io/content-generation/content-generations//records-sse' \ -H 'Accept: */*' \ -H 'Authorization: Bearer ' ``` This is an example **response**, note that it is a [JSONL (JSON Lines)](https://jsonlines.org/) response, that is one full parsable JSON per line: ``` { "id": 1, "prompt": "Acme Glasses is a pair of sunglasses. The lens treatment is solid color. The lens color facet is grey. The color of the temples is havana. The frame material is acetate. The shape is square. The frame color finish is polished. The frame color is black. ####", "completion": "Elevate your fashion while optimizing utility with Acme Glasses. These square-shaped sunglasses feature a polished black acetate frame that is both durable and stylish. The grey solid color lenses add a touch of sophistication, while the havana temples provide a pop of color. The perfect accessory for those who value both design and functionality.", "data": { "id": "https://data.example.org/example-dataset/product_sku", "name": "product_sku", "type": "http://schema.org/Product", "brand": "Acme Glasses", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "grey", "productStyleName": null, "channelAttributes": [ { "channel": "ABC - Abc", "styleName": "MyStyleName" }, { "channel": "ABC - Abc", "styleName": "MyStyleName" } ] }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": false, "has_upvote": false, "modified_at": "2023-12-20T10:40:16.817789417Z", "validated_at": "2023-12-20T10:40:16.817448914Z", "status": "valid" } { "id": 2, "prompt": "Acme Glasses is a pair of sunglasses. The lens treatment is solid color. The lens color facet is grey. The color of the temples is havana. The frame material is acetate. The shape is square. The frame color finish is polished. The frame color is black. ####", "completion": "Elevate your fashion while optimizing utility with Acme Glasses. These square-shaped sunglasses feature a polished black acetate frame that is both durable and stylish. The grey solid color lenses add a touch of sophistication, while the havana temples provide a pop of color. The perfect accessory for those who value both design and functionality.", "data": { "id": "https://data.example.org/example-dataset/product_sku", "name": "product_sku", "type": "http://schema.org/Product", "brand": "Acme Glasses", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "grey", "productStyleName": null, "channelAttributes": [ { "channel": "ABC - Abc", "styleName": "MyStyleName" }, { "channel": "ABC - Abc", "styleName": "MyStyleName" } ] }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": false, "has_upvote": false, "modified_at": "2023-12-20T10:40:16.817789417Z", "validated_at": "2023-12-20T10:40:16.817448914Z", "status": "valid" } { "id": 3, "prompt": "Acme Glasses is a pair of sunglasses. The lens treatment is solid color. The lens color facet is grey. The color of the temples is havana. The frame material is acetate. The shape is square. The frame color finish is polished. The frame color is black. ####", "completion": "Elevate your fashion while optimizing utility with Acme Glasses. These square-shaped sunglasses feature a polished black acetate frame that is both durable and stylish. The grey solid color lenses add a touch of sophistication, while the havana temples provide a pop of color. The perfect accessory for those who value both design and functionality.", "data": { "id": "https://data.example.org/example-dataset/product_sku", "name": "product_sku", "type": "http://schema.org/Product", "brand": "Acme Glasses", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "grey", "productStyleName": null, "channelAttributes": [ { "channel": "ABC - Abc", "styleName": "MyStyleName" }, { "channel": "ABC - Abc", "styleName": "MyStyleName" } ] }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": false, "has_upvote": false, "modified_at": "2023-12-20T10:40:16.817789417Z", "validated_at": "2023-12-20T10:40:16.817448914Z", "status": "valid" } { "id": 4, "prompt": "Acme Glasses is a pair of sunglasses. The lens treatment is solid color. The lens color facet is grey. The color of the temples is havana. The frame material is acetate. The shape is square. The frame color finish is polished. The frame color is black. ####", "completion": "Elevate your fashion while optimizing utility with Acme Glasses. These square-shaped sunglasses feature a polished black acetate frame that is both durable and stylish. The grey solid color lenses add a touch of sophistication, while the havana temples provide a pop of color. The perfect accessory for those who value both design and functionality.", "data": { "id": "https://data.example.org/example-dataset/product_sku", "name": "product_sku", "type": "http://schema.org/Product", "brand": "Acme Glasses", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "grey", "productStyleName": null, "channelAttributes": [ { "channel": "ABC - Abc", "styleName": "MyStyleName" }, { "channel": "ABC - Abc", "styleName": "MyStyleName" } ] }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": false, "has_upvote": false, "modified_at": "2023-12-20T10:40:16.817789417Z", "validated_at": "2023-12-20T10:40:16.817448914Z", "status": "valid" } ``` info The API uses JSONL (JSON Lines) in order to provide fast access to the completions results as they're generated. ### Get Stats[โ€‹](#get-stats "Direct link to Get Stats") Once the Project runs, the completions are generated and they're validated against the [Rules](#rules). For each completion a state is assigned: error, warning, valid and accepted. The Stats endpoint will provide a summary of these states for the Project: ``` curl 'https://api.wordlift.io/content-generation/content-generations//stats' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ' ``` This is an example **response**: ``` { "total": 4, "accepted": 0, "valid": 0, "warnings": 4, "errors": 4 } ``` This is an explation of the properties in the response: | Property | Description | | -------- | -------------------------------------------------------------------- | | total | The total number of records | | accepted | The number of accepted records | | valid | The number of valid records, i.e. records without warnings or errors | | warnings | The number of records with warnings (but no errors) | | errors | The number of records with errors | ### Regenerate a Record Completion[โ€‹](#regenerate-record-completion "Direct link to Regenerate a Record Completion") To regenerate a Completion, just update it by setting the `completion` to `null`. The API will then regenerate and return the Record with the new Completion. ``` curl 'https://api.wordlift.io/content-generation/content-generations/608/records/253191' -X PUT \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '...json payload...' ``` Example JSON Payload, note the `completion` set to `null`: ``` { "id": 253191, "prompt": "Acme Glasses is a pair of sunglasses. Las Vegas are designed for men. The lens treatment is mirror. The lens color facet is gray silver mirror. The lenses are polarized. The shape is rectangle. The frame color finish is matte. The frame color is matte black. This pair of sunglasses feature lens contrast enhancements. ####", "completion": null, "data": { "id": "https://data.example.org/example-dataset/gtin", "name": "gtin", "type": "http://schema.org/Product", "brand": "Brand", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "gray silver mirror", "modelName": "Las Vegas", "bridgeType": "standard", "frameShape": "rectangle", "frontColor": "matte black", "genderType": "man", "maskShield": "False", "roXability": "True", "isLensPolar": "True", "nosepadType": "plastic standard", "templeColor": "matte black", "frameFitting": "wide", "isLensMirror": "True", "materialType": "zpfn", "productGroup": "sun", "frontMaterial": "injected", "lensBaseCurve": "base 8 decentered", "lensTreatment": "mirror", "macroAgeRange": "adult", "isLensGradient": "False", "lensProtection": null, "strassPosition": "not present", "strassPresence": "False", "frameFoldability": null, "frontColorFinish": "matte", "modelCodeDisplay": "123", "productStyleName": null, "channelAttributes": [ { "channel": "AB - ABC", "styleName": "MyStyleName" }, { "channel": "AB - ABC", "styleName": "MyStyleName" } ], "isLensPhotochromic": "False", "productFamilyModel": "Las Vegas", "specialProjectType": "collaboration", "ageGroupEnumeration": null, "eyewearLensMaterial": "polycarbonate", "progressiveFriendly": "classic", "eyewearTempleMaterial": "injected", "specialProjectSponsor": null, "isLensBlueLightFiltered": "False", "lensAssemblyTypeOnFrame": "full rim", "lensContrastEnhancement": "True", "specialProjectCollection": null, "specialProjectFeaturesFlag": "True" }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": false, "has_upvote": false, "modified_at": "2023-12-19T09:26:03.605418090Z", "validated_at": "2023-12-19T09:26:03.605287189Z", "status": "valid" } ``` ### Get a Record Validation Report[โ€‹](#get-a-record-validation-report "Direct link to Get a Record Validation Report") Get a Record validation report with details about the Rules that failed: ``` curl 'https://api.wordlift.io/content-generation/content-generations//records//validations' -X POST \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ' ``` Calling this API will force the platform to revalidate the completion against the configured rules. The response format is the same as the [Regenerate Completion API](#regenerate-record-completion). ### Bulk Operations on Record: Regenerate Completions[โ€‹](#bulk-operations-on-record-regenerate-completions "Direct link to Bulk Operations on Record: Regenerate Completions") It is also possible to regenerate completions in bulk: ``` curl 'https://api.wordlift.io/content-generation/content-generations//records-collection' -X PUT \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '[...json payload 1...,...json payload 2...,...,...json payload n....]' ``` ### Accept a Record[โ€‹](#accept-a-record "Direct link to Accept a Record") To mark a Record as Accepted, set `is_accepted` to `true`: ``` curl 'https://api.wordlift.io/content-generation/content-generations//records/' -X PUT \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '...json payload...' ``` Example JSON Payload: ``` { "prompt": "Acme Glasses is a pair of sunglasses. Las Vegas are designed for men. The lens treatment is mirror. The lens color facet is gray silver mirror. The lenses are polarized. The shape is rectangle. The frame color finish is matte. The frame color is matte black. This pair of sunglasses feature lens contrast enhancements. ####", "completion": "...example completion...", "data": { "id": "https://data.example.org/example-dataset/gtin", "name": "gtin", "type": "http://schema.org/Product", "brand": "Brand", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "gray silver mirror", "modelName": "Las Vegas", "bridgeType": "standard", "frameShape": "rectangle", "frontColor": "matte black", "genderType": "man", "maskShield": "False", "roXability": "True", "isLensPolar": "True", "nosepadType": "plastic standard", "templeColor": "matte black", "frameFitting": "wide", "isLensMirror": "True", "materialType": "zpfn", "productGroup": "sun", "frontMaterial": "injected", "lensBaseCurve": "base 8 decentered", "lensTreatment": "mirror", "macroAgeRange": "adult", "isLensGradient": "False", "lensProtection": null, "strassPosition": "not present", "strassPresence": "False", "frameFoldability": null, "frontColorFinish": "matte", "modelCodeDisplay": "123", "productStyleName": null, "channelAttributes": [ { "channel": "AB - ABC", "styleName": "MyStyleName" }, { "channel": "AB - ABC", "styleName": "MyStyleName" } ], "isLensPhotochromic": "False", "productFamilyModel": "Las Vegas", "specialProjectType": "collaboration", "ageGroupEnumeration": null, "eyewearLensMaterial": "polycarbonate", "progressiveFriendly": "classic", "eyewearTempleMaterial": "injected", "specialProjectSponsor": null, "isLensBlueLightFiltered": "False", "lensAssemblyTypeOnFrame": "full rim", "lensContrastEnhancement": "True", "specialProjectCollection": null, "specialProjectFeaturesFlag": "True" }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": true, "has_upvote": false, "modified_at": "2023-12-19T09:26:03.605418090Z", "validated_at": "2023-12-19T09:26:03.605287189Z", "status": "valid" } ``` ### Upvote a Completion[โ€‹](#upvote-a-completion "Direct link to Upvote a Completion") ``` curl 'https://api.wordlift.io/content-generation/content-generations//records/' -X PUT \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '...json payload...' ``` Example JSON Payload: ``` { "prompt": "Acme Glasses is a pair of sunglasses. Las Vegas are designed for men. The lens treatment is mirror. The lens color facet is gray silver mirror. The lenses are polarized. The shape is rectangle. The frame color finish is matte. The frame color is matte black. This pair of sunglasses feature lens contrast enhancements. ####", "completion": "...example completion...", "data": { "id": "https://data.example.org/example-dataset/gtin", "name": "gtin", "type": "http://schema.org/Product", "brand": "Brand", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "gray silver mirror", "modelName": "Las Vegas", "bridgeType": "standard", "frameShape": "rectangle", "frontColor": "matte black", "genderType": "man", "maskShield": "False", "roXability": "True", "isLensPolar": "True", "nosepadType": "plastic standard", "templeColor": "matte black", "frameFitting": "wide", "isLensMirror": "True", "materialType": "zpfn", "productGroup": "sun", "frontMaterial": "injected", "lensBaseCurve": "base 8 decentered", "lensTreatment": "mirror", "macroAgeRange": "adult", "isLensGradient": "False", "lensProtection": null, "strassPosition": "not present", "strassPresence": "False", "frameFoldability": null, "frontColorFinish": "matte", "modelCodeDisplay": "123", "productStyleName": null, "channelAttributes": [ { "channel": "AB - ABC", "styleName": "MyStyleName" }, { "channel": "AB - ABC", "styleName": "MyStyleName" } ], "isLensPhotochromic": "False", "productFamilyModel": "Las Vegas", "specialProjectType": "collaboration", "ageGroupEnumeration": null, "eyewearLensMaterial": "polycarbonate", "progressiveFriendly": "classic", "eyewearTempleMaterial": "injected", "specialProjectSponsor": null, "isLensBlueLightFiltered": "False", "lensAssemblyTypeOnFrame": "full rim", "lensContrastEnhancement": "True", "specialProjectCollection": null, "specialProjectFeaturesFlag": "True" }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": true, "has_upvote": true, "modified_at": "2023-12-19T09:26:03.605418090Z", "validated_at": "2023-12-19T09:26:03.605287189Z", "status": "valid" } ``` ### Manually set and accept a Completion[โ€‹](#manually-set-and-accept-a-completion "Direct link to Manually set and accept a Completion") It is also possible to manually update and accept a completion by setting the `completion` property to the desired value and `is_accepted` to `true`: ``` curl 'https://api.wordlift.io/content-generation/content-generations//records/' -X PUT \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '...json payload...' ``` Example JSON Payload: ``` { "prompt": "Acme Glasses is a pair of sunglasses. Las Vegas are designed for men. The lens treatment is mirror. The lens color facet is gray silver mirror. The lenses are polarized. The shape is rectangle. The frame color finish is matte. The frame color is matte black. This pair of sunglasses feature lens contrast enhancements. ####", "completion": "...manually set completion...", "data": { "id": "https://data.example.org/example-dataset/gtin", "name": "gtin", "type": "http://schema.org/Product", "brand": "Brand", "release": null, "category": "Optical", "modelFit": "high bridge fit", "faceShape": "Oval-Round", "frameType": "full rim", "lensColor": "gray silver mirror", "modelName": "Las Vegas", "bridgeType": "standard", "frameShape": "rectangle", "frontColor": "matte black", "genderType": "man", "maskShield": "False", "roXability": "True", "isLensPolar": "True", "nosepadType": "plastic standard", "templeColor": "matte black", "frameFitting": "wide", "isLensMirror": "True", "materialType": "zpfn", "productGroup": "sun", "frontMaterial": "injected", "lensBaseCurve": "base 8 decentered", "lensTreatment": "mirror", "macroAgeRange": "adult", "isLensGradient": "False", "lensProtection": null, "strassPosition": "not present", "strassPresence": "False", "frameFoldability": null, "frontColorFinish": "matte", "modelCodeDisplay": "123", "productStyleName": null, "channelAttributes": [ { "channel": "AB - ABC", "styleName": "MyStyleName" }, { "channel": "AB - ABC", "styleName": "MyStyleName" } ], "isLensPhotochromic": "False", "productFamilyModel": "Las Vegas", "specialProjectType": "collaboration", "ageGroupEnumeration": null, "eyewearLensMaterial": "polycarbonate", "progressiveFriendly": "classic", "eyewearTempleMaterial": "injected", "specialProjectSponsor": null, "isLensBlueLightFiltered": "False", "lensAssemblyTypeOnFrame": "full rim", "lensContrastEnhancement": "True", "specialProjectCollection": null, "specialProjectFeaturesFlag": "True" }, "errors": null, "warnings": null, "content_generation_id": 123, "not_in_prompt_words": [], "is_accepted": true, "has_upvote": false, "modified_at": "2023-12-19T09:26:03.605418090Z", "validated_at": "2023-12-19T09:26:03.605287189Z", "status": "valid" } ``` ### Bulk Operations[โ€‹](#bulk-operations "Direct link to Bulk Operations") It is always possible to combine several updates in one call: ``` curl 'https://api.wordlift.io/content-generation/content-generations//records-collection' -X PUT \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '[...json payload 1...,...json payload 2...,...,...json payload n...]' ``` ### Export[โ€‹](#export "Direct link to Export") Finally it is possible to export the Records: ``` curl https://api.wordlift.io/content-generation/content-generations//records.tsv \ -H 'Authorization: Bearer ' \ ``` This will export a tabulated file with all the Records. ## Rules[โ€‹](#rules "Direct link to Rules") ### List Rules[โ€‹](#list-rules "Direct link to List Rules") List the Rules connected to a Project: ``` curl 'https://api.wordlift.io/content-generation/content-generations//rules?limit=2147483647' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ' ``` ### Create a Field Rule[โ€‹](#create-field-rule "Direct link to Create a Field Rule") Create a Field Rule for the Project: ``` curl 'https://api.wordlift.io/content-generation/content-generations//rules' -X POST \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '{"name":"Frame Material is Required","level":"REQUIRED","what_operand_lhs":"EVERYWHERE","what_operator":"CONTAINS","what_operand_rhs":"{{frontMaterial}}","when_operand_lhs":"frontMaterial","when_operator":"NOT_EQUALS","when_operand_rhs":"plastic,nylon,injected,propionate","fixes":[{"type":"OPEN_AI","what":"As {{brand}} content editor, read the following sentence and rewrite it by adding a reference to frame material being {{frontMaterial}}: \"{{completion}}\"."}],"type":"field"}' ``` This is an example **request** JSON payload: ``` { "name": "Frame Material is Required", "level": "REQUIRED", "what_operand_lhs": "EVERYWHERE", "what_operator": "CONTAINS", "what_operand_rhs": "{{frontMaterial}}", "when_operand_lhs": "frontMaterial", "when_operator": "NOT_EQUALS", "when_operand_rhs": "plastic,nylon,injected,propionate", "fixes": [ { "type": "OPEN_AI", "what": "As {{brand}} content editor, read the following sentence and rewrite it by adding a reference to frame material being {{frontMaterial}}: \"{{completion}}\"." } ], "type": "field" } ``` This is an example **response** JSON: ``` { "id": 123, "name": "Frame Material is Required", "level": "REQUIRED", "type": "field", "fixes": [ { "type": "OPEN_AI", "what": "As {{brand}} content editor, read the following sentence and rewrite it by adding a reference to frame material being {{frontMaterial}}: \"{{completion}}\".", "with": null } ], "description": "", "content_generation_id": 123, "what_operand_lhs": "EVERYWHERE", "what_operator": "CONTAINS", "what_operand_rhs": "{{frontMaterial}}", "when_operand_lhs": "frontMaterial", "when_operator": "NOT_EQUALS", "when_operand_rhs": "plastic,nylon,injected,propionate", "created_at": "2023-12-20T10:37:32.927042427Z", "modified_at": "2023-12-20T10:37:32.927042427Z" } ``` ### Create a Word Rule[โ€‹](#create-a-word-rule "Direct link to Create a Word Rule") Create a Word Rule for the Project: ``` curl 'https://api.wordlift.io/content-generation/content-generations//rules' -X POST \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '{"name":"Logo words are not present","level":"RECOMMENDED","what_operand_lhs":"EVERYWHERE","what_operator":"DOESNT_CONTAIN","what_operand_rhs":"values:logo,signature,embleme,branding","when_operand_lhs":"","when_operator":"ALWAYS","when_operand_rhs":"","fixes":[{"type":"OPEN_AI","what":"As {{brand}} content editor, read the following sentence and rewrite it by removing any reference to the {{value}}: \"{{completion}}\""}],"type":"word"}' ``` For the example **request** and **response** payloads see the [Create Field Rule](#create-field-rule). ## Other useful API[โ€‹](#other-useful-api "Direct link to Other useful API") ### List Projects[โ€‹](#list-projects "Direct link to List Projects") To retrieve the list of existing projects, use the following request: ``` curl 'https://api.wordlift.io/content-generation/content-generations?limit=100000&deleted=false' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ' ``` The following query parameter are accepted: | Query Parameter | Description | Values | | --------------- | -------------------------------------------- | ---------- | | limit | The maximum number of results | | | deleted | When false deleted projects are not returned | true/false | ### Get an existing Project[โ€‹](#get-an-existing-project "Direct link to Get an existing Project") A Content Generation Project contains the required configuration. Each Content Generation Project is assigned a unique ID. It is possible to retrieve the configuration for a Project by using the following request: ``` curl "https://api.wordlift.io/content-generation/content-generations/123" \ -H 'Authorization: Bearer ' ``` This is an example response: ``` { "id": 123, "name": "My Project 1", "penalty": 0.7, "temperature": 0.6, "stop": "###", "deleted": false, "model_id": 162, "max_tokens": 110, "created_at": "2023-12-15T16:22:19.095204Z", "modified_at": "2023-12-15T16:22:19.095204Z", "deleted_at": null, "min_words": 45, "graphql_query": "...a graphql query...", "prompt_template": "...a liquid template...", "account_id": 123, "words_to_ignore": [ ...array of words to ignore... ] } ``` ### List GraphQL Presets[โ€‹](#graphql-presets "Direct link to List GraphQL Presets") The platform can provide some GraphQL Presets for common scenarios: ``` curl 'https://api.wordlift.io/content-generation/graphql-query-presets?limit=2147483647' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ' ``` This is an example response: ``` { "self": "eyJwb3NpdGlvbiI6eyJpZCI6MH0sImNvbmRpdGlvbiI6IkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MjE0NzQ4MzY0NywiZmlsdGVycyI6W119", "first": "eyJwb3NpdGlvbiI6eyJpZCI6MH0sImNvbmRpdGlvbiI6IkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MjE0NzQ4MzY0NywiZmlsdGVycyI6W119", "prev": null, "next": null, "last": "eyJwb3NpdGlvbiI6eyJpZCI6OTIyMzM3MjAzNjg1NDc3NTgwN30sImNvbmRpdGlvbiI6IkxFU1NfVEhBTl9PUl9FUVVBTF9UTyIsInNvcnQiOiIraWQiLCJsaW1pdCI6MjE0NzQ4MzY0NywiZmlsdGVycyI6W119", "items": [ { "label": "Entities", "body": "query {\n entities(page:0,rows:10) {\n id: iri\n names: strings(name:\"schema:name\")\n headlines: strings(name:\"schema:headline\")\n types: refs(name:\"rdf:type\")\n urls: refs(name:\"schema:url\")\n references: refs(name:\"dct:references\")\n mentions: resources(name:\"schema:mentions\") {\n names: strings(name:\"schema:name\")\n }\n }\n }", "id": 1 }, { "label": "Products", "body": "query {\n p: products(page:0,rows:10) {\n id: iri\n names: strings(name:\"schema:name\")\n types: refs(name:\"rdf:type\")\n urls: refs(name:\"schema:url\")\n material: strings(name:\"schema:material\")\n category: strings(name:\"schema:category\")\n color: strings(name:\"schema:color\")\n audience: resources(name:\"schema:audience\") {\n audienceType: strings(name:\"schema:audienceType\")\n }\n offers: resources(name:\"schema:offers\") {\n price: strings(name:\"schema:price\")\n }\n }\n }", "id": 2 } ] } ``` ### List Property Fields[โ€‹](#list-fields "Direct link to List Property Fields") By providing a GraphQL Query, this API will return the available fields in the response. The list of fields can be used to determine the placeholders to use in the Liquid template: ``` curl 'https://api.wordlift.io/content-generation/fields' -X POST \ -H 'Accept: application/json' \ -H 'Content-Type: application/graphql' \ -H 'Authorization: Bearer ' \ --data-raw $'query {\nproducts(\nquery: {\n nameConstraint: {\n in: [\n"0AR6123B__30028E","0AR8107__5017R5","0AR8110__501787","06S9034__903417","06S9002__900211","06E000184__1330L1","06E000184__4920V1","06E000185__1330L1","06S9034__903413","06E000185__1330R1","0AR8118__508973","0AR8118__504281","06E000189__1330L1","06E000190__1330L1","06E000192__4100V1","0AR8120__500187","0AR8120__5026_2","0AR8121__576287","06S9035__903502","06S9035__903507","0AR8121__500187","06S9035__903510","06S9036__903607","0AN3079__706_81","0AN3080__696_6G","06S9003__900309","06S9036__903606","0AN3080__706_81","06E000212__1330L1","0AR8123__500187","0AN3081__501_87","06E000212__1580B1","06S9036__903624" \n ] }\n })\n{\n id: iri\n names: strings(name:"schema:name")\n types: refs(name:"rdf:type")\n urls: refs(name:"schema:url")\n material: strings(name:"schema:material")\n category: strings(name:"schema:category")\n color: strings(name:"schema:color")\n audience: resources(name:"schema:audience") {\n audienceType: strings(name:"schema:audienceType")\n }\n offers: resources(name:"schema:offers") {\n price: strings(name:"schema:price")\n }\n }\n }' ``` Example response: ``` [ { "name": "id" }, { "name": "names" }, { "name": "types" }, { "name": "urls" }, { "name": "material" }, { "name": "category" }, { "name": "color" }, { "name": "audience.audienceType" }, { "name": "offers.price" } ] ``` ### GraphQL Queries and Pagination[โ€‹](#graphql-queries-and-pagination "Direct link to GraphQL Queries and Pagination") Following are a couple of GraphQL sample queries using pagination (`page` and `rows` parameters). danger On large datasets, GraphQL queries may take time to load and may timeout. In this case we recommend to use pagination like in the following examples. Page 0: ``` curl 'https://api.wordlift.io/graphql' -X POST \ -H 'Accept: application/json' \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json' \ --data-raw '{"variables":{},"query":"{\n products(\n query: {nameConstraint: {in: [\"0AR6123B__30028E\", \"0AR8107__5017R5\", \"0AR8110__501787\", \"06S9034__903417\"]}}\n page: 0\n rows: 1000\n ) {\n id: iri\n brand: string(name: \"schema:brand\")\n name: string(name: \"schema:name\")\n type: string(name: \"rdf:type\")\n category: string(name: \"eyewear:category\")\n productGroup: string(name: \"eyewear:eyewearProductGroup\")\n bridgeType: string(name: \"eyewear:bridgeType\")\n frameShape: string(name: \"eyewear:frameShape\")\n faceShape: string(name: \"eyewear:faceShape\")\n frameFitting: string(name: \"eyewear:frameFitting\")\n frontColorFinish: string(name: \"eyewear:frontColorFinish\")\n macroAgeRange: string(name: \"eyewear:macroAgeRange\")\n ageGroupEnumeration: string(name: \"eyewear:ageGroupEnumeration\")\n lensAssemblyTypeOnFrame: string(name: \"eyewear:lensAssemblyTypeOnFrame\")\n frameType: string(name: \"eyewear:frameType\")\n eyewearLensMaterial: string(name: \"eyewear:eyewearLensMaterial\")\n eyewearTempleMaterial: string(name: \"eyewear:eyewearTempleMaterial\")\n nosepadType: string(name: \"eyewear:nosepadType\")\n release: string(name: \"eyewear:release\")\n specialProjectCollection: string(name: \"eyewear:specialProjectCollection\")\n specialProjectSponsor: string(name: \"eyewear:specialProjectSponsor\")\n specialProjectType: string(name: \"eyewear:specialProjectType\")\n specialProjectFeaturesFlag: string(name: \"eyewear:specialProjectFeaturesFlag\")\n lensTreatment: string(name: \"eyewear:lensTreatment\")\n lensColor: string(name: \"eyewear:lensColor\")\n productStyleName: string(name: \"eyewear:productStyleName\")\n productFamilyModel: string(name: \"eyewear:productFamilyModel\")\n frameFoldability: string(name: \"eyewear:frameFoldability\")\n roXability: string(name: \"eyewear:roXability\")\n isLensPhotochromic: string(name: \"eyewear:isLensPhotochromic\")\n isLensPolar: string(name: \"eyewear:isLensPolar\")\n modelCodeDisplay: string(name: \"eyewear:modelCodeDisplay\")\n progressiveFriendly: string(name: \"eyewear:progressiveFriendly\")\n materialType: string(name: \"eyewear:materialType\")\n maskShield: string(name: \"eyewear:maskShield\")\n strassPresence: string(name: \"eyewear:strassPresence\")\n strassPosition: string(name: \"eyewear:strassPosition\")\n lensContrastEnhancement: string(name: \"eyewear:lensContrastEnhancement\")\n lensBaseCurve: string(name: \"eyewear:lensBaseCurve\")\n isLensGradient: string(name: \"eyewear:isLensGradient\")\n isLensMirror: string(name: \"eyewear:isLensMirror\")\n modelFit: string(name: \"eyewear:modelFit\")\n modelName: string(name: \"eyewear:modelName\")\n frontMaterial: string(name: \"eyewear:frontMaterial\")\n lensProtection: string(name: \"eyewear:lensProtection\")\n templeColor: string(name: \"eyewear:templeColor\")\n frontColor: string(name: \"eyewear:frontColor\")\n isLensBlueLightFiltered: string(name: \"eyewear:isLensBlueLightFiltered\")\n genderType: string(name: \"eyewear:genderType\")\n lensProtection: string(name: \"eyewear:lensProtection\")\n channelAttributes: resources(name: \"eyewear:channelAttributes\") {\n channel: string(name: \"eyewear:channel\")\n styleName: string(name: \"eyewear:styleName\")\n __typename\n }\n __typename\n }\n}"}' ``` Page 1: ``` curl 'https://api.wordlift.io/graphql' -X POST \ -H 'Accept: application/json' \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json' \ --data-raw '{"variables":{},"query":"{\n products(\n query: {nameConstraint: {in: [\"0AR6123B__30028E\", \"0AR8107__5017R5\", \"0AR8110__501787\", \"06S9034__903417\"]}}\n page: 1\n rows: 1000\n ) {\n id: iri\n brand: string(name: \"schema:brand\")\n name: string(name: \"schema:name\")\n type: string(name: \"rdf:type\")\n category: string(name: \"eyewear:category\")\n productGroup: string(name: \"eyewear:eyewearProductGroup\")\n bridgeType: string(name: \"eyewear:bridgeType\")\n frameShape: string(name: \"eyewear:frameShape\")\n faceShape: string(name: \"eyewear:faceShape\")\n frameFitting: string(name: \"eyewear:frameFitting\")\n frontColorFinish: string(name: \"eyewear:frontColorFinish\")\n macroAgeRange: string(name: \"eyewear:macroAgeRange\")\n ageGroupEnumeration: string(name: \"eyewear:ageGroupEnumeration\")\n lensAssemblyTypeOnFrame: string(name: \"eyewear:lensAssemblyTypeOnFrame\")\n frameType: string(name: \"eyewear:frameType\")\n eyewearLensMaterial: string(name: \"eyewear:eyewearLensMaterial\")\n eyewearTempleMaterial: string(name: \"eyewear:eyewearTempleMaterial\")\n nosepadType: string(name: \"eyewear:nosepadType\")\n release: string(name: \"eyewear:release\")\n specialProjectCollection: string(name: \"eyewear:specialProjectCollection\")\n specialProjectSponsor: string(name: \"eyewear:specialProjectSponsor\")\n specialProjectType: string(name: \"eyewear:specialProjectType\")\n specialProjectFeaturesFlag: string(name: \"eyewear:specialProjectFeaturesFlag\")\n lensTreatment: string(name: \"eyewear:lensTreatment\")\n lensColor: string(name: \"eyewear:lensColor\")\n productStyleName: string(name: \"eyewear:productStyleName\")\n productFamilyModel: string(name: \"eyewear:productFamilyModel\")\n frameFoldability: string(name: \"eyewear:frameFoldability\")\n roXability: string(name: \"eyewear:roXability\")\n isLensPhotochromic: string(name: \"eyewear:isLensPhotochromic\")\n isLensPolar: string(name: \"eyewear:isLensPolar\")\n modelCodeDisplay: string(name: \"eyewear:modelCodeDisplay\")\n progressiveFriendly: string(name: \"eyewear:progressiveFriendly\")\n materialType: string(name: \"eyewear:materialType\")\n maskShield: string(name: \"eyewear:maskShield\")\n strassPresence: string(name: \"eyewear:strassPresence\")\n strassPosition: string(name: \"eyewear:strassPosition\")\n lensContrastEnhancement: string(name: \"eyewear:lensContrastEnhancement\")\n lensBaseCurve: string(name: \"eyewear:lensBaseCurve\")\n isLensGradient: string(name: \"eyewear:isLensGradient\")\n isLensMirror: string(name: \"eyewear:isLensMirror\")\n modelFit: string(name: \"eyewear:modelFit\")\n modelName: string(name: \"eyewear:modelName\")\n frontMaterial: string(name: \"eyewear:frontMaterial\")\n lensProtection: string(name: \"eyewear:lensProtection\")\n templeColor: string(name: \"eyewear:templeColor\")\n frontColor: string(name: \"eyewear:frontColor\")\n isLensBlueLightFiltered: string(name: \"eyewear:isLensBlueLightFiltered\")\n genderType: string(name: \"eyewear:genderType\")\n lensProtection: string(name: \"eyewear:lensProtection\")\n channelAttributes: resources(name: \"eyewear:channelAttributes\") {\n channel: string(name: \"eyewear:channel\")\n styleName: string(name: \"eyewear:styleName\")\n __typename\n }\n __typename\n }\n}"}' ``` ### Render Template[โ€‹](#render-template "Direct link to Render Template") When writing a Liquid template, it is helpful to test it with actual data. By providig a `template` and a `data` map, this API will return the rendered prompt: ``` curl 'https://api.wordlift.io/content-generation/content-generations/renders' -X POST \ -H 'Accept: text/plain' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw $'...json payload...' ``` This is the example **request** JSON payload: ``` { "template": "...liquid template...", "data": { "__typename": "Entity", "id": "https://data.example.org/example-dataset/gtin", "brand": "MyEyeglasses", "name": "ProductCode", "type": "http://schema.org/Product", "category": "Optical", "productGroup": "sun", "bridgeType": "standard", "frameShape": "rectangle", "faceShape": "Oval-Round", "frameFitting": "wide", "frontColorFinish": "matte", "macroAgeRange": "adult", "ageGroupEnumeration": null, "lensAssemblyTypeOnFrame": "full rim", "frameType": "full rim", "eyewearLensMaterial": "polycarbonate", "eyewearTempleMaterial": "injected", "nosepadType": "plastic standard", "release": null, "specialProjectCollection": null, "specialProjectSponsor": null, "specialProjectType": "collaboration", "specialProjectFeaturesFlag": "True", "lensTreatment": "mirror", "lensColor": "gray silver mirror", "productStyleName": null, "productFamilyModel": "Las Vegas", "frameFoldability": null, "roXability": "True", "isLensPhotochromic": "False", "isLensPolar": "True", "modelCodeDisplay": "123", "progressiveFriendly": "classic", "materialType": "zpfn", "maskShield": "False", "strassPresence": "False", "strassPosition": "not present", "lensContrastEnhancement": "True", "lensBaseCurve": "base 8 decentered", "isLensGradient": "False", "isLensMirror": "True", "modelFit": "high bridge fit", "modelName": "Las Vegas", "frontMaterial": "injected", "lensProtection": null, "templeColor": "matte black", "frontColor": "matte black", "isLensBlueLightFiltered": "False", "genderType": "man", "channelAttributes": [ { "__typename": "Entity", "channel": "AB - ABC", "styleName": "MyStyleName" }, { "__typename": "Entity", "channel": "AB - ABC", "styleName": "MyStyleName" } ] } } ``` The is an example **response** payload, it is a plain text with the rendition: ``` Las Vegas is a pair of sunglasses. Las Vegas are designed for men. The lens treatment is mirror. The lens color facet is gray silver mirror. The lenses are polarized. The shape is rectangle. The frame color finish is matte. The frame color is matte black. This pair of sunglasses feature lens contrast enhancements. #### ``` #### Render a Collection of Templates[โ€‹](#render-a-collection-of-templates "Direct link to Render a Collection of Templates") It is also possible to generate multiple renders at once by using the Bulk API: ``` curl 'https://api.wordlift.io/content-generation/content-generations/renders-collection' -X POST \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw $'[...json payload 1...,...json payload 2...,...,...json payload n...]' ``` See [Render Template](#render-template) for the JSON payload structure. This is an example **response** JSON payload: ``` [ ...rendition 1..., ...rendition 2..., ..., ...rendition n... ] ``` ### Generate a Preview Completion[โ€‹](#generate-a-preview-completion "Direct link to Generate a Preview Completion") It is possible to test different settings by create a completion on the fly: ``` curl 'https://api.wordlift.io/content-generation/completions' -X POST \ -H 'Accept: text/plain' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ --data-raw '{"frequency_penalty":0.5,"stop":"###","prompt":"John Smith is a pair of sunglasses. The lens treatment is gradient. The lens color facet is gradient green. The frame material is metal. The shape is square. The frame color finish is polished. The frame color is pale gold. There are strass on these sunglasses. These sunglasses feature strass on strass on metal component and. ####","max_tokens":110,"temperature":0.7,"model_id":162,"presence_penalty":0.5,"min_words":45,"logit_bias":{}}' ``` This an example **request** JSON payload: ``` { "frequency_penalty": 0.5, "stop": "###", "prompt": "John Smith is a pair of sunglasses. The lens treatment is gradient. The lens color facet is gradient green. The frame material is metal. The shape is square. The frame color finish is polished. The frame color is pale gold. There are strass on these sunglasses. These sunglasses feature strass on strass on metal component and. ####", "max_tokens": 110, "temperature": 0.7, "model_id": 162, "presence_penalty": 0.5, "min_words": 45, "logit_bias": {} } ``` This is an example **response**, it's plain text with the completion: ``` Experience the perfect synergy of style and performance with Las Vegas sunglasses. The rectangle shape and matte black frame offer a sleek, modern look, while the polarized gray silver mirror lenses provide excellent glare reduction and superior clarity. The lens treatment is mirrored for added protection against the sun's rays. These shades also feature contrast enhancements, making them ideal for any outdoor activity. ``` ### Add Word Biases to a Content Generation Project[โ€‹](#add-word-biases-to-a-content-generation-project "Direct link to Add Word Biases to a Content Generation Project") Once the Project is created and its ID is known, to add Word Biases to a Project use the following API: ``` curl 'https://api.wordlift.io/content-generation/content-generations//words/imports' -X PUT \ -H 'Accept: */*' \ -H 'content-type: text/csv' \ -H 'Authorization: Bearer ' \ --data-raw 'penalize,clear,2867,-3' ``` --- --- url: https://docs.wordlift.io/knowledge-graph/ --- # Knowledge Graph | WordLift Developer Documentation # Knowledge Graph The Knowledge Graph constitutes the basic representation of the Knowledge Domain for a website or an account. There are several way to populate data in a Knowledge Graph. In this section you can populate data using: * URLs by providing a `sitemap.xml` file or manually by using the [Sitemap Import API](/knowledge-graph/sitemap-import/) or; * Crawl data coming from [Botify](/knowledge-graph/botify/) Once the web pages have been imported it is possible to populate the Analytics data by using the [Analytics API](/knowledge-graph/analytics-api/). This requires access to Google Search Console and might not be needed if you are using the [Botify Crawl Import](/knowledge-graph/botify/). --- --- url: https://docs.wordlift.io/knowledge-graph/analytics-api/ --- # Analytics API | WordLift Developer Documentation # Analytics API ## Introduction[โ€‹](#introduction "Direct link to Introduction") To import analytics data, use the Analytics API, following these steps: 1. Connect the Google Search Console to your Knowledge Graph (Botify is also supported as an alternative to Google Search Console, [inquire with us](https://wordlift.io/contact-us/)). 2. Run the Analytics Import. ## Authorization[โ€‹](#authorization "Direct link to Authorization") info Using the Analytics API requires a WordLift Key. If you're unsure which one is the WordLift Key for an account, go to [my.wordlift.io](https://my.wordlift.io) and scroll through the list of websites. ## Connect Google Search Console[โ€‹](#connect-google-search-console "Direct link to Connect Google Search Console") In order to connect the Google Search Console to your Knowledge Graph, a client needs to perform an interactive authentication and authorization process with Google by using a Web Browser. ### Determine the Resource Id[โ€‹](#determine-the-resource-id "Direct link to Determine the Resource Id") Each website or domain in Google Search Console has a resource ID. The resource ID is required to configure the Analytics API properly. To retrieve the resource ID open the [Google Search Console](https://search.google.com/search-console) and select the desired website or domain from the left: ![Select Website or Domain](/assets/images/google-search-console-select-website-or-domain-d07090ec3f0dbb22dd5e162b2132a109.png) Then select the `resource_id` value: ![Copy and paste the resource ID](/assets/images/google-search-console-copy-paste-the-resource-id-8c197d428d4bd8cfb48db355a028f794.png) The value is URL encoded, and it requires to be decoded. [DuckDuckGo](https://duckduckgo.com) provides a handy way to decode a URL: ![URL decode the resource ID](/assets/images/google-search-console-use-duckduckgo-to-urldecode-url-89ad073e06f1bd061f692d90220557c4.png) Take note of the decoded resource ID, it will be used later (in this example `https://example.org`): ### Create an Authorization URI[โ€‹](#create-an-authorization-uri "Direct link to Create an Authorization URI") The process starts using a specially crafted URL. To get the URL use the "Build Authorization URI" API (replace `` with your WordLift Key): ``` curl -X "POST" "https://api.wordlift.io/google-search-console/oauth2/authorize-uris" \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json; charset=utf-8' \ -d $'{ "redirect_uri": "https://developers.google.com/oauthplayground" }' ``` warning The `redirect_uri` must be set to `https://developers.google.com/oauthplayground`. This will yield the following response: ``` { "authorize_uri": "https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground%2F&prompt=consent&response_type=code&client_id=615875160260-bsbm4u5fb2hrke3ln89n33v8rmmksth9.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fwebmasters.readonly&access_type=offline" } ``` Open the above URL in a Web Browser. ### Authenticate and Authorize with Google[โ€‹](#authenticate-and-authorize-with-google "Direct link to Authenticate and Authorize with Google") When requested provide your Google e-mail address. The account must be able to access the Google Search Console for the target account: ![Authenticate with Google, by providing your email address](/assets/images/authenticate-with-google-e633ece20908f911a5970b907b3bc4af.png) Then provide the password and complete authentication: ![Authenticate with Google, by providing your password](/assets/images/authenticate-with-google-e633ece20908f911a5970b907b3bc4af.png) If requested, provide a 2-Step Verification code: ![Authenticate with Google, by providing a 2-Step Verification code](/assets/images/authenticate-with-google-e633ece20908f911a5970b907b3bc4af.png) Then finally click "Allow" to authorize the Analytics API to access the Google Search Console data: ![Authorize with Google](/assets/images/authorize-with-google-8488ac0693a4da8bfd7731c34779511d.png) After clicking "Allow", the browser is redirected to a URL like this: ``` https://developers.google.com/oauthplayground/?code=&scope=https://www.googleapis.com/auth/webmasters.readonly ``` Copy the value in `code=` (the `` part) to use it with the Exchange Authorization Code API. ### Create an Authorization Code Exchange[โ€‹](#create-an-authorization-code-exchange "Direct link to Create an Authorization Code Exchange") Send the `authorization-code` to the Exchange Authorization Code API: ``` curl -X "POST" "https://api.wordlift.io/google-search-console/oauth2/auth-code-exchanges" \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json; charset=utf-8' \ -d $'{ "code": "", "google_search_console_resource_id": "" }' ``` tip If you don't know the resource ID, see [how to determine the resource ID](#determine-the-resource-id). If successful, the access token will be stored in the platform and the API will return an empty JSON object: ``` { "scope": "https://www.googleapis.com/auth/webmasters.readonly", "access_token": "", "expires_in": 3599, "token_type": "Bearer", "refresh_token": "" } ``` ## Connect Botify[โ€‹](#connect-botify "Direct link to Connect Botify") Botify is also supported as an alternative to Google Search Console, [inquire with us](https://wordlift.io/contact-us/). note You can only connect one platform at a time. ## Update the Account with the URL[โ€‹](#update-the-account-with-the-url "Direct link to Update the Account with the URL") The last step before calling the Analytics import is to configure the website URL: ``` ## Update Accounts curl -X "PUT" "https://api.wordlift.io/accounts?key=&url=&country=&language=" \ -H 'Authorization: Key ' \ -H 'Accept: application/json' \ -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' ``` Set the following parameters: * `key`: is the WordLift key associated with the account * `url`: is the URL of the target website (in the example above `https://example.org`) * `country`, optional: the 2 letters country code, e.g. `US` * `language`, optional: the 2 letters langauge code, e.g. `EN` If successful the API will response with 200 and the following JSON: ``` { "datasetURI": "https://data.example.org/dataset/", "packageType": "" } ``` ## Call the Analytics Import[โ€‹](#call-the-analytics-import "Direct link to Call the Analytics Import") Calling the Analytics import is as simple as submitting the following request: ``` curl -X "POST" "https://api.wordlift.io/analytics-imports" \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json' ``` Replace `` with your WordLift key. The API will import the analytics data for all the URLs published in the Knowledge Graph. --- --- url: https://docs.wordlift.io/knowledge-graph/botify/ --- # Botify Crawl Imports | WordLift Developer Documentation # Botify Crawl Imports Use the Botify Crawl Imports endpoint (`https://api.wordlift.io/botify-crawl-imports`) to populate a Knowledge Graph with data from Botify. The import will create Web Pages extracting basic data: * Headline * Abstract * Text * Url tip Optionally, the Botify Crawl Import can create embeddings to support Vector Search. If you're interested into this feature, inquire at [hello@wordlift.io](mailto:hello@wordlift.io). See the [reference](/api/manager/create-botify-crawl-import/) for this API. ## Requirements[โ€‹](#requirements "Direct link to Requirements") Prepare the following data: * Botify Username * Botify Project * Botify Token * WordLift Key The Botify data can be found at [botify.com](https://app.botify.com), the folder structure provides the username and the project, e.g. if the project is located at , it means that the Botify Username is _my-user-name_ and that the Botify Project is _my-project-name_. The Botify Token is located in the User Profile screen. The WordLift Key can be found at [my.wordlift.io](https://my.wordlift.io). If you're unsure how to access the Dashboard, contact us at [hello@wordlift.io](mailto:hello@wordlift.io). info At the moment is is not possible to configure the Botify parameters from my.wordlift.io, you'll need to contact us at [hello@wordlift.io](mailto:hello@wordlift.io) in order for us to perform the configuration. ## How to call the API[โ€‹](#how-to-call-the-api "Direct link to How to call the API") Create a POST request to . The `Authorization` header is required with the value of `Key __YOUR_WORDLIFT_KEY__`. This is an example request body: ``` { "collection": "crawl.20240127", "types": ["CollectionPage"], "filters": [ { "field": "crawl.20240127.extract.plp_header_description_extracted_text_part_1", "predicate": "re", "value": "^.+$" } ], "request_embeddings": [ "http://schema.org/headline", "http://schema.org/text" ], "text": [ "{collection}.extract.plp_header_description_extracted_text_part_1", "{collection}.extract.plp_header_description_extracted_text_part_2", "{collection}.extract.plp_header_description_extracted_text_part_3", "{collection}.extract.plp_header_description_extracted_text_part_4", "{collection}.extract.plp_header_description_extracted_text_part_5", "{collection}.extract.plp_header_description_extracted_text_part_6" ] } ``` With this request we tell the API to: 1. Use the Botify collection called `crawl.20240127`. 2. Filter the data by the field `crawl.20240127.extract.plp_header_description_extracted_text_part_1`. The Botify filters can be used here. 3. We ask the API to generate embeddings by using the resulting `headline` and `text` properties from the schema.org namespace. 4. We tell the API to generate the `text` property by joining the data present in the `{collection}.extract.plp_header_description_extracted_text_part_...` Botify property. 5. We also set the target `@type` to `CollectionPage` (the default being `WebPage`). tip `{collection}` is a placeholder, it is replaced with the value set in `collection`. This is the complete example CURL: ``` ## Request curl -X "POST" "https://api.wordlift.io/botify-crawl-imports" \ -H 'Authorization: Key __YOUR_WORDLIFT_KEY__' \ -H 'Content-Type: application/json; charset=utf-8' \ -d $'{ "collection": "crawl.20240127", "types": ["CollectionPage"], "filters": [ { "field": "crawl.20240127.extract.plp_header_description_extracted_text_part_1", "value": "^.+$", "predicate": "re" } ], "request_embeddings": [ "http://schema.org/headline", "http://schema.org/text" ], "text": [ "{collection}.extract.plp_header_description_extracted_text_part_1", "{collection}.extract.plp_header_description_extracted_text_part_2", "{collection}.extract.plp_header_description_extracted_text_part_3", "{collection}.extract.plp_header_description_extracted_text_part_4", "{collection}.extract.plp_header_description_extracted_text_part_5", "{collection}.extract.plp_header_description_extracted_text_part_6" ] }' ``` The API will respond with streaming data of content-type [NDJSON](https://github.com/ndjson/ndjson-spec) (`application/x-ndjson`), basically a valid JSON per line: ``` {"headline":"The headline","text":"The text","image":null,"url":"https://example.org/the-url","date_published":null,"abstract":"The abstract."} {...} {...} {...} ``` info Embeddings are generated asynchronously from a queue, so they may not be immediately available for Vector Search. Depending on the queue size it may take up to an hour for the embeddings to be generated. ## How does the API work[โ€‹](#how-does-the-api-work "Direct link to How does the API work") The API will use the provided request to call the Botify endpoint. Although not necessary, it may be helpful to familiarize with [Botify API](https://developers.botify.com/docs/welcome-to-botifys-api-documentation). It is possible to restrict the data requested from Botify by using the `filters`, which map to Botify's own filters. The API maps the source data in Botify to semantic data in Knowledge Graph, based on the schema.org vocabulary. Following are the default mappings: * `{collection}.metadata.title.content` is mapped to schema.org/headline. * `{collection}.metadata.description.content` is mapped to schema.org/description. * `url` is mapped to schema.org/url. It is possible to customize the default and additional map Botify properties to schema.org/text, to customize: * schema.org/headline, use the request `headline` property, only one value is accepted. * schema.org/description, use the request `description` property. An array is provided, the values from the specified properties are joined together. * schema.org/text, use the request `text` property. As for `description`, an array is provided, the values from the specified properties are joined together. Moreover by default the generated entity in KG is assigned the `WebPage` type. It is possibile to customize the type by passing it in `types`. An array is provided, all the specified types will be assigned. The API reads the data from Botify, converts it to semantic data and writes it data to the KG while returning it to the client in a streaming fashion (NDJSON). --- --- url: https://docs.wordlift.io/knowledge-graph/kg-rest/ --- # KG-REST | WordLift Developer Documentation # KG-REST A RESTful API for interacting with and managing knowledge graphs. KG-REST provides a standardized interface to perform operations on complex graph-based data, making it easier to create, read, update, and delete graph elements while supporting batch processing and query-based interactions. ## Introduction[โ€‹](#introduction "Direct link to Introduction") Welcome to the KG-REST API documentation. KG-REST is designed to seamlessly integrate the principles of Representational State Transfer (REST) with Knowledge Graphs (KGs). Our goal is to provide developers with a straightforward and intuitive API to perform Create, Read, Update, and Delete (CRUD) operations on Knowledge Graphs. Knowledge Graphs are powerful tools for structuring and interlinking data, enabling complex relationships and insights. However, interacting with them can often be complex and challenging. KG-REST addresses these challenges by offering a RESTful interface, making it easier to manage and manipulate knowledge graph data within your applications. ## Getting Started[โ€‹](#getting-started "Direct link to Getting Started") We'll assist you in setting up and performing Create, Read, Update, and Delete (CRUD) operations on your Knowledge Graph using two methods: 1. **Using `curl`** 2. **Using the WordLift Python Client** ### Prerequisites[โ€‹](#prerequisites "Direct link to Prerequisites") Before you begin, ensure you have the following: * **API Key:** An active API key is required for authentication. If you don't have one, please request it from the [WordLift website](https://wordlift.io). he API key is used to authenticate your requests to the KG-REST API. * **HTTP Client:** Tools like [curl](https://curl.se/) can be used to send HTTP requests to the API. * **Python Environment:** If you prefer using Python, ensure you have Python installed along with the WordLift Python Client. ### Obtaining Your API Key[โ€‹](#obtaining-your-api-key "Direct link to Obtaining Your API Key") To interact with the KG-REST API, you'll need an API key: * **Requesting an API Key:** isit the [WordLift website](https://wordlift.io) and sign up or log in to your account. ### Base URL[โ€‹](#base-url "Direct link to Base URL") All API requests are made to the following base URL: ``` https://api.wordlift.io ``` ### Authentication[โ€‹](#authentication "Direct link to Authentication") KG-REST uses API keys to authenticate requests. Include your API key in the `Authorization` header of each request: ``` Authorization: Key YOUR_API_KEY ``` ### Making Your First Request Using `curl`[โ€‹](#making-your-first-request-using-curl "Direct link to making-your-first-request-using-curl") Here's how to make a simple `GET` request to retrieve entities from your Knowledge Graph: **Request:** ``` GET /entities?id=ENTITY_ID ``` **Example using `curl`:** ``` curl -X GET "https://api.wordlift.io/entities?id=ENTITY_ID" \ -H "Authorization: Key YOUR_API_KEY" ``` **Response:** ``` { "@id": "ENTITY_ID", "@type": "schema:Thing", "schema:name": "Entity Name", "schema:description": "Entity Description" } ``` ### Using the WordLift Python Client[โ€‹](#using-the-wordlift-python-client "Direct link to Using the WordLift Python Client") If you prefer to use Python, follow these steps: **a. Install the WordLift Python Client:** ``` pip install wordlift ``` **b. Initialize the Client:** ``` import wordlift_client from wordlift_client.rest import ApiException from pprint import pprint # Defining the host is optional and defaults to https://api.wordlift.io # See configuration.py for a list of all supported configuration parameters. configuration = wordlift_client.Configuration(host="https://api.wordlift.io") # The client must configure the authentication and authorization parameters # in accordance with the API server security policy. # Examples for each auth method are provided below, use the example that # satisfies your auth use case. # Configure API key authorization: ApiKey configuration.api_key["ApiKey"] = ( "YOUR_API_KEY" ) # Uncomment below to setup prefix (e.g. Bearer) for API key, if needed configuration.api_key_prefix["ApiKey"] = "Key" # Enter a context with an instance of the API client async with wordlift_client.ApiClient(configuration) as api_client: # Create an instance of the API class api_instance = wordlift_client.EntitiesApi(api_client) try: # Get api_response = await api_instance.create_or_update_entities( body=""" a ; "Upgrade your Acme Inc. BlastShadesโ„ข with precision-engineered BoomVisionโ„ข replacement lenses. Designed for extreme conditions, these lenses enhance explosion contrast, improve visibility in dynamic light scenarios, and provide superior impact resistance. With 100% UV filtering and built to withstand the most intense detonations, BoomVisionโ„ข lenses ensure top-tier optical performance. Important Note: Replacement lenses cannot be returned if mounted or scratched."; "123456789012"; "https://data.wordlift.io/lucky777/01/123456789012"; "https://assets.example.org/blastshades/lens_replacement.png"; "http://schema.org/NewCondition"; "Acme Inc. BlastShadesโ„ข BoomVisionโ„ข Replacement Lenses"; . """, _content_type="text/turtle", ) pprint(api_response) except ApiException as e: print("Exception when calling create_or_update_entities: %s\n" % e) ``` ## API Endpoints[โ€‹](#api-endpoints "Direct link to API Endpoints") KG-REST provides a comprehensive set of endpoints to perform Create, Read, Update, and Delete (CRUD) operations on your Knowledge Graph. Below is an overview of the available endpoints: ### Read[โ€‹](#read "Direct link to Read") **Endpoint:** `GET /entities` **Description:** Retrieves details of a specific entity by its ID. **Request Example:** ``` GET /entities?id=https://example.com/entity1 HTTP/1.1 Host: api.wordlift.io Authorization: Key YOUR_API_KEY ``` **Response Example:** ``` { "@id": "https://example.com/entity1", "@type": "schema:Thing", "schema:name": "Entity One", "schema:description": "An example entity." } ``` ### Update[โ€‹](#update "Direct link to Update") **Endpoint:** `PUT /entities` **Description:** Creates or updates an entity in the Knowledge Graph. **Request Example:** ``` PUT /entities HTTP/1.1 Host: api.wordlift.io Authorization: Key YOUR_API_KEY Content-Type: application/ld+json { "@id": "https://example.com/entity1", "@type": "schema:Thing", "schema:name": "Updated Entity One", "schema:description": "Updated description." } ``` **Response Example:** If successful the response will return OK 200. ### Delete[โ€‹](#delete "Direct link to Delete") **Endpoint:** `DELETE /entities` **Description:** Removes an entity from the Knowledge Graph. **Request Example:** ``` DELETE /entities?id=https://example.com/entity1 HTTP/1.1 Host: api.wordlift.io Authorization: Key YOUR_API_KEY ``` **Response Example:** If successful the response will return OK 200. ### Batch Processing[โ€‹](#batch-processing "Direct link to Batch Processing") **Endpoint:** `POST /dataset/batch` **Description:** Allows batch creation or updating of entities. **Request Example:** ``` POST /dataset/batch HTTP/1.1 Host: api.wordlift.io Authorization: Key YOUR_API_KEY Content-Type: application/json [ { "uri": "https://example.com/entity2", "model": "schema:Thing", "private": false }, { "uri": "https://example.com/entity3", "model": "schema:Organization", "private": true } ] ``` **Response Example:** ``` { "message": "Batch processing completed", "entities": [ { "uri": "https://example.com/entity2", "model": "schema:Thing", "private": false }, { "uri": "https://example.com/entity3", "model": "schema:Organization", "private": true } ] } ``` --- --- url: https://docs.wordlift.io/knowledge-graph/multilingual/ --- # Multilingual | WordLift Developer Documentation # Multilingual Each website is linked to a Graph and every Graph is configured with one language and optionally a country. Multilingual websites can therefore be linked to multiple Graphs each one configured with a specific language. ## Structured Data publishing[โ€‹](#structured-data-publishing "Direct link to Structured Data publishing") Graphs provide the structured data conformant to schema.org, search engine and AI requirements. Structured data is stored in the form of linked data entities in the Graph. An entity can have a `schema:url` property that it is used to determine which entities (and connected ones) should be publishing for a specific URL. ### Data API[โ€‹](#data-api "Direct link to Data API") The act of selecting and aggregating this data happens using the Data API which exposes a simple end-point `https://api.wordlift.io/data/https/example.org/page.html`. When calling this end-point, the Data API will return the structured data for the URL `https://example.org/page.html`. The Data API is formatted so that it eases caching by browsers and edge caches in order to boost performance, because it is a simple HTTP GET operation. In order to know which graph is authoritative for a URL, the Data API queries an internal routing table based on the provided URL, which redirects to the appropriate graph. When working with multilingual websites, the same path context may refer to a different graph based on the client language, so that another parameter is required to tell the Data API how to select the correct source graph for structured data. The parameter is called `__wl_lang` and specifies the ISO 639-1 two-letter code for the required language, example `en` for English or `it` for Italian. For example, the internal routing may have the following configuration, URL example.org is served by: 1. graph `https://data.example.org/en`, which is also the default, when language is English 2. graph `https://data.example.org/it`, when language is Italian So that when requesting `https://api.wordlift.io/data/https/example.org/page.html?__wl_lang=en`, the Data API will route the request to the `https://data.example.org/en` graph, whereas requesting `https://api.wordlift.io/data/https/example.org/page.html?__wl_lang=it` will route the request to the `https://data.example.org/it` graph. ## Cloud script[โ€‹](#cloud-script "Direct link to Cloud script") The [Cloud](/cloud/) script (`bootstrap.js`) will automatically select the correct language by parsing the `html` element's `lang` attribute, for example the `` tag will tell `bootstrap.js` to request the structured data for the English language, and the script will automatically append the `__wl_lang=en` to the request. ## WordLift Data API Multilingual Request Flow[โ€‹](#wordlift-data-api-multilingual-request-flow "Direct link to WordLift Data API Multilingual Request Flow") ![Flowchart](/assets/images/multilingual_sequence-aaa9a57c666eb89eac6c2c0beb1562df.png) --- --- url: https://docs.wordlift.io/knowledge-graph/sitemap-import/ --- # Sitemap Import API | WordLift Developer Documentation # Sitemap Import API It is possible to jumpstart a Knowledge Graph by importing the URLs from a simple sitemap.xml file (i.e. a sitemap with a list of URLs; sitemap.xml with references to other sitemap files isn't yet supported). It is also possible to specify a list of URLs. ## Import[โ€‹](#import "Direct link to Import") You can import web pages by providing a \`sitemap.xml\`\` file or a list of URLs. ### Import URLs from a sitemap.xml file[โ€‹](#import-urls-from-a-sitemapxml-file "Direct link to Import URLs from a sitemap.xml file") Call the Sitemap import API by specifying the `sitemap.xml` URL in the `sitemap_url` property: ``` curl -X "POST" "https://api.wordlift.io/sitemap-imports" \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json; charset=utf-8' \ -d $'{ "sitemap_url": "https://example.org/sitemap.xml" }' ``` The response is of type [NDJSON](https://en.wikipedia.org/wiki/JSON%5Fstreaming#Newline-delimited%5FJSON). Each line is a valid JSON with the details about the imported web page. ### Import URLs by providing them to the request[โ€‹](#import-urls-by-providing-them-to-the-request "Direct link to Import URLs by providing them to the request") Call the Sitemap import API by specifying a list of URLs `urls` property: ``` curl -X "POST" "https://api.wordlift.io/sitemap-imports" \ -H 'Authorization: Key ' \ -H 'Content-Type: application/json; charset=utf-8' \ -d $'{ "urls": [ "https://example.org/file1.html", "https://example.org/file2.html", "https://example.org/file3.html" ] }' ``` The response is of type [NDJSON](https://en.wikipedia.org/wiki/JSON%5Fstreaming#Newline-delimited%5FJSON). Each line is a valid JSON with the details about the imported web page. ## Import Analytics data[โ€‹](#import-analytics-data "Direct link to Import Analytics data") To import Analytics data see the [Analytics API](/knowledge-graph/analytics-api/) ## Query the data[โ€‹](#query-the-data "Direct link to Query the data") Query the imported data by using the GraphQL endpoint. This is an example GraphQL query: ``` query { entities( page: 0 rows: 1000 ) { id: iri headline: string(name: "schema:headline") text: string(name: "schema:text") types: refs(name: "rdf:type") url: string(name: "schema:url") seoKeywords: strings(name: "seovoc:seoKeywords") topThreeMonthsKeywords: topN( name: "seovoc:seoKeywords" sort: { field: "seovoc:3MonthsImpressions", direction: DESC } limit: 3 ) { name: string(name: "seovoc:name") impressions: int(name: "seovoc:3MonthsImpressions") clicks: int(name: "seovoc:3MonthsClicks") } source: strings(name: "seovoc:source") } } ``` --- --- url: https://docs.wordlift.io/llm-connectors/ --- # AI & LLM Integrations | WordLift Developer Documentation # AI & LLM Integrations WordLift offers a set of integrations to build AI-powered marketing workflows using semantic intelligence. Here are the partners we integrate with: * **LlamaIndex**: You can use WordLift with LlamaIndex to build semantic serch, AI agents and KG RAG application. LlamaIndex is a framework for connecting data sources to LLMs. * [WordLift Vector Store](/llm-connectors/wordlift-vector-store/) to store and querying vector embeddings and entity relationships; * [WordLift Reader](/llm-connectors/wordlift-reader/) to load data from a WordLift Knowledge Graph via GrapgQL. --- --- url: https://docs.wordlift.io/llm-connectors/wordlift-reader/ --- # LlamaIndex & LangChain - WordLift Reader | WordLift Developer Documentation # WordLift Reader for LlamaIndex ๐Ÿฆ™ [WordLift Reader](https://llamahub.ai/l/readers/llama-index-readers-wordlift) is a robust **connector for the LlamaHub library**, compatible with LlamaIndex and LangChain. The **WordLift Reader** interacts explicitly with any Knowledge Graph built using WordLift, **transforming semantically structured data into engaging conversations** by bringing data into LlamaIndex and LangChain, two popular frameworks for developing Large Language Model (LLM) applications. ## Getting Started[โ€‹](#getting-started "Direct link to Getting Started") To start using WordLift Reader, you need to configure your LlamaIndex project. Please read the documentation on the LlamaIndex website. To use the WordLift Reader, you will need your WordLift Key, and you can GraphQL to extract the data needed inside your project. ## Usage[โ€‹](#usage "Direct link to Usage") WordLift Reader works seamlessly with LlamaIndex and LangChain, two orchestration frameworks for developing LLM-powered applications. See the example below to set up your first project. ``` !pip install llama-index !pip install llama-index-readers-wordlift # this will import WordLiftLoader # Make the imports from llama_index.core import settings from llama_index.core import VectorStoreIndex, StorageContext, load_index_from_storage from llama_index.llms.openai import OpenAI from llama_index.readers.wordlift import WordLiftLoader # Set up the necessary configuration options endpoint = "https://api.wordlift.io/graphql/graphql" headers = { "Authorization": "[YOUR_WORDLIFT_KEY]", "Content-Type": "application/json" } query = """[YOUR_GRAPHQL_QUERY_GOES_HERE]""" fields = "" config_options = { 'text_fields': ['[ADD_HERE_THE_FIELDS_TO_BE_INDEXED]'], 'metadata_fields': ['[ADD_HERE_THE_FIELDS_TO_BE_USED_AS_METADATA]'] } # Create an instance of the WordLiftLoader reader = WordLiftLoader( endpoint, headers, query, "products", config_options) # Load the data documents = reader.load_data() # Build the index try: # initialize storage context storage_context = StorageContext.from_defaults(persist_dir="./") index = load_index_from_storage(storage_context) # If the index is not present on the disk, create the storage context and add the documents except FileNotFoundError: storage_context = StorageContext.from_defaults() index = VectorStoreIndex.from_documents( documents) index.storage_context.persist(persist_dir="./") # Create the query engine query_engine = index.as_query_engine() # Ask your question result = query_engine.query("[YOUR_QUERY]") # Process the result as needed print("Result: %s", result) ``` ## Loading Data from the Knowledge Graph[โ€‹](#loading-data-from-the-knowledge-graph "Direct link to Loading Data from the Knowledge Graph") WordLift Reader uses GraphQL, a query language introduced by Facebook, to load data from the knowledge graph. With GraphQL, you can specify exactly what data you need in your LlamaIndex application, eliminating the over-fetching or under-fetching of data that can occur with traditional REST APIs. To load data from the knowledge graph, you need to construct a GraphQL query. Here are a few examples of queries that you can use to get started: ### Products[โ€‹](#products "Direct link to Products") ``` query { products(page: 0, rows: 100) { id: iri url: strings(name: "schema:url") gtin: strings(name: "schema:gtin") names: strings(name: "schema:name") description: strings(name: "schema:description") brand: resource(name: "schema:brand") { brand: string(name: "schema:name") } price: resource(name: "schema:offers") { price: string(name: "schema:price") } image: string(name: "schema:image") } } ``` ### FAQs[โ€‹](#faqs "Direct link to FAQs") ``` query { faqPages { url: string(name: "schema:url") title: string(name: "schema:name") questions: resources(name: "schema:mainEntity") { question: string(name: "schema:name") answer: resources(name: "schema:acceptedAnswer") { text: string(name: "schema:text") } } } } ``` ### Articles[โ€‹](#articles "Direct link to Articles") ``` query { articles(page: 0, rows: 25) { id: iri title: string(name: "schema:headline") date: string(name: "schema:datePublished") author_id: string(name: "schema:author") article_author: resource(name: "schema:author") { id: iri name: string(name: "schema:name") } article_url: string(name: "schema:mainEntityOfPage") article_about: resource(name: "schema:about") { names: string(name: "schema:name") } article_desc: string(name: "schema:description") mentions: resources(name: "schema:mentions") { names: strings(name: "schema:name") } body: string(name: "wordpress:content") } } ``` ๐Ÿšจ Be aware that data inside your knowledge graph might have a different structure and you might need to adapt these queries. Always look at the URI behind each entity (iri) to make sure you fully understand how data is organized. Once you have constructed the query, you can submit it to the WordLift Reader, which will retrieve the specified data from the knowledge graph and pass it to LlamaIndex for creating the indices. ## Additional Resources[โ€‹](#additional-resources "Direct link to Additional Resources") For more information on using WordLift Reader, check out: * our [Colab Notebook](https://wor.ai/wl-reader-demo), * a variant [Colab Notebook](https://wor.ai/matryoshka) using Matryoshka embeddings by Nomic * our blog post about [utilizing knowledge graph for conversational experience and SEO](https://wordlift.io/blog/en/knowledge-graph-and-llm/), * the [official documentation from LlamaIndex](https://gpt-index.readthedocs.io/en/latest/index.html), * the page of [WordLift reader on LlamaHub](https://llama-hub-ui.vercel.app/l/wordlift), * how to use [LlamaIndex with LangChain](https://gpt-index.readthedocs.io/en/latest/community/integrations/using%5Fwith%5Flangchain.html) ## Conclusion[โ€‹](#conclusion "Direct link to Conclusion") **WordLift Reader** represents a significant step in our mission to make the web more intelligent and accessible. By **transforming your knowledge graph into interactive conversations**, we're enhancing the user experience and paving the way for **more effective SEO strategies**. --- --- url: https://docs.wordlift.io/llm-connectors/wordlift-vector-store/ --- # Llama Index - WordLift Vector Store | WordLift Developer Documentation # WordLift Vector Store for LlamaIndex ๐Ÿฆ™ [WordLift Vector Store](https://llamahub.ai/l/vector%5Fstores/llama-index-vector-stores-wordlift?from=) is a **Knowledge Graph-based Vector SLlamaIndex**. This integration enables WordLift to be used as a vector store for LlamaIndex, allowing you to **work with your knowledge graph directly from your codebase**. With WordLift Vector Store, you can: * Perform **Knowledge Graph retrieval-augmented generation (Knowledge-enabled RAG)** using your knowledge graph data directly in your codebase. * Add new nodes and search within your knowledge graph effortlessly. ## Getting Started[โ€‹](#getting-started "Direct link to Getting Started") To start using the WordLift Vector Store, you need to configure your LlamaIndex project. Please read the [documentation on the LlamaIndex website](https://docs.llamaindex.ai/en/stable/getting%5Fstarted/installation/). โš ๏ธ To use the WordLift Vector Store, you will need your WordLift Key. You can obtain a WordLift Key by subscribing to one of WordLift's plans. Start using this and other integrations by choosing the [**WordLift Business Plan**](https://s.wordlift.io/get-started/?product%5Fid=51698&lang=en&%5Fga=2.229910552.580544220.1719219882-1472873283.1715336664). Once subscribed, you will receive your WordLift Key, which you can use to access the Vector Store and other features. ## Usage[โ€‹](#usage "Direct link to Usage") See the example below to set up your first project. ``` # import the necessary modules from llama_index.core import SimpleDirectoryReader, StorageContext from llama_index.core import VectorStoreIndex from llama_index.vector_stores.wordlift import WordliftVectorStore # set the openAI key to use GPT as LLM (the default LlamaIndex LLM) import os import openai openai.api_key = os.environ["your_openAI_key"] # download a sample file and create documents from it !mkdir 'data\paul_graham\' !curl 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt' documents = SimpleDirectoryReader("./data/paul_graham").load_data() # Wordlift Knowledge Graphs are built on the principles of fully Linked Data, # where each entity is assigned a permanent dereferentiable URI. # When adding nodes to an existing Knowledge Graph, it's essential to include # an "entity_id" in the metadata of each loaded document. # For further insights into Fully Linked Data, explore these resources: # [W3C Linked Data](https://www.w3.org/DesignIssues/LinkedData.html), # [5 Star Data](https://5stardata.info/en/). !curl https://api.wordlift.io/accounts/me -H 'Authorization: Key your_key' | jq . # To generate the entity_id, concatenate the datasetURI with the normalized # filename. # For instance, if your datasetURI is `https://data.wordlift.io/wl0000000/` and # your text file is named `sample-file.txt`, the entity_id can be constructed # as follows: # `entity_id = datasetURI + normalize(filename)` # which results in `https://data.wordlift.io/wl0000000/sample-file-txt`. dataset_uri = "your_dataset_uri" for document in documents: norm_filename = document.metadata["file_name"].replace(".", "-") entity_id = dataset_uri + norm_filename document.metadata["entity_id"] = entity_id # Create an instance of Wordlift Vector Store vector_store = WordliftVectorStore.create("your_key") # set Wordlift vector store instance as the vector store storage_context = StorageContext.from_defaults(vector_store=vector_store) index = VectorStoreIndex.from_documents(documents, storage_context=storage_context) # test the vector store query query_engine = index.as_query_engine() response = query_engine.query("What did the author do growing up?") print(response) ``` ## Additional Resources[โ€‹](#additional-resources "Direct link to Additional Resources") For more information on using WordLift Reader, check out: * our [Python Notebook](https://github.com/run-llama/llama%5Findex/blob/main/docs/docs/examples/vector%5Fstores/WordLiftDemo.ipynb) * our blog post about [LLMs for SEO & Marketing Automation](https://wordlift.io/blog/en/semantic-search-with-wordlift-vector-store/), introducing the WordLift Vectore Store and its advantages, * the [official documentation from LlamaIndex](https://docs.llamaindex.ai/en/stable/community/integrations/vector%5Fstores/). ## Conclusion[โ€‹](#conclusion "Direct link to Conclusion") **WordLift Vector Store** represents a significant leap forward in our mission to make the web more intelligent and accessible. By transforming your knowledge graph into interactive and contextually aware conversations, we are not only enhancing the user experience but also paving the way for more effective and precise SEO strategies. This integration is meticulously designed for SEO and marketing automation, **ensuring that your content is not only optimized but also dynamically adaptable to the ever-evolving digital landscape**. With WordLift Vector Store, you gain the ability to harness the power of AI, natural language processing, and high-dimensional vector spaces, **making your search capabilities more robust and your marketing efforts more impactful**. By leveraging this cutting-edge technology, you can achieve **scalability and precision**, ultimately driving better engagement and higher conversion rates. WordLift Vector Store is your gateway to a smarter, more efficient web presence, tailored to meet the demands of modern SEO and marketing automation. --- --- url: https://docs.wordlift.io/looker-studio-connector/introduction/ --- # Introduction | WordLift Developer Documentation # WordLift Looker Studio Connector With the [WordLift Looker Studio Connector](https://wordlift.io/blog/en/wordlift-data-studio-connector/), you can **create semantic SEO reports** by loading data from your Knowledge Graph directly into Looker Studio and merging it with Search Console or any other web analytics platform. ## Get Started[โ€‹](#get-started "Direct link to Get Started") ### 1\. Search for it[โ€‹](#1-search-for-it "Direct link to 1. Search for it") The first step to start creating your semantic SEO report is to search for WordLift on the [Google Looker Studio connectors page](https://datastudio.google.com/datasources). ![image](/assets/images/wordlift-datastudio-connector-get-started-332a02f1ee7e0545c788b6ad99add784.png) ``` ``` Just click on it and **enter the WordLift key**. We have a GraphQL query ready for you, so you donโ€™t need to do anything to get started. In case you are a power user and you know the query that you want to run, just continue. For example, if you are running an e-commerce website, maybe you want to query for product attributes or prices. Then be sure to keep checking the box โ€œuse report template for new reportโ€, so you can get a shiny new report premade for you. Then click **Connect**. Here you can see the fields that come from the report. Finally, click **Create Report**. ![image](/assets/images/wordlift-datastudio-connector-create-report-484b3bf05e379c6baeebe76a369dc503.png) ### 2\. Add GSC as a data source and check the blend[โ€‹](#2-add-gsc-as-a-data-source-and-check-the-blend "Direct link to 2. Add GSC as a data source and check the blend") At this point, you are close to creating your report, but two more steps are needed: 1. To go to the managed data sources and add your Search Console data source: choose your website, choose URL Impressions and choose Web Type, and then click on Create. 2. Check the blends to verify that the data is merged from the Knowledge Graph and GSC. ![image](/assets/images/wordlift-datastudio-connector-check-aaadae568b9dfcfbdeaccbcfea672691.png) You can filter the data for EntityType and choose the period of time you prefer. Note Learn how to [create your Semantic SEO reports](https://youtu.be/mWMEbx3qIVI) in 3 simple steps, watch this video. --- --- url: https://docs.wordlift.io/marketing-automation/power-automate/introduction/ --- # Introduction | WordLift Developer Documentation # WordLift Power Automate Connector The [WordLift Power Automate Connector](https://learn.microsoft.com/en-us/connectors/wordliftgraphql/) allows you to **integrate your Knowledge Graph data with the Microsoft Power Platform**. This connector provides access to the WordLift GraphQL API, enabling you to extract and utilize entity data across Power Automate, Logic Apps, and Power Apps. ## Availability[โ€‹](#availability "Direct link to Availability") The connector is available in the following products and regions: ### Logic Apps[โ€‹](#logic-apps "Direct link to Logic Apps") * **Class:** Standard * **Regions:** All Logic Apps regions except: * Azure Government regions * Azure China regions * US Department of Defense (DoD) ### Power Automate[โ€‹](#power-automate "Direct link to Power Automate") * **Class:** Premium * **Regions:** All Power Automate regions except: * US Government (GCC) * US Government (GCC High) * China Cloud operated by 21Vianet * US Department of Defense (DoD) ### Power Apps[โ€‹](#power-apps "Direct link to Power Apps") * **Class:** Premium * **Regions:** All Power Apps regions except: * US Government (GCC) * US Government (GCC High) * China Cloud operated by 21Vianet * US Department of Defense (DoD) ## Prerequisites[โ€‹](#prerequisites "Direct link to Prerequisites") Before getting started, you'll need: * A WordLift subscription * A Knowledge Graph and its related access key * Basic GraphQL knowledge ## Authentication[โ€‹](#authentication "Direct link to Authentication") The connector uses API Key authentication. You'll need to provide your WordLift Knowledge Graph key in the format: ``` Key YOUR_KEY_HERE ``` For example, if your key is `123`, you would enter: `Key 123` To obtain your key: 1. Go to [my.wordlift.io](https://my.wordlift.io) 2. Your available keys will be displayed on the home page ## Using the Connector[โ€‹](#using-the-connector "Direct link to Using the Connector") ### Getting Started[โ€‹](#getting-started "Direct link to Getting Started") 1. Add the WordLift connector to your automation 2. Provide your authentication key (prefixed with `Key`) 3. Create your GraphQL query 4. Use the returned data in your automation scenario ### Example Query[โ€‹](#example-query "Direct link to Example Query") Here's a sample query to get you started: ``` query { entities(rows: 100, page: 0) { headline: string(name:"schema:headline") description: string(name:"schema:description") url: string(name:"schema:url") } } ``` ### Known Limitations[โ€‹](#known-limitations "Direct link to Known Limitations") When querying a Knowledge Graph with large amounts of data, use the `rows` and `page` parameters to limit the results to a specific subset: ``` query { entities(page: 0, rows: 100) { // your fields here } } ``` ### Common Issues and Solutions[โ€‹](#common-issues-and-solutions "Direct link to Common Issues and Solutions") | Issue | Solution | | ------------------- | ---------------------------------------------------- | | 401 Unauthenticated | Check that you've provided the authentication key | | 403 Access Denied | Verify your key is valid and includes the Key prefix | | Timeouts | Add rows and page parameters to limit result size | ## Throttling Limits[โ€‹](#throttling-limits "Direct link to Throttling Limits") | Limit Type | Calls | Renewal Period | | ------------------------ | ----- | -------------- | | API calls per connection | 100 | 60 seconds | ## Need Help?[โ€‹](#need-help "Direct link to Need Help?") If you need assistance setting up your WordLift Power Automate connector or have questions about specific workflows, please contact our support team at [support@wordlift.io](mailto:support@wordlift.io). --- --- url: https://docs.wordlift.io/marketing-automation/zapier/introduction/ --- # Introduction | WordLift Developer Documentation # WordLift Zapier Integration The [WordLift Zapier Integration](https://zapier.com/apps/wordlift/integrations) allows you to **automate your semantic SEO workflows** by connecting WordLift with over 6,000+ apps. You can now leverage the power of Agent WordLift and your Knowledge Graph data across your entire marketing stack. ## Get Started[โ€‹](#get-started "Direct link to Get Started") ### 1\. Authentication[โ€‹](#1-authentication "Direct link to 1. Authentication") To get started with the WordLift Zapier integration, you'll need your WordLift API Key. This is the same key you use to access your Knowledge Graph. 1. Search for "WordLift" in the Zapier integrations directory 2. Click on "Add Connection" 3. Enter your WordLift API Key 4. Click "Continue" to validate your credentials ![Authentication Step](/assets/images/step-1-authentication-8fa41036f2575d0d2f88bfac178fdf6a.png) ### 2\. Available Actions[โ€‹](#2-available-actions "Direct link to 2. Available Actions") The WordLift Zapier integration provides two powerful actions: #### Ask Agent WordLift[โ€‹](#ask-agent-wordlift "Direct link to Ask Agent WordLift") Send commands or questions to Agent WordLift and receive intelligent responses. Use this to: * Extract entities from text * Analyze content for SEO optimization * Generate content recommendations * Reuse content from your website * Analyze Schema.org markup on a webpage ![Agent WordLift](/assets/images/agent-wordlift-61f6242aa1e0972d5cdb52f217e5d88b.png) #### Query Knowledge Graph[โ€‹](#query-knowledge-graph "Direct link to Query Knowledge Graph") Run GraphQL queries to retrieve specific data from your WordLift Knowledge Graph. This allows you to: * Extract structured data * Monitor entity relationships * Track content performance * Generate custom reports ![GraphQL Query](/assets/images/graphql-e4ff722f1602745641336176ea27d2c8.png) ### 3\. Popular Use Cases[โ€‹](#3-popular-use-cases "Direct link to 3. Popular Use Cases") With WordLift's Zapier integration, marketers can: * Automatically analyze new blog posts when published * Send content data to reporting tools * Trigger content optimization workflows * Sync entity data with CRM systems * Create automated content briefs * Monitor SEO performance metrics ## Create Your First Zap[โ€‹](#create-your-first-zap "Direct link to Create Your First Zap") Get started with our pre-built workflows or create your own custom automation: ## Examples[โ€‹](#examples "Direct link to Examples") Here are some popular workflow templates to get you started: 1. **Content Optimization Pipeline** * Trigger: New WordPress post * Action: Ask Agent WordLift to analyze content * Action: Send optimization recommendations to Slack 2. **Automated SEO Reporting** * Trigger: Daily schedule * Action: Query Knowledge Graph for performance metrics * Action: Update Google Sheets dashboard 3. **Content Distribution Workflow** * Trigger: Daily schedule * Action: Query Knowledge Graph for entity data * Action: Create social media posts via Buffer ## Need Help?[โ€‹](#need-help "Direct link to Need Help?") If you need assistance setting up your WordLift Zapier integration or have questions about specific workflows, please contact our support team at [support@wordlift.io](mailto:support@wordlift.io). --- --- url: https://docs.wordlift.io/pages/about/ --- # About WordLift | WordLift Developer Documentation # About WordLift **WordLift** brings the power of _Artificial Intelligence_ to web publishers around the World. **WordLift** is a **semantic editor** for WordPress. **WordLift** turns editorial contents into actionable knowledge and helps bloggers and site owners reach their maximum potential audiences. ## About InsideOut10[โ€‹](#about-insideout10 "Direct link to About InsideOut10") WordLift is **happily developed** by [InsideOut10](https://insideout.io/). [InsideOut10](https://insideout.io/) is a startยญup and consulting firm based in Rome, Italy.[InsideOut10](https://insideout.io/) is also co-founder of [Redlink](https://redlink.at/) a commercial spin-off based in Salzburg, Austria focused on _Semantic Technologies_ and _Free Open Source Software_ kickstarted in 2013. ### Presentations[โ€‹](#presentations "Direct link to Presentations") * [From Knowledge Graphs to AI powered SEO](http://bit.ly/wordlift-cdl) \- 4th October 2019 - _Connected Data_ | London, UK * [WordLift for Digital Publishers and how to create an Open Database of Knowledge](http://www.slideshare.net/cyberandy/wordlift-for-digital-publishers-and-how-to-create-an-open-database-of-knowledge) \- 6th July 2015 - _Universitร  La Sapienza_ | Rome, Italy * [Web Storytelling and Open Data Publishing for Tourism](http://www.slideshare.net/cyberandy/web-storytelling-and-open-data-publishing-for-tourism) \- 17th February 2015 - _Semantic Technology Institute_ | Innsbruck, Austria * [Semantic SEO in the post Hummingbird Era and WordLift](http://www.slideshare.net/cyberandy/semantic-seo-wordpressenglish) \- 23rd April 2014 - _Rome WordPress Meetup_ | Rome, Italy * [WordLift 3 Dynamic Semantic Publishing for WordPress](http://www.slideshare.net/cyberandy/wordlift-30-dynamic-semantic-publishing-for-wordpress) \- 20th February 2014 - _W3C_ | Rome, Italy * [WordLift 2 Pitch at the JBoye conference](http://www.slideshare.net/cyberandy/wordlift-20-pitch-at-jboye11-in-aarhus) \- 08th November 2011 - _JBoye11_ | Aarhus, Denmark --- --- url: https://docs.wordlift.io/pages/analysis/ --- # Analysis | WordLift Developer Documentation # Analysis **WordLift** suggests to the content editor relevant fact-based information, images and links to organize and enrich contents. **WordLift** analyses articles using _Named Entity Recognition_ (NER) and _Named Entity Disambiguation_ (NED) to extract [Named Entities](/pages/key-concepts/#entity) from posts and pages. Entities, used for annotating contents, belong to different [knowledge graphs](/pages/key-concepts/#knowledge-graph) or [custom vocabularies](/pages/key-concepts/#vocabulary) including but not limited to DBpedia, GeoNames and Freebase. WordLift creates and publishes annotations as [linked open data](/pages/key-concepts/#linked-open-data). ## Content Writing[โ€‹](#content-writing "Direct link to Content Writing") To start working with WordLift (once the plugin has been properly [installed](/wordpress-plugin/getting-started/#installation) and [configured](/wordpress-plugin/getting-started/#configuration)) you can simply start writing a blog post using the [standard visual editor of WordPress](https://en.support.wordpress.com/visual-editor). WordLift adds to the visual editor the Widgets Menu to embed [widgets](/pages/key-concepts/#widget) in page. ![image](/assets/images/wordlift-menu-53f7fb0b1c222557109e5c42b87a303f.png) Warning WordLift is designed for the standard **WordPress visual editor**.**WordLift also offers experimental support for Visual Builders. Contact us to test your specific install**. Note You can decide to switch WordLift's analysis ON and OFF by clicking on the _open|close_ arrow on the top right corner of the WordLift's Edit widget. ![image](/assets/images/wl_toggle_3-13-3-36890b0a7d1d1060f91a5c356c28386b.gif) ## WordLift Widgets Menu[โ€‹](#wordlift-widgets-menu "Direct link to WordLift Widgets Menu") The menu lets you add five different [widgets](/pages/key-concepts/#widget) to your blog post.\` Widgets \`\_ provide a rich visual presentation of the entities populating the post and help readers find more relevant contents. Note As the site grows with new articles, new entities are created and contents are annotated, the graphical widgets automatically reflect the changes **without requiring any intervention from the editor**. This brings fresh new updates on your contents. The five [widgets](/pages/key-concepts/#widget) are: * **Chord**: Visualizes the relationships between all entities starting from entities mentioned in the post. * **Timeline**: Displays a chronological and navigable list of entities marked as _Event_ mentioned in the post. * **GeoMap**: Displays on a map all entities of type _Place_ mentioned in the post. * **Navigator**: Provides content recommendations by presenting relevant **internal** links to other blog posts on the same website. * **Faceted Search Widget**: Provides a faceted search user interface to help readers find relevant articles using the network of entities. Each widget has a corresponding shortcode; review the [widget shortcodes page](/pages/shortcodes/#widget-shortcodes) for more information on how this works. ## Analysing the text[โ€‹](#analysing-the-text "Direct link to Analysing the text") As you begin to write the content on the post, WordLift automatically starts analysing it. Once you hit the **Save Draft** button _for the first time_, [entities](/pages/key-concepts/#entity) are extracted and underlined. ![image](/assets/images/wordlift-content-analysis-results-f7b5d427e86f6312f3d088610efa5741.png) By clicking on each entity you can [reconcile](/pages/key-concepts/#reconciliation) it with the same entity in DBpedia or Freebase using the [WordLift Edit Post Widget](#wordlift-edit-post-widget)(#wordlift-edit-post-widget). The entities that you choose will annotate this blog post. Note Text annotation in WordLift is _semi-automatic_. [Entities](/pages/key-concepts/#entity) being extracted automatically must be validated by the editor before being recorded. With WordLift you can identify the basic '_who_, _what_, _when_ and _where_' of an article. You can also further structure the contextual information by creating new entities in the [custom vocabulary](/pages/key-concepts/#vocabulary). Annotations are added to posts and pages using the **WordLift Edit Post Widget**. ### WordLift Edit Post Widget[โ€‹](#wordlift-edit-post-widget "Direct link to WordLift Edit Post Widget") Articles can be annotated in two ways: * **Top down**: entities are organized using the '_who_, _what_, _when_ and _where_' categories **regardless of where each entity appears in the text**. When you choose an entity using the **top down** approach **all occurrences of that entity are annotated**. * **Bottom up**: entities are annotated and organized using the '_who_, _what_, _when_ and _where_' categories **starting from each specific occurence of the entity in the text**. When you choose an entity using the **bottom up** approach **only the choosen occurrence of that entity is annotated**. #### Top down annotation[โ€‹](#top-down-annotation "Direct link to Top down annotation") The content editor, from the list of entities being detected in the text, uses these entities to describe his/her post without selecting any specific occurrence in the text. Entities being selected, in this case, describe the entire post (and not the single occurrence of the entity in the text). ![image](/assets/images/wordlift-edit-post-widget-01-3b6910db6e5a418c2cc014727a1aea21.png) #### Bottom up annotation[โ€‹](#bottom-up-annotation "Direct link to Bottom up annotation") The content editor has choosen the โ€œExpo 2015โ€ occurence in the text. In this case, this specific occurrence, is annotated with the entity "Expo 2015". ![image](/assets/images/wordlift-edit-post-widget-02-e297d1be00a8fe872da580b8685634ca.png) #### Edit Entity Properties[โ€‹](#edit-entity-properties "Direct link to Edit Entity Properties") The content editor is editing the main properties for the entity "Expo 2015" while writing the post. The complete list of properties can be edited clicking on the "open in vocabulary" link (see [Edit Entity](/pages/edit-entity/) page.) ![image](/assets/images/wordlift-edit-post-widget-03-6241b4fbdc2389347602def118807d9e.png) #### Image Suggestor[โ€‹](#image-suggestor "Direct link to Image Suggestor") ![image](/assets/images/wordlift-edit-post-widget-04-999e448fa784a76d22567e4ca0160502.png) Images for each entity appear in the WordLift Edit Post Widget and can be embedded in the visual editor. ## Reconciling entities[โ€‹](#reconciling-entities "Direct link to Reconciling entities") ![image](/assets/images/wordlift-content-analysis-disambiguation-start-f36892f6630bee746df63dcb1aeffab1.png) Let's choose as relevant entity in this example _\[Web\]_, as the post is referring to the World Wide Web. As the entity type for _\[Web\]_ is a `Thing` the entity appears under the _what_ category. Note [Reconciling](/pages/key-concepts/#reconciliation) entities means **linking** the entity appearing in this text with its own equivalent on other sources (i.e. DBpedia or Freebase). ![image](/assets/images/wordlift-edit-post-widget-05-768e0e44390b1b917ae55c02efb761ad.png) Using the [WordLift Edit Post Widget](#wordlift-edit-post-widget) you can now read the following parameters: * **Entity Title** the name of the entity * **Entity Category** the type of entity according to the `schema.org` vocabulary * **Entity Description** the description of the entity All parameters but the Title can be edited directly from the [WordLift Edit Post Widget](#wordlift-edit-post-widget)(#wordlift-edit-post-widget) Note Data being used for the enrichments comes from openely avaialble sources like DBpedia that might contain misleading information that the editor can alwasy edit. Entity properties can also be edited clicking on the "open in vocabulary" link (see [Edit Entity](/pages/edit-entity/) page.) Once you hit **Save** you are annotating this post which means adding a [semantic fingerprint](/pages/key-concepts/#semantic-fingerprint) to this piece of content. In this post another important entity worth mentioning is the creator of the World Wide Web Sir Tim Berners-Lee. The entity is properly identified as `Person` and all `Person` and `Organization` types are available under the _who_ category. ![image](/assets/images/wordlift-content-analysis-disambiguation-berners-lee-c6cc681f450f613dc85247fde5c801f7.png) Note Annotations are saved when a blog post or a page is published. Annotations and data related to each entity being annotated remain in _draft_ untill the post is published. Warning When the text from the Visual Editor is edited or removed all annotations being saved are lost. WordLift stores the editor's selection of entities in the content of the Visual Editor. ## Creating a new entity[โ€‹](#creating-a-new-entity "Direct link to Creating a new entity") The purpose of using WordLift is to (1) categorize your content, (2) help people find content of interest to them, and (3) help WordLift describe your contents in _machine-readable_ format so that other computers can re-use it. In some cases key concepts that are important for (1), (2) and (3) are not automatically detected by WordLift and need to be taught by creating new entities. Note A basic guideline for adding entity is: people should apply entities the same way a librarian would plausibly use tags to classify the content you're writing if it was a book. For some basic guidelines on when creating new entities [read here](/pages/faq/#what-are-the-guidelines-for-creating-new-entities-to-annotate-a-blog-post-or-a-page). New entities being added will become part of the [WordLift vocabulary](/pages/key-concepts/#vocabulary). Once an entity as been added to the vocabulary it will be automatically detected every-time you mention it again in your contents. In our example one significant entity has not been detected and it is worth _teaching_ it to WordLift. ![image](/assets/images/wordlift-content-analysis-new-entity-highlight-12c7c3256fa72ba05cb785081911c154.gif) The entity is _\[WordLift\]_ itself. To create a new entity simply highlight the text `WordLift`, then click the button **Create New Entity** at the top of the [WordLift Edit Post Widget](#wordlift-edit-post-widget) and by clicking it you will be then able to edit the properties of the new entity. ![image](/assets/images/wordlift-content-analysis-new-entity-creation-1777f55b7c4189ebec47dd459c0fa8cd.png) Choose the category _Creative Work_ (it also applies to _Software_), add a description and hit the "Save" button. Now the new entity will appear as [related entities](/pages/key-concepts/#related-entities) of the blog post along with _\[Web\]_ and _\[Tim Berners-Lee\]_. ![image](/assets/images/wordlift-content-analysis-new-entity-creation2-08fcab10511f533534a980a3cefdb9e1.png) Warning When creating a new entity over **an existing annotation**: a) remove the annotated entity, b) re-write the entity and c) create a new one (as described above). See animation below. ![image](/assets/images/wl-new-entity-specific-case-997a31ee3e9fc004e3ba674051257165.gif) You can now continue to the [Edit Entity](/pages/edit-entity/) page. --- --- url: https://docs.wordlift.io/pages/api/ --- # APIs | WordLift Developer Documentation # APIs To learn more about our API, head over to our [Wordlift API Guide](https://docs.wordlift.io/category/api/) for more information. --- --- url: https://docs.wordlift.io/pages/discover/ --- # Discover | WordLift Developer Documentation # Discover **WordLift** brings to the readers of your site multiple means of **content discovery**. **WordLift** leverages on the semantic network of concepts (or [entities](/pages/key-concepts/#entity)) being created to help users explore the content of your site. Using the [graph](/pages/key-concepts/#knowledge-graph) created by **WordLift** innovative ways of navigating the contents can be implemented (this is particularly true if you are a developer.) **WordLift** helps users discover content in **eight different ways**: 1. **Links to Entity Pages**: linking annotated entities, now also features a Context Card presenting a preview of the concept; 2. **Navigator Widget**: providing links to other blog posts related to the article; 3. **Faceted Search Widget**: helping users discover related content using other entities; 4. **Timeline Widget**: creating beautiful and interactive timelines; 5. **Geomap widget**: displaying entities of type "Place" on a map; 6. **Chord Widget**: providing a quick overview of the network of concepts related to an article; 7. **Entity Cloud Widget**: presenting the list of entities mentioned in the article; 8. **Glossary Widget**: presenting entities in alphabetical order. ## Links to Entity Pages[โ€‹](#links-to-entity-pages "Direct link to Links to Entity Pages") **Entity Links** are useful for three reasons: 1. They allow users to navigate the website 2. They help establish information hierarchy using the network of entities 3. They could help spread link juice (ranking power) around the websites for better SEO. ![image](/assets/images/wordlift-discover-entity-links-a8f8b35c85e423e4df4eb8bf3384484a.png) These links can be personalised using the CSS class `wl-entity-page-link`. As seen in the example NASA is a link to an entity page while Mars is a normal link to an external webpage. ### Context Cards[โ€‹](#context-cards "Direct link to Context Cards") **Context Cards** provide an immediate preview of an entity. If the entity has been annotated and, if links are active, WordLift will show a preview of the annotated entity. By default context cards will show up on _hovering_ if [Links to Entity Pages](#links-to-entity-pages) are enabled. To disable context cards, add the following code to your theme: ``` add_filter('wl_context_cards_show' '__return_false') ``` ``` ``` Note Based on the original work of [Wikipedia Context Cards](https://github.com/joakin/context-cards). ## The Navigator Widget[โ€‹](#the-navigator-widget "Direct link to The Navigator Widget") The **Navigator Widget** provides content recommendations by presenting relevant links to other blog posts on your website. ![image](/assets/images/wordlift-discover-navigator-345c1c3ce542fbee022ccb40a78cbb6a.png) Each tile presents a **link to a semantically related blog post** (and optionally a **link to an entity**). The template for the **Navigator Widget** can be modified and styled as per the theme UI. ## The Faceted Search Widget[โ€‹](#the-faceted-search-widget "Direct link to The Faceted Search Widget") Using the **Faceted Search Widget** readers, selecting concepts they are interested in, can find all related articles. ![image](/assets/images/wordlift-edit-entity-faceted-search-widget-frontend-02b34e2c294dbdfafde1fe7ad4881da6.gif) Users can choose multiple concepts to drill down the list of articles related to them. The default title for this widget - when it is added to a page - is "**Related articles**". This title be customised by adding the new title in the shortcode as shown in the example below. ``` [wl_faceted_search title="this is my new title"] ``` ## The Timeline Widget[โ€‹](#the-timeline-widget "Direct link to The Timeline Widget") **WordLift** uses the powerful [TimelineJS](https://timeline.knightlab.com/) to create beautiful, interactive timelines. The timeline widget in **WordLift** uses nothing more than [entities of type event](/pages/edit-entity/#edit-an-event) mentioned and annotated in the article. [Entities of type event](/pages/edit-entity/#edit-an-event) can be linked to entities of type place via the property _location_ (this describe where the event is taking place). If a place is mentioned in the article and it is linked to an event the timeline will display this event also. ![image](/assets/images/wordlift-shortcodes-timeline-c058f998afc06ac227d6fcdcc618b905.png) Note In order for an event to appear in the timeline the event property _startDate_ shall be present as illustrated [here](/pages/edit-entity/#edit-an-event). It is possible to personalise the layout of the timeline using any of [the presentation options of TimelineJS](https://timeline.knightlab.com/docs/options.html) plus three additional parameters provided by WordLift: 1. **excerpt\_length** let's you control the lenght of text (in number of characters) displayed for each event (this corresponds to the description of the entity) 2. **display\_images\_as** the default value is _media_, alternatively you can use _background_ and the fetured image of the entity will be used as background 3. **global** when set to _true_ the timeline displays events mentioned in the latest posts (no need to add mentions to places or events in this case). Note When you create a timeline with WordLift you can pass in the shortcode optional parameters to set a variety of presentation options. These are derived from the TimelineJS library [read more here](https://timeline.knightlab.com/docs/options.html). ``` [wl_timeline display_images_as='background' height='600px' excerpt_length=25 global='true'] ``` This shortcode above produces the following result: ![image](/assets/images/wordlift-shortcodes-timeline-02-2ada84c59ea65c2b8a62fe9d4b50f277.png) ### The Timeline WordPress Widget[โ€‹](#the-timeline-wordpress-widget "Direct link to The Timeline WordPress Widget") The **Timeline WordPress Widget** is a site-wide Widget that displays events being saved as entities (type event) using the [interactive timeline](#the-timeline-widget). ## The Geomap Widget[โ€‹](#the-geomap-widget "Direct link to The Geomap Widget") The **Geomap Widget** displays entities of type "Place" mentioned in the article on a Geomap. ![image](/assets/images/wordlift-shortcodes-geomap-d625e46af8d4d2fcc1042d8b747ad955.png) ## The Chord Widget[โ€‹](#the-chord-widget "Direct link to The Chord Widget") The **Chord Widget** visualizes the relations between entities within a given article. ![image](/assets/images/wordlift-shortcodes-chord-64565b67a4b03bad217943588e8f2ade.png) User might choose to navigate to an entity page or to another blog post. ## The Entity Cloud Widget[โ€‹](#the-entity-cloud-widget "Direct link to The Entity Cloud Widget") The **Entity Cloud Widget** is a site-wide Widget and a shortcode that displays entities related to the current post/entity in a tag cloud. WordPress Widgets like this one add content and features to your Sidebars. To add the widget: 1. Go to **Appearance > Customize** in the WordPress Administration Screens. 2. Click the **Widget** menu in the Theme Customizer to access to the Widget Customize Screen. It is possible, just like for other WordPress Widgets to personalize the title of the Widget. This widget can also be added to an article or a page with the following shortcode: ``` [wl_cloud] ``` ## The Glossary Widget[โ€‹](#the-glossary-widget "Direct link to The Glossary Widget") The **Glossary** is a site-wide Widget that displays all the entities in alphabetical order. ``` [wl_vocabulary limit=... type=... orderby=...] ``` By default the widget takes into account the latest 100 entities from all types (i.e. Person, Place, Organization, ...). The following paramenters can be used to personalise the entities beind displayed in the vocabulary: 1. **limit** the total number of entities to displaye (_100_ is the defualt value). Use `limit='-1'` to remove the limit. 2. **type** the type of entities to display (_all_ is the default value). Use `type='Person'` to display only entities of type Person. 3. **orderby** the selection is by default related to the alphabetical order (_title_ is the default value). 4. **cat** the selection is done using the WordPress Category ID (the category shall be associated to a set of entities). Read here [how to find the Category ID](http://www.wpbeginner.com/beginners-guide/how-to-find-post-category-tag-comments-or-user-id-in-wordpress/). ![image](/assets/images/wordlift-discover-vocabulary-fe17e1f1acf9c42d92b1a7ca5fdab8af.gif) Here you can see an example of the [Semantic SEO Glossary](https://wordlift.io/blog/en/glossary). In the next section, you can read all about the parameters that you can use to personalize each widget using [shortcodes](/pages/shortcodes/). --- --- url: https://docs.wordlift.io/pages/edit-entity/ --- # Edit Entity | WordLift Developer Documentation # Edit Entity **WordLift** uses [entities](/pages/key-concepts/#entity) to annotate and organize blog posts and pages. All entities can be edited using the [WordLift Edit Post widget](/pages/analysis/#wordLift-edit-post-widget) or from the **Entity Page** itself. To access all entities or add a new entity click on the **Vocabolary** icon on the dashboard menu. ![image](/assets/images/wordlift-edit-entity-vocabulary-c3fa432787773cb35f9045217f5b7e7e.png) When annotating a post with an entity WordLift adds a link to the **entity page**. These links are useful for three reasons: 1. They allow users to navigate the website 2. They help establish information hierarchy using the network of entities 3. They could help spread link juice (ranking power) around the websites for better SEO. Curating **entity pages** with WordLift is similar to writing an article on [Wikipedia](http://wikipedia.org). These _entity posts_ are useful for: * Providing contextual information to articles * Aggregate all contents referring to the same entity ## Edit entity properties[โ€‹](#edit-entity-properties "Direct link to Edit entity properties") The entity page provides the following set of properties that can be edited from the corresponding _meta box_: > * **Name:** the title of the article > * **Description:** the body of the article > * **Image:** the featured image of the article > * **Entity Types:** the corresponding type (i.e. _Thing_, _Person_, _Place_, _Event_, _Organization_, _Creative Work_, ...) that can be managed via the _WordLift - Entity Type_ box in the editing window > * **Permalink:** the URL describing the entity > * **Same-As:** the URLs of same entity on the different sources ![image](/assets/images/wordlift-edit-entity-informations-bd5c3775b94801c977ef89d80d7d8ee7.png) ### Entity types and properties Table[โ€‹](#entity-types-and-properties-table "Direct link to Entity types and properties Table") Here follows the list of properties that can be edited with WordLift for each entity type. | Type | Description | Properties | Schema.org | | -------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | Thing | The most generic type of entity. | name,description,image, type,URL,sameAs, additionalType. | [Thing](http://schema.org/Thing) | | Person | A person. | name,description,image, type,URL,sameAs, additionalType. | [Person](http://schema.org/Person) | | Place | Entities with a physical extension. | name,description,image, type,URL,sameAs, additionalType,geo. | [Place](http://schema.org/Place) | | Event | An event happening in a specific time and location. | name,description,image, type,URL,sameAs, additionalType,location, startDate,endDate,performer, offers. | [Event](http://schema.org/Event) | | Offer | An offer. | name,description,image, availability,price,URL, priceCurrency, availabilityStarts, availabilityEnds, inventoryLevel,validFrom, priceValidUntil,itemOffered. | [Offer](http://schema.org/Offer) | | Organization | An organization. | name,description,image, type,URL,sameAs, additionalType,founder. | [Organization](http://schema.org/Organization) | | Local business | A physical business or branch of an organization. | name,description,image, type,URL,sameAs,address founder,geo. | [LocalBusiness](http://schema.org/LocalBusiness) | | Creative Work | The most generic kind of Creative Work(i.e. Software). | name,description,image, type,URL,sameAs, additionalType. | [CreativeWork](http://schema.org/CreativeWork) | | Recipe | A food recipe. | name,description,image, type,URL,sameAs, additionalType, cookTime, prepTime, totalTime, recipeCuisine, recipeIngredient, recipeInstructions, recipeYield, author, nutrition.calories. | [Recipe](http://schema.org/Recipe) | ### Edit an Event[โ€‹](#edit-an-event "Direct link to Edit an Event") Events, occuring in a specific time are also entities. To personalise the _startDate_, _endDate_ and _location_ of an event you can use the **Event Properties** box. ![image](/assets/images/wordlift-edit-entity-event-f748f0b443ad1396926f0cfc389232f0.png) It is also possible to link an event with the _performer_ (a presenter, a musician, or a group of speakers) by adding a reference to either a Person or an Organization. Event can also be linked with an Offer - _this is an entity type_ \- that help us define for example the price for the tickets to an event. ### Edit a Place[โ€‹](#edit-a-place "Direct link to Edit a Place") Places are also entities. To personalise the _geo coordinates_ (longitude and latitude) of a place I can use the **Coordinates** box and either edit the _Latitude_ and _Longitude_ fields or simply place the pinpoint on the map. ![image](/assets/images/wordlift-edit-entity-place-98b185fe3cdda6429d4d1869fd3eaa2c.png) ### Edit a Recipe[โ€‹](#edit-a-recipe "Direct link to Edit a Recipe") Recipes are also considered entities. To personalise _ingredients_, _cuisine_, _preparation time_, _cooking time_, _total time_, _number of portions_, _author_ and _calories_ I can edit the data using the Recipe meta boxes (make sure to choose the entity type _Recipe_ in order to see these additional fields). ![image](/assets/images/wordlift-edit-entity-recipe-01-5af6bc1d06ad933fd9443e941c0a3a91.png) ![image](/assets/images/wordlift-edit-entity-recipe-02-644d5cea45a5a9518ce5c6117e094162.png) ### Edit a Offer[โ€‹](#edit-a-offer "Direct link to Edit a Offer") An offer can be linked from an event and it helps us define for instance the pricing of an event. ![image](/assets/images/wordlift-edit-entity-offer-5e4c2d6b4250134efdb5f9de8e6946d9.png) ## Updating the description[โ€‹](#updating-the-description "Direct link to Updating the description") When we have something meanigful to say on a specific concept **we shall curate the information and edit the data that has been fetched automatically by WordLift** (_this will create our own version of Wikipedia_). ## Linking other entities[โ€‹](#linking-other-entities "Direct link to Linking other entities") Entity pages can be annotated just like you would do with a blog posts. After saving the new description you wrote, WordLift will analyze the text and suggest related entities. You can now _link_ an entity with other entities. WordLift will store these relationships between one entity and other entities in the [graph](/pages/key-concepts/#knowledge-graph) using the Dublin Core property `dct:related`. This information will be used to infer new connections between the contents of the site. For more information on _entity linking_ [read the faq](/pages/faq/#when-should-i-link-one-entity-to-another). ## The Faceted Search Widget[โ€‹](#the-faceted-search-widget "Direct link to The Faceted Search Widget") **Entity pages** can be used for helping users browse the content of your website. This is done using the **Faceted Search Widget**. The Widget can be added on the entity page using the **Faceted Search** option from the [Widgets Dropodown Menu](/pages/analysis/#wordlift-widgets-menu) ![image](/assets/images/wordlift-edit-entity-faceted-search-widget-b942e4d616c88054314f06d8ac82f266.png) Alternatively, the `[wl_faceted_search]` shortcode can be used. * **Faceted Search**: Provides a faceted search user interface to help readers discover relevant articles using the network of entities. ![image](/assets/images/wordlift-edit-entity-faceted-search-widget-frontend-02b34e2c294dbdfafde1fe7ad4881da6.gif) The example above represents the widget displayed in the front-end. The reader can select multiple concepts and highlight the list of articles related to these concepts. ## Save data[โ€‹](#save-data "Direct link to Save data") In order to save the information on the entity press the "Publish" button. When making changes to an already existing entity press the "Update" button. In both cases data will be stored simultaneously on the WordPress site as well as in the [graph](/pages/key-concepts/#knowledge-graph). You can now continue to the [publish](/pages/publish/) page. --- --- url: https://docs.wordlift.io/pages/editors/ --- # Editors | WordLift Developer Documentation # Editors ## Classic Editors[โ€‹](#classic-editors "Direct link to Classic Editors") WordLift works on the Classic Editor in WordPress.**Attention**: the WordLift plugin works only in Visual mode. **New post** Create a new post, add its title, start writing content. Once the article is finished, save the draft. ![image](/assets/images/classic-editor-df9f942c8ff61ca8d3a45a7ca6380569.png) Go back to the article draft and select entities you wish to annotate your article with, just by clicking on each tile in the WordLift sidebar on the right. Once youโ€™ve finished annotating and curating the article's metadata publish and youโ€™re set. ## Block Editors[โ€‹](#block-editors "Direct link to Block Editors") WordLift works on the Block Editor in WordPress.**Attention**: the WordLift plugin works only in Visual mode. **New post** Create a new post, add its title, start writing content. Once the article is finished, save the draft. ![image](/assets/images/block-editor-af5c1f17327cdf746761659cdaffe086.png) Go back to the article draft and click on the W. Clicking on W the WordLift sidebar will appear, from there you can select entities you wish to annotate your article with, just by clicking on each tile. Once youโ€™ve finished annotating and curating the article's metadata, publish and youโ€™re set. ## Automatic Summarization[โ€‹](#automatic-summarization "Direct link to Automatic Summarization") WordLift uses state of the art [Natural Language Processing](https://wordlift.io/blog/en/entity/natural-language-processing/) to summarize the content that you write. You can use the summarization for writing the meta description, for promoting your article on social networks and a lot more! Note Automatic Text Summarization is available on all Business and Enterprises licenses. [Contact our sales team](https://wordlift.io/contact-us/) to upgrade your subscription. WordLift uses the summarized content for the description property of schema [(schema:description)](https://schema.org/description) . This is also used in [WordLiftโ€™s context cards](https://wordlift.io/blog/en/entity/context-card/) . Here is how it works: first of all make sure that excerpts are visible in your WordPress installation. Excerpts are used in WordPress to add summaries of your content. WordLift will generate the summary when you hit the Refresh button. By clicking on the Use button you will be able to edit the provided summary and save it as an excerpt for your blog post. ![image](/assets/images/automatic-summarization-c8604c40804722a88781b6748656a07b.gif) Want to learn more about text summarization for SEO? Here is a video tutorial on [how to use content summarization to create meta descriptions](https://wordlift.io/academy-entries/generating-meta-descriptions-bert/) . --- --- url: https://docs.wordlift.io/pages/faq/ --- # Who is WordLift for? | WordLift Developer Documentation # Who is WordLift for? **WordLift** is for all _bloggers_, _journalists_, and _content marketers_ publishing and fighting for readersโ€™ attention on the web.**WordLift** democratizes the field, bringing to the hands of all web content creators the technology that web publisher giants such as _Google_, _Facebook_ and the _BBC_ are using to organize and monetize their content.**WordLift** helps you create richer and more engaging content, optimizes it for all search engines and efficiently organizes your content creation process, allowing you to reach and speak directly to your tribe. ## Why shall I use WordLift?[โ€‹](#why-shall-i-use-wordlift "Direct link to Why shall I use WordLift?") Organizing web content around an internal vocabulary rather than traditional web pages helps both users and machines finding and accessing it, improving navigation, content re-use, content repurposing, and search engine rankings.**WordLift** **organizes** content, reducing the complexity of content management and content marketing operations, letting bloggers and site owners focus on stories and communities.**WordLift** **enriches** your content with _contextual information_, _links_, and _media_, from custom vocabularies and/or the wealth of open data available on the web, bringing your user experience to a new level of engagement.**WordLift** **connects** content with cross-media _discovery_ and _recommendations_ widgets, increasing content quality, exposure, trustworthiness and readership engagement.**WordLift** **optimizes** content, complementing the offer of plug-ins such as _SEO Ultimate +_ or _Yoast_, automatically adding [schema markup](https://wordlift.io/blog/en/entity/schema-org/) to your text, allowing all search engines to properly index your pages and deliver more traffic to your site. ## How does it work?[โ€‹](#how-does-it-work "Direct link to How does it work?") Note To know more about how **WordLift** works, please [watch the step by step video tutorials](https://wordlift.io/how-it-works/) on our [website](https://wordlift.io). **WordLift** works in subsequent stages. 1. The first step provides a **full text analysis** and suggests concepts and relationships found in open vocabularies (such as _DBpedia_, _Wikidata_, _GeoNames_, etc) to help writers **classify** and **enrich** their content and structure it for search engines like Google, according to schema.org vocabulary. 2. Writers can then create new entities, to complement the ones suggested automatically, and to be published as part of a **proprietary vocabulary**, acting both as a **reference** and a **search magnet** for their readers, according to the editorial plans. 3. **WordLift** also assists writers suggesting **links**, **media** and providing a set of powerful **visualization widgets** to connect and recommend alternative content, to boost readersโ€™ engagement. 4. Finally **WordLift** provides means to record all these relationships in a graph database allowing search queries like _โ€œfind all contents related to concept\_y and relevant for target\_zโ€_. ## What are the languages supported by WordLift?[โ€‹](#what-are-the-languages-supported-by-wordlift "Direct link to What are the languages supported by WordLift?") WordLift currently supports 32 languages: Chinese, Danish, German, English, French, Italian, Dutch, Russian, Spanish, Portuguese, Swedish, Turkish, Albanian, Belarusian, Bulgarian, Catalan, Croatian, Czech, Estonian, Finnish, Hungarian, Icelandic, Indonesian, Latvian, Lithuanian, Norwegian, Polish, Romanian, Serbian, Slovak, Slovenian, Ukrainian. Note WordLift supports one language at the time. The main language of the website can be configured from the WordLift settings. Review the [configuration settings](/wordpress-plugin/getting-started/#configuration) for more information. ## Is there a free trial?[โ€‹](#is-there-a-free-trial "Direct link to Is there a free trial?") Yes! All of our subscriptions come with a **14-day free trial**. If after two weeks you are not happy with WordLift, [contact us](mailto:support@wordlift.io) and we will cancel your subscription, no questions asked. In addition, with the purchase of our 12-month packages, we offer 20% discount. [Check it out](https://wordlift.io/pricing)! ## Who owns the structured metadata created with WordLift?[โ€‹](#who-owns-the-structured-metadata-created-with-wordlift "Direct link to Who owns the structured metadata created with WordLift?") **You do!** We believe content creators should retain the commercial value of their content and all the data they create and exploit it through **new business models** based on **content syndication**, **data-as-a-service** and a stronger **relationship with their audience**. You can open your datasets to the public, attaching to it a free or a commercial licence. Otherwise, use your data to feed **chat bots** such as Facebook Messenger or Telegram, providing live feed updates on your activity and/or automatic customer service in real time. ## What happens if I stop using WordLift?[โ€‹](#what-happens-if-i-stop-using-wordlift "Direct link to What happens if I stop using WordLift?") 1. If you stop paying for your subscription, but keep the plugin on your site, all the entities, metadata and pages you created with wordlift will still be available on your site - you won't be able to update it any longer, but they will still work just fine as they were at the moment you removed the key. The data youโ€™ve created belongs to you and you can always request to us a data dump that is available in various machine-readable formats. 2. if you deactivate the plugin instead, the vocabulary (metadata, entity and pages) will disappear from your dashboard, but everything you created is stored in your website Database in WordPress, and you will be able to download it, transfer it or re-activate it again anytime from the plugin menu. 3. Turning off WordLift on our side, it would be like turning off all the keys and un-publish all the linked data youโ€™ve created, not the plug-in itself, so it will be like ##1 - you could get the data back from us and re-publish it as [linked data](https://wordlift.io/blog/en/entity/linked-data/) on your own infrastructure. 4. WordLift's technology is entirely open source: it takes development skills, infrastructure and some wisdom to nicely bring all the pieces together without our support. 5. Your vocabulary (article metadata and entities) are published as [linked data](/pages/key-concepts/#linked-open-data) and you can always request a data dump in any of the following formats: RDF/XML, Turtle, N3, JSON-LD. ## Is WordLift Secure?[โ€‹](#is-wordlift-secure "Direct link to Is WordLift Secure?") Security has been a consideration from day one. We have worked for many years in high-security environments such as parliaments and telco operators and we leverage on all of our experience to protect the data of our users. #### So, what are some of the ways we do this?[โ€‹](#so-what-are-some-of-the-ways-we-do-this "Direct link to So, what are some of the ways we do this?") * WordLift plugin and front end only use [SSL](http://info.ssl.com/article.aspx?id=10241). * Your data from the WordLift store is in a dedicated database, with access granted only to the WordLift store web site account originating from the WordLift store network address. * Keys for accessing your account page are transmitted securely over SSL and encrypted from the moment we receive them. * Any data transmitted between WordLift and our server farm is done over SSL. * Your data is **not shared with or handled by** any other services or companies, with the exception of the data published as open data. * WordLift itself is a small team, which limits the number of people with any access to your data. * There are regular security reviews of all WordLift servers and components. * You can ask us to delete your account information at any time. Contact us by by [email](mailto:hello-gdpr@wordlift.io), or by [making a request here](https://wordlift.gdprform.io/). If you have any other questions, concerns, or want to clarify anything listed on this page, please let us know. ## Why and how should I customize the url of the entity pages created in my vocabulary?[โ€‹](#why-and-how-should-i-customize-the-url-of-the-entity-pages-created-in-my-vocabulary "Direct link to Why and how should I customize the url of the entity pages created in my vocabulary?") When selecting or creating new entities with WordLift, you are actively [building your internal vocabulary](https://wordlift.io/8-rules-create-vocabulary-wordpress-website/), adding pages to your website. When you first built your website, you chose a pattern for the url of the pages you were going to add, such as [www.domain.com/name-of-the-page](http://www.domain.com/name-of-the-page) or [www.domain.com/seo-keyword/name-of-the-page](http://www.domain.com/seo-keyword/name-of-the-page). The same applies with all the pages created with WordLift inside your vocabulary. 1. By default WordLift will add the word โ€œvocabularyโ€ between your root domain and the name of the page: [www.domain.com/vocabulary/name-of-the-entity-page](http://www.domain.com/vocabulary/name-of-the-entity-page). 2. You can delete the word vocabulary if you want the new entity page to be inside your root domain folder: [www.domain.com/name-of-the-entity-page](http://www.domain.com/name-of-the-entity-page). 3. Or you can replace vocabulary with another keyword (or keywords) of your choice, for SEO or branding reason: [www.domain.com/seo-keyword/name-of-the-entity-page](http://www.domain.com/seo-keyword/name-of-the-entity-page). ## Why is it important to organize my content and publish it as Linked Data?[โ€‹](#why-is-it-important-to-organize-my-content-and-publish-it-as-linked-data "Direct link to Why is it important to organize my content and publish it as Linked Data?") Organizing web content around concepts rather than traditional web pages helps both users and machines finding and accessing it, improves **navigation**, **content re-use**, **content repurposing** and **search engine rankings**.**Enriching content** with _contextual information_, _links_ and _media_, from custom vocabularies and/or the wealth of **open data** available on the web, brings the user experience to a new level of engagement. Structuring content with **richer metadata** and publishing it as [linked data](https://wordlift.io/blog/en/entity/linked-data/) makes it **discoverable and searchable**, providing new ways of reaching targets. ## Why is WordLift innovative?[โ€‹](#why-is-wordlift-innovative "Direct link to Why is WordLift innovative?") **WordLift** is **first-to-market** following a **โ€œcontent organizationโ€ approach** which allows the classification and direct exploitation of proprietary content and structured metadata.**Wordlift** helps publishers create their **knowledge graph**, _exploit it_ and _monetize it_. Finally **WordLift** complements the offer of plug-ins such as _SEO Ultimate +_ or _Yoast_ automatically adding [schema markup](https://wordlift.io/blog/en/entity/schema-org/) to content, allowing search engines to properly index pages, increasing traffic from organic searches. ## What is content enrichment?[โ€‹](#what-is-content-enrichment "Direct link to What is content enrichment?") Content enrichment is a processes used to refine and improve textual content by embedding structured data (_metadata_) on web pages. This _metadata_ is made available to search engines and other data consumers. ## What entity types are supported and how they map to Schema.org?[โ€‹](#what-entity-types-are-supported-and-how-they-map-to-schemaorg "Direct link to What entity types are supported and how they map to Schema.org?") _Thing_, _Person_, _Place_, _Event_, _Organization_, _LocalBusiness_, _Creative Work_ and _Recipe_ are the supported types. Review the [Edit Entity page](/pages/edit-entity/##entity-types-and-properties-table) for more information. ## When should I create a new entity?[โ€‹](#when-should-i-create-a-new-entity "Direct link to When should I create a new entity?") You should create a new entity when this is directly relevant to the content you're writing and it doesn't already exist. When an entity is properly recognised by WordLift you shall edit this entity rather then creating a new one. You can add as many entities as you like. ## What are the guidelines for creating new entities to annotate a blog post or a page?[โ€‹](#what-are-the-guidelines-for-creating-new-entities-to-annotate-a-blog-post-or-a-page "Direct link to What are the guidelines for creating new entities to annotate a blog post or a page?") A basic guideline for adding a new entity is: > "_people should create entities that a librarian would plausibly use to classify the content as if it was a book._" The purpose of using WordLift is to (1) categorize your content, (2) help people find content of interest to them, and (3) help WordLift describe your contents in _machine-readable_ format so that other computers can re-use it. In some cases key concepts that are important for (1), (2) and (3) are not automatically detected by WordLift and need to be taught. To teach WordLift new concepts a new entity shall be created. Note When entities already exist on a website in the form of posts or pages we shall always avoid creating a new entity and instead turn these posts or pages into entities. [Here is how](https://wordlift.io/blog/en/wordlift-3-15/). People should add entities that are accurate and directly relevant to the content they're writing. Excessively broad entities should not be added to content. Content should not be overloaded with entities to increase its distribution online. As a general guideline, 6โ€“8 entities should be adequate for most blog posts (based on the lenght of the article). If an article has too many entities it may be that some of the entities could be replaced with a single broader entity. All entities shall be matched to the proper language of the content. There are two important articles to read on this topic: 1. [8 Rules To Create A Vocabulary For Your WordPress Website](https://wordlift.io/blog/en/8-rules-create-vocabulary-wordpress-website/) 2. [Entity Based SEO: How To Optimize Your Entity Vocabulary](https://wordlift.io/blog/en/use-vocabulary/) ## How can I search for the equivalent entity in the web of data?[โ€‹](#how-can-i-search-for-the-equivalent-entity-in-the-web-of-data "Direct link to How can I search for the equivalent entity in the web of data?") A published datasets like the knowledge graph that users create with WordLift shall link to other existing datasets using the OWL `owl:sameAs` property. This property creates an equivalence class between two nodes of an RDF graph. [Tim Berners Lee](https://wordlift.io/blog/en/entity/tim-berners-lee/) in his "Linked Data" note of 2006 outlined 4 principles of [linked data](https://wordlift.io/blog/en/entity/linked-data/): 1. Use URIs to name (identify) things. 2. Use HTTP URIs so that these things can be looked up (interpreted, "dereferenced"). 3. Provide useful information about what a name identifies when it's looked up, using open standards such as RDF, SPARQL, etc. 4. Refer to other things using their HTTP URI-based names when publishing data on the Web. Specifically the **4th linked data principle** is meant to ensure a Web of data and not just a set of unconnected data islands. WordLift during the analysis automatically interlinks all detected entities with several datasets (DBpedia, Yago, Freebase etc.) but what if we are creating a new entity from scratch? How can we find an equivalent resource in the Web of linked data? There are basically four ways of doing it. The goal is to provide an information that can be understood by semantic search engines like Google, Bing and Yandex: 1. **use WordLift sameAs search box**. WordLift will look for entities in Wikidata, DBpedia and on the datasets configured behind the WordLift key for the equivalent entity. This feature has been introduced with WordLift 3.15 [learn more about this feature here](https://wordlift.io/blog/en/wordlift-3-15/). 2. **ask Google Search** a query by adding "site:dbpedia.org" to the name of the entity (ie "_site:dbpedia.org apache marmotta_"). Google will provide a list of results, chose the URL that start with _dbpedia.org/page/_ (ie _dbpedia.org/page/Apache\_Marmotta_), replace `/page/` with `/resource/` and you will have the `owl:sameAs` link to be added to your entity; 3. **look for the entity in Wikidata** by using the search bar on the [wikidata](https://wikidata.org) website. The search bar is on the top right corner. The URL for the equivalent entity of Apache Marmotta in Wikidata is __; 4. **use the Google Knowledge Graph Search API** (here is [a link](https://developers.google.com/knowledge-graph/) to the documentation by Google). You will need an API Key from Google. Using your personal API key you will be able to search the Google Knowledge Graph with simple HTTP request. Here is an example `https://kgsearch.googleapis.com/v1/entities:search?query=andrea+volpini&key=API_KEY&limit=1&indent=True` (simply replace `API_KEY` with your personal API Key). The API responds with a [JSON LD](https://wordlift.io/blog/en/entity/json-ld/); look for the `machine id` that is located under `itemListElement` \> `result` \> `@id`. This should be something like `kg:/m/0djtw2h` now take the id and rewrite it by adding in front __ than replace `/m/` with `/m.` and you should have something like: __. Note While Freebase no longer exists the `machine id` remains valid. We prefer to have such links in the `owl:sameAs` property of entities created with WordLift as these links point to RDF resources. As a matter of fact DBpedia, to interlink with Freebase, still uses these type of links rather than just the `machine id`. ## Can I prevent the analysis to run?[โ€‹](#can-i-prevent-the-analysis-to-run "Direct link to Can I prevent the analysis to run?") Yes. You can switch WordLift's analysis ON and OFF by clicking on the _open|close_ arrow on the top right corner of the WordLift's Edit widget. See the _.gif_ below: ![image](/assets/images/wl_toggle_3-13-3-36890b0a7d1d1060f91a5c356c28386b.gif) What factors determine Wordlift's rating of an entity? ## Can I prevent WordLift from loading Wikimedia images?[โ€‹](#can-i-prevent-wordlift-from-loading-wikimedia-images "Direct link to Can I prevent WordLift from loading Wikimedia images?") Yes. You can prevent WordLift from loading images that come from Wikipedia. In your `wp-config.php`, add the following line:`define( 'WL_EXCLUDE_IMAGES_REGEX', 'https?://[^.]*\.wikimedia\.org/.*' );` **before** the line `/* That's all, stop editing! Happy blogging. */` ## I have already published a JSON-LD on the page. How can I integrate it with the JSON-LD that WordLift creates?[โ€‹](#i-have-already-published-a-json-ld-on-the-page-how-can-i-integrate-it-with-the-json-ld-that-wordlift-creates "Direct link to I have already published a JSON-LD on the page. How can I integrate it with the JSON-LD that WordLift creates?") We provide several options to help you integrate WordLift with the existing markup: 1. Completely disable WordLiftโ€™s JSON-LD by adding `add_filter( 'wl_jsonld_enabled', '__return_false' );` in your theme. 2. Edit WordLiftโ€™s JSON-LD by using WordPress filters (this requires PHP development skills), see [here on Stack Overflow](https://stackoverflow.com/questions/52925820/how-do-i-change-the-json-ld-type-from-article-to-newsarticle-in-wordlift). 3. Use [WordLiftโ€™s Mappings](https://wordlift.io/academy-entries/wordlift-mappings-tutorial/) to customize the JSON-LD using the UI provided by the plugin in _Dashboard > WordLift > Mappings_ 4. Augment WordLiftโ€™s JSON-LD by adding your own custom JSON-LD matching the same @id (in this case Google will merge the data from WordLiftโ€™s JSON-LD and your JSON-LD) ## What factors determine Wordlift's rating of an entity?[โ€‹](#what-factors-determine-wordlifts-rating-of-an-entity "Direct link to What factors determine Wordlift's rating of an entity?") The entity rating in WordLift takes under account the following factors: * Every entity should be linked to one or more related posts. * Every entity should have its own description. * Every entity should link to other entities - when we select other entities to enrich the description of an entity we create relationships in the site's [knowledge graph](/pages/key-concepts/##knowledge-graph). * Entities, just like any post in WordPress, can be kept as draft. Only when we publish them they become available in the analysis and we can use them to classify our contents. * Entities shall have a featured image. When we add a featured image to an entity weโ€™re adding the `schema-org:image` attribute to it. * Every entity (unless weโ€™re creating something completely new) should be interlinked with the same entity contained in at least one other dataset. This is called data interlinking and can be done by adding a link to the equivalent entity using the `sameAs` attribute. * Every entity has a type (i.e. Person, Place, Organization, โ€ฆ) and every type has its own set of properties. When we complete all the properties of an entity we increase the entity visibility and usefulness. ## I have a vocabulary term appearing several times in a page, should I link all of the occurrences to the term, or just once per page?[โ€‹](#i-have-a-vocabulary-term-appearing-several-times-in-a-page-should-i-link-all-of-the-occurrences-to-the-term-or-just-once-per-page "Direct link to I have a vocabulary term appearing several times in a page, should I link all of the occurrences to the term, or just once per page?") While on an average length blog post (> 500 words) we shall use a limited number of entities to classify the content, there is not an actual limit for the number of internal links pointing to the same entity page. In SEO the link juice is transferred equally from every single link: if Google transfers let's say 85% of your article's Page Rank each link will equally get its own share. Five links pointing to the same page will therefore transfer the same amount of link juice of one single link. If I link too many different pages by annotating the blog post with too many entities the link juice will be diluted (and this is why we don't expect to have too many entities per article). Now we need to consider the following: * if on the page (including navigation links, footer links and so on) you have too many links already - you easily might hit the [100 link limit](https://moz.com/blog/how-many-links-is-too-many); there is no penalty for that but still it is a good rule to keep the number of links (both internal and external) below the _100-link mark_; * WordLift is keen on helping you create a good internal linking structure to reduce the bounce rate on your site and to increase the number of pages visited during each browsing session by your readers; if your internal links for the same entity are too many they simply become irrelevant. On the contrary if your article is long enough it is probably good to have 2-3 links pointing to the same entity page (as a reader I might miss the first one and might instead find useful the second or third one). ## When should I link one entity to another?[โ€‹](#when-should-i-link-one-entity-to-another "Direct link to When should I link one entity to another?") By running the analysis on the property description text of an entity you can _link_ it to other entities. WordLift will store these relationships between one entity and other entities in the [graph](/pages/key-concepts/##knowledge-graph) using the Dublin Core property `dct:related`. This information will be used to suggest new connections between the contents of your site. Creating links among relevant entities will create more structure for your content, even though it is not mandatory to do so. You should always link entities that can help other users discover relevant contents (i.e. the entity _\[Berners-Lee\]_ shall be linked to entity _\[Web\]_ as the two concepts are strictly related.) ## How can I enable or disable links to entities?[โ€‹](#how-can-i-enable-or-disable-links-to-entities "Direct link to How can I enable or disable links to entities?") You can enable or disable the link to an entity by toggling the "Link" option for each annotation. See below ![image](/assets/images/wordlift-edit-entity-link-4b0d206c66fce83e1a9ff247c7360d70.gif) You can also enable or disable links site-wide from the WordLift Settings screen in the General tab as shown below. ![image](/assets/images/wordlift-settings-menu-link-6c658e46c110bc2584782acd7ef8db15.png) ## Why do I get 404 error on pages linked by WordLift?[โ€‹](#why-do-i-get-404-error-on-pages-linked-by-wordlift "Direct link to Why do I get 404 error on pages linked by WordLift?") WordPress is a powerful CMS. Nevertheless, in some cases, posts or pages newly created might return a _scary_ **404 Error**. Pages created with WordLift are not an exception and you might end up in a situation where WordLift is creating links to pages that _apparently_ do not exist. Don't worry this is a well-known WordPress issue and it can be easily fixed. Head into the dashboard of your website, click _Settings_ ยป _Permalinks_ and than press the _Save Changes_ button. WordPress will re-generate all the permalinks and the error will be fixed. ![image](/assets/images/wordlift-updatepermalinks-5fa50ce4ba8106634f00b990014bcd1a.png) Read [this article](http://www.wpbeginner.com/wp-tutorials/how-to-fix-wordpress-posts-returning-404-error/) to learn more about this issue from the WPbeginner website. ## What are the datasets WordLift uses for named entity recognition?[โ€‹](#what-are-the-datasets-wordlift-uses-for-named-entity-recognition "Direct link to What are the datasets WordLift uses for named entity recognition?") WordLift by default uses DBpedia and Freebase to detect and link named entities. With a custom configuration, the content analysis services provided by [Redlink](http://www.redlink.co) and available via our professional services, can use any RDF-based [graph](/pages/key-concepts/##knowledge-graph). It is also possible to use _multiple graphs_ for named entity recognition and [dereferencing](/pages/key-concepts/##dereferencing-http-uris). ## How can I prevent WordLift from creating new entity pages?[โ€‹](#how-can-i-prevent-wordlift-from-creating-new-entity-pages "Direct link to How can I prevent WordLift from creating new entity pages?") The best soution is to convert existing posts, pages and taxonomy terms to entities that will become part of your Knowledge Graph. This way youโ€™ll not create new pages but re-link the existing pages on your web site. ## What is a triple?[โ€‹](#what-is-a-triple "Direct link to What is a triple?") A triple is a set of three elements: a subject, a predicate, and an object. Triples are linked together to form a [graph](/pages/key-concepts/##knowledge-graph) that is without hierarchy, is machine readable, and can be used to infer new facts. Triples in WordLift describe facts as metadata about an article or an entity. ## Are there any integrations with Neo4j?[โ€‹](#are-there-any-integrations-with-neo4j "Direct link to Are there any integrations with Neo4j?") Neo4j is a graph database. WordLift stores data in a Linked Data store ([Apache Marmotta](https://marmotta.apache.org)) which provides linked data and SPARQL end-points. As long as Neo4j provides connectors for those interfaces, then an integration is possible. ## Do I need to be Administrator to configure it?[โ€‹](#do-i-need-to-be-administrator-to-configure-it "Direct link to Do I need to be Administrator to configure it?") Yes. To configure WordLift you will need to have admin privileges. ## Which Schema Types does WordLift support?[โ€‹](#which-schema-types-does-wordlift-support "Direct link to Which Schema Types does WordLift support?") WordLift, using the [Business plan](https://wordlift.io/pricing/), **supports all the schema types** listed in the [Schema.org](https://schema.org/) vocabulary. ## What is the advantage of using a custom domain for publishing the knowledge graph?[โ€‹](#what-is-the-advantage-of-using-a-custom-domain-for-publishing-the-knowledge-graph "Direct link to What is the advantage of using a custom domain for publishing the knowledge graph?") WordLift, includes with the [Business plan](https://wordlift.io/pricing/), the option **to support a custom domain** for linked data publishing. This means that you can use your own domain name to host the knowledge graph that WordLift creates. The main advantage is that you can use the same domain name for your website (ie `https://www.example.org`) and for the knowledge graph (`https://data.example.org`). Moreover if you decide to host the knowledge graph on a different platform you are free to do so without any vendor lock-in. WordLift hosts your data in a [Linked Data platform](https://www.w3.org/TR/ldp/), using the custom domain you are free to migrate your data to any other compatible graph platform without the need of changing the URIs of your entities. ## How can I change the JSON-LD _@type_ from _Article_ to _NewsArticle_ in WordLift?[โ€‹](#how-can-i-change-the-json-ld-type-from-article-to-newsarticle-in-wordlift "Direct link to how-can-i-change-the-json-ld-type-from-article-to-newsarticle-in-wordlift") WordLift, allows you to filter the the JSON-LD output before it is sent to the client and change any part of it, e.g. in this specific case:: ``` add_filter( 'wl_post_jsonld', function( $jsonld ) { // Bail out if `@type` isn't set or isn't `Article`. if ( ! isset( $jsonld['@type'] ) || 'Article' !== $jsonld['@type'] ) { return $jsonld; } $jsonld['@type'] = 'NewsArticle'; return $jsonld; } ); ``` --- --- url: https://docs.wordlift.io/pages/features/ --- # Features | WordLift Developer Documentation # Features **WordLift** is a **semantic editor** for WordPress to help writing, organizing, tagging and sharing content online.**WordLift** is designed for bloggers, journalists and content creators to inspire and make writing more productive. **WordLift** adds [semantic annotation](/pages/key-concepts/#semantic-fingerprint) and combines information publicly available as [linked open data](/pages/key-concepts/#linked-open-data) to support the editorial workflow by suggesting relevant information, images and links. ## WordLift brings to content editors[โ€‹](#wordlift-brings-to-content-editors "Direct link to WordLift brings to content editors") * support for **self-organising** (or structuring) **content** using publicly (or privately) available [knowledge graphs](/pages/key-concepts/#knowledge-graph) ([linked open data](/pages/key-concepts/#linked-open-data)) * an easy way to **build your own dataset** made of _web content_, _semantic annotations_ and a _custom vocabulary_ * support for creating web content using **contextually relevant fact-based information** * valued and **free to use photos and illustrations** from the Commons community ranging from maps to astronomical imagery to photographs, artworks and more * insightful **visualisations to engage the reader** * new means to drive business growth with **meaningful content discovery paths** * content tagging for **better SEO** ## Websites built with WordLift bring to readers[โ€‹](#websites-built-with-wordlift-bring-to-readers "Direct link to Websites built with WordLift bring to readers") * multiple means of searching and accessing **editorial content around a specific topic** * **contextual information** helping readers with limited domain understanding * an **intuitive overview of all content being written** _on the site_ and _around a specific topic_ or graph of topics * meaningful **content recommendations** --- --- url: https://docs.wordlift.io/pages/import-export-vocabulary/ --- # Export & Import of the Vocabulary | WordLift Developer Documentation # Export & Import of the Vocabulary There are several cases where a user decides to export or import the vocabulary of terms created with **WordLift**. Letโ€™s see them in details: 1. The site needs to be migrated from one server to another, 2. The content structure of a website created for a language can be replicated for another language (and the website is not using a multilingual plugin such as [WPML](https://wpml.org/)), 3. The [vocabulary](/pages/key-concepts/#vocabulary) on one site can be re-used for tagging another website running a separate **WordLift** key. WordPress natively provides both [Export](https://codex.wordpress.org/Tools%5FExport%5FScreen) and [Import](https://codex.wordpress.org/Tools%5FImport%5FScreen) functionalities. This functionalities have been enhanced for any **WordLift**โ€™s user to ensure that also entities can be moved back and forth across multiple websites. ## How to Export the **WordLift** Vocabulary[โ€‹](#how-to-export-the-wordlift-vocabulary "Direct link to how-to-export-the-wordlift-vocabulary") To export the vocabulary from the _origin website_ go in the WordPress menรน under Tools and click the Export link. Choose to export the vocabulary only (unless you need to export the entire website). ## How to Import the **WordLift** Vocabulary[โ€‹](#how-to-import-the-wordlift-vocabulary "Direct link to how-to-import-the-wordlift-vocabulary") To import the vocabulary in the _destination website_ go in the WordPress menรน under Tools and click the Import link. Choose the XML file that was produced with the Export function and remember to choose _Import WordPress_ and to check the option _Download and import file attachments_ to get all entities imported. Note When data is imported from a website in one language (let's say English) - the data is saved using the language being set under the **WordLift**'s configuration tab of the destination website. Warning For the images there is currently a limitation in WordPress that might prevent the right images to be imported. More information are available on the [wptips website](http://wptips.me/how-to-import-images-when-importing-posts-from-a-wordpress-export-file/). ## Connecting source and destination websites with _sameAs_ links[โ€‹](#connecting-source-and-destination-websites-with-sameas-links "Direct link to connecting-source-and-destination-websites-with-sameas-links") When importing the vocabulary on a website with a different URL (this would be case 2 or 3 from the scenarios listed above) **WordLift** automatically populates all _sameAs_ links with the equivalent entity on the _origin website_. ### Entity interlinking and why is so important[โ€‹](#entity-interlinking-and-why-is-so-important "Direct link to Entity interlinking and why is so important") This process is called _entity interlinking_ (or [entity reconciliation](/pages/key-concepts/#reconciliation)) and it is beneficial for the metadata being published as it provides further means of data reuse. Letโ€™s say a developer is writing an application to display events and that these events are created with **WordLift** in two different website (one website for English and the other one for German) - the application will be able to use the _sameAs_ links to retrive the content in the required language: English if letโ€™s say the users are in the UK and German if the users are from Germany. The otherwise separate datasets will be effectively combined. Note When importing the vocabulary on a website with the same URL (this would be case 1) the _sameAs_ links are not added by the importer. ## Vocabulary sharing and how to keep it in sync[โ€‹](#vocabulary-sharing-and-how-to-keep-it-in-sync "Direct link to Vocabulary sharing and how to keep it in sync") Warning When sharing the same vocabulary on multiple websites the risk of duplicating the content is high and, as a general rule, this shall be prevented. When the vocabulary grows on one site and we need to re-use it in another site the Export & Import functions might not be the best approach and a different solution can be used (see below). ### Sharing terms among different websites[โ€‹](#sharing-terms-among-different-websites "Direct link to Sharing terms among different websites") **WordLift** allows the user to configure the NLP so that it will use multiple datasets for _content analysis_ and [entity reconciliation](/pages/key-concepts/#reconciliation). An enterprise, for instance, could chose to have a product website that uses, besides the terms created within its internal vocabulary, all the terms created in the vocabulary of the corporate website. This way when an entity is created on the corporate website for describing a new team member, this entity is immediately made available on the product website. Moreover **WordLift** automatically performs the [entity reconciliation](/pages/key-concepts/#reconciliation) without asking the editor any further action (the entity on the product website will have the _sameAs_ links pointing to the entityโ€™s URL on the corporate website). In this way all the terms created on one site can be used for annotating content on another websites. When constructing the product website the developer might also chose to redirect the traffic to the entity pages on the source site by using the _sameAs_ links (this will avoid content duplication and will increase the interlinking between the different websites). --- --- url: https://docs.wordlift.io/pages/installation/ --- # Installation | WordLift Developer Documentation # Installation Note We **suggest** our users to make a full back-up of their website data before installing WordLift. ## Requirements[โ€‹](#requirements "Direct link to Requirements") WordLift is currently available on [WordPress](https://wordpress.org/) 4.4 and later. ## Installation[โ€‹](#installation-1 "Direct link to Installation") You can install **WordLift** from the [WordPress plugin directory](https://wordpress.org/plugins/wordlift/) or manually by uploading the files to your server. ### Automatic Installation[โ€‹](#automatic-installation "Direct link to Automatic Installation") Automatic installation is the easiest way to install WordLift. WordPress handles the file transfers itself and you donโ€™t need to leave your web browser. To do an automatic install of WordLift, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New. In the search field type โ€œWordLiftโ€ and click Search Plugins. Once youโ€™ve found our plugin you can view details about it such as the description, the features, and user reviews. Most importantly of course, you can install it by simply clicking โ€œInstall Nowโ€. ### Manual Installation[โ€‹](#manual-installation "Direct link to Manual Installation") The manual installation method involves _downloading our plugin_ and _uploading it to your webserver_ using your favourite FTP application. Download the provided zip file to the `wp-content/plugins` directory of your [WordPress](https://wordpress.org/) installation. Unzip the file, from the command line: ``` unzip wordlift.zip ``` More information on the manual installation are available on the [WordPress Codex](http://codex.wordpress.org/Managing%5FPlugins#Manual%5FPlugin%5FInstallation) website. ## Activation[โ€‹](#activation "Direct link to Activation") To activate the plugin you need a [WordLift key](/pages/key-concepts/#wordlift-key). You receive this key after [purchasing a subscription plan](https://wordlift.io/pricing/) the [WordLift](https://wordlift.io/) website. An automatic email will be then sent to you containing your key and account information. You can use the setup Wizard upon startup to activate your subscription. ![image](/assets/images/wordlift-setup-wizard-e55e0b5195f0c788b3ca2c203c25f649.gif) When doing so you are able to configure the [key](/pages/key-concepts/#wordlift-key), the entity base path (the URL pattern of the WordLift internal vocabulary), the languange used on the website and the publisher of the website. Alternatively, from the WordPress administration menu, click on _Plugins_ / _Installed Plugins_. Then click on _Settings_ on the WordLift plugin. ## Configuration[โ€‹](#configuration "Direct link to Configuration") The _Settings_ are also accessible by hovering on the WordLift logo on the WordPress dashboard menu; from there a menu will open. Click on _Settings_ to open the settings screen: ![image](/assets/images/wordlift-settings-screen-7ac7ab9c9cb2e4f036c69b188b195c1a.png) From _Settings_ screen, as from the Wizard, you can configure: WordLift Key The [WordLift Key](/pages/key-concepts/#wordlift-key), required to activate the plug-in that can be purchased from the [website](https://wordlift.io/pricing/). Entity Base Path When selecting or creating new entities with WordLift, you are actively building your internal vocabulary, adding pages to your website. When you first built your website, you chose a pattern for the url of the pages you were going to add, such as [www.domain.com/name-of-the-page](http://www.domain.com/name-of-the-page) or [www.domain.com/seo-keyword/name-of-the-page](http://www.domain.com/seo-keyword/name-of-the-page). The same applies with all the pages created with WordLift inside your vocabulary. By default WordLift will add the word โ€œvocabularyโ€ between your root domain and the name of the page: [www.domain.com/vocabulary/name-of-the-entity-page](http://www.domain.com/vocabulary/name-of-the-entity-page). You can delete the word vocabulary if you want the new entity page to be inside your root domain folder: [www.domain.com/name-of-the-entity-page](http://www.domain.com/name-of-the-entity-page). Or you can replace vocabulary with another keyword (or keywords) of your choice, for SEO or branding reason: [www.domain.com/seo-keyword/name-of-the-entity-page](http://www.domain.com/seo-keyword/name-of-the-entity-page). Site Language The main language used on your website. This is the language that will be used by WordLift when creating the editorial metadata of your content. Be aware, each key should be used for one language only. Publisher The person or the organization publishing the content of the website. This is also an entity that can be created directly from this setting screen. This information is used to enrich the metadata on your website. Note For more information on the multilingual support of WordLift [read here](/pages/faq/#what-are-the-languages-supported-by-wordlift). You can now continue to the [Key Concepts](/pages/key-concepts/) page or head directly to the [Analysis](/pages/analysis/). --- --- url: https://docs.wordlift.io/pages/jsonld/ --- # JSON-LD | WordLift Developer Documentation # JSON-LD The plugin generates JSON-LD markup to improve the visibility of web pages in search engine results pages (SERPs). It uses natural language processing and machine learning algorithms to identify important concepts within the content and map them to relevant schema.org entities, creating a semantically rich representation of the page. This structured data provides search engines with more information about the content of the page, leading to better rankings and a richer search experience for users. ## Post linked with term[โ€‹](#post-linked-with-term "Direct link to Post linked with term") If the post has a single term assigned to it, it will be added to mentions if your post has schema.org type set to CreativeWork or a subtype of CreativeWork, you can find the full list [here](https://schema.org/CreativeWork#subtypes). ``` [ { "@context": "http://schema.org", "@id": "http://data.wordlift.io/be5/post/hello-world-24542", "@type": "Article", "description": "", "headline": "hello world", "url": "https://wordlift.localhost/hello-world/", "datePublished": "2023-05-01T09:46", "dateModified": "2023-05-01T09:46", "wordCount": 1, "keywords": "tag", "articleSection": [ "Uncategorized" ], "commentCount": "0", "inLanguage": "en-US", "publisher": { "@type": "Event", "@id": "http://data.wordlift.io/be5/entity/acme", "name": "Acme" }, "author": { "@type": "Person", "@id": "http://data.wordlift.io/be5/author/david", "name": "David", "givenName": "", "familyName": "", "url": "https://wordlift.localhost/author/david/" }, "mentions": [ { "@id": "http://data.wordlift.io/be5/post_tag/tag" } ] }, { "@context": "http://schema.org", "name": "tag", "@type": [ "Thing" ], "@id": "http://data.wordlift.io/be5/post_tag/tag", "description": "", "url": [ "https://wordlift.localhost/topic/tag/" ], "mainEntityOfPage": "https://wordlift.localhost/topic/tag/" } ] ``` ## Post linked with entity which matches the complete or a part of title[โ€‹](#post-linked-with-entity-which-matches-the-complete-or-a-part-of-title "Direct link to Post linked with entity which matches the complete or a part of title") If you have a post about apple titled `Apples: Benefits, nutrition, and tips` and have entity linked via annotation or term it will be added to [about](https://schema.org/about) when the title of entity matches the part (or) complete post title. ``` [ { "@context": "http://schema.org", "@id": "http://data.wordlift.io/be5/post/hello-world-2", "@type": "Article", "description": "Apple Tree", "mainEntityOfPage": "https://wordlift.localhost/hello-world-2/", "headline": "Apples : Benefits, nutrition, and tips", "url": "https://wordlift.localhost/hello-world-2/", "datePublished": "2023-05-01T10:11", "dateModified": "2023-05-01T14:26", "wordCount": 2, "articleSection": [ "Uncategorized" ], "commentCount": "0", "inLanguage": "en-US", "publisher": { "@type": "Event", "@id": "http://data.wordlift.io/be5/entity/acme", "name": "Acme" }, "author": { "@type": "Person", "@id": "http://data.wordlift.io/be5/author/david", "name": "David", "givenName": "", "familyName": "", "url": "https://wordlift.localhost/author/david/" }, "about": [ { "@id": "http://data.wordlift.io/be5/entity/apple-tree" } ] }, { "@context": "http://schema.org", "@id": "http://data.wordlift.io/be5/entity/apple-tree", "@type": "Thing", "description": "", "name": "Apples", "url": "https://wordlift.localhost/vocabulary/apple-tree/" } ] ``` ## Post linked with Entity via annotation[โ€‹](#post-linked-with-entity-via-annotation "Direct link to Post linked with Entity via annotation") If you have an entity linked by annotating the content, it will be added to `mentions` or `about` property depending on if the title of the entity matches the part of (or) the complete post title. ``` [ { "@context": "http://schema.org", "@id": "http://data.wordlift.io/be5/post/hello-world-24542", "@type": "Article", "description": "", "headline": "hello world", "url": "https://wordlift.localhost/hello-world/", "datePublished": "2023-05-01T09:46", "dateModified": "2023-05-01T09:46", "wordCount": 1, "keywords": "tag", "articleSection": [ "Uncategorized" ], "commentCount": "0", "inLanguage": "en-US", "publisher": { "@type": "Event", "@id": "http://data.wordlift.io/be5/entity/acme", "name": "Acme" }, "author": { "@type": "Person", "@id": "http://data.wordlift.io/be5/author/david", "name": "David", "givenName": "", "familyName": "", "url": "https://wordlift.localhost/author/david/" }, "mentions": [ { "@id": "http://data.wordlift.io/be5/post_tag/tag" } ] }, { "@context": "http://schema.org", "name": "tag", "@type": [ "Thing" ], "@id": "http://data.wordlift.io/be5/post_tag/tag", "description": "", "url": [ "https://wordlift.localhost/topic/tag/" ], "mainEntityOfPage": "https://wordlift.localhost/topic/tag/" } ] ``` ## Post linked with Entity which has Place entity on [location](https://schema.org/about) property[โ€‹](#post-linked-with-entity-which-has-place-entity-on-location-property "Direct link to post-linked-with-entity-which-has-place-entity-on-location-property") If you have an entity linked to post which has a type that supports [location](https://schema.org/about) property then the entity and place referenced by the entity will be expanded on the jsonld. ``` [ { "@context": "http://schema.org", "@id": "http://data.wordlift.io/be5/post/hello-world-24542", "@type": "Article", "description": "Some Event", "mainEntityOfPage": "https://wordlift.localhost/hello-world/", "headline": "A post about event", "url": "https://wordlift.localhost/hello-world/", "datePublished": "2023-05-01T09:46", "dateModified": "2023-05-01T14:33", "wordCount": 2, "keywords": "tag", "articleSection": [ "Uncategorized" ], "commentCount": "0", "inLanguage": "en-US", "publisher": { "@type": "Event", "@id": "http://data.wordlift.io/be5/entity/acme", "name": "Acme" }, "author": { "@type": "Person", "@id": "http://data.wordlift.io/be5/author/david", "name": "David", "givenName": "", "familyName": "", "url": "https://wordlift.localhost/author/david/" }, "mentions": [ { "@id": "http://data.wordlift.io/be5/post_tag/tag" }, { "@id": "http://data.wordlift.io/be5/entity/some-event" } ] }, { "@context": "http://schema.org", "@id": "http://data.wordlift.io/be5/entity/example-place", "@type": "Place", "description": "", "name": "example-place", "url": "https://wordlift.localhost/vocabulary/example-place/", "geo": { "@type": "GeoCoordinates", "latitude": 1.4061088354351594, "longitude": 18.281250000000004 }, "address": { "@type": "PostalAddress", "streetAddress": "1", "postOfficeBoxNumber": "2", "postalCode": "321", "addressLocality": "321", "addressRegion": "sa", "addressCountry": "asd" } }, { "@context": "http://schema.org", "@id": "http://data.wordlift.io/be5/entity/some-event", "@type": "Event", "description": "", "name": "some event", "location": { "@id": "http://data.wordlift.io/be5/entity/example-place" }, "url": "https://wordlift.localhost/vocabulary/some-event/" }, { "@context": "http://schema.org", "name": "tag", "@type": [ "Thing" ], "@id": "http://data.wordlift.io/be5/post_tag/tag", "description": "", "url": [ "https://wordlift.localhost/topic/tag/" ], "mainEntityOfPage": "https://wordlift.localhost/topic/tag/" } ] ``` --- --- url: https://docs.wordlift.io/pages/key-concepts/ --- # Key Concepts | WordLift Developer Documentation # Key Concepts Here is the terminology describing the core concepts that will help you set up and manage your content with WordLift: ## Entity[โ€‹](#entity "Direct link to Entity") An **entity** (or thing) is something that exists in the real-world: celebrities, cities, sport teams, buildings, geographical features, movies, celestial objects and works of art are all entities. For a long time, more than four decades, we've been teaching computers to recognise things by simply matching keywords. Now computers, just like humans do, understand that a text like _\[Thubten Gyatso\]_ is not just made of two words but, it has a much richer meaning. _\[Thubten Gyatso\]_ is a person, more specifically he's the 13th Dalai Lama who was born in the Tsang-รœ province in Tibet on the 12th of February 1876. All this information - collectively shared in public sources like Wikipedia and Freebase - is organised in intelligent models known as **Graphs** that are helping computers think the way we do and helping us find this information more quickly and even compute it (i.e. providing answers to question like _"Was Trinley Gyatso his predecessor?"_). ### Entity Types[โ€‹](#entity-types "Direct link to Entity Types") Web pages are about many different kind of "things". WordLift uses the [Schema.org](http://schema.org) vocabulary to describe a variety of entity types, each of which has its own set of properties that can be used to describe the entity. The broadest item type is **Thing**, which has four properties: _name_, _description_, _url_, and _image_. WordLift supports all the entity types of the schema vocabulary. ### Related Entities[โ€‹](#related-entities "Direct link to Related Entities") In WordLift **related entities** are primarily the entities being used for annotating a blog post or a page. Each entity we curate can be eventually _linked_ to other entities by running the analysis on its description text. Entities being _linked_ with other entities with the analysis are also known as **related entities**. ## Vocabulary[โ€‹](#vocabulary "Direct link to Vocabulary") A **vocabulary** is a collection of things (or entities). With WordLift, users can create their own custom vocabulary by creating entities and describing their properties (i.e. _\[Europe Day\]_ is held on 9 May and celebrates peace and unity in Europe). These entities might already exist in publicly available sources like Wikipedia and Freebase. In this case WordLift provides a list of suggested entities that can be _linked_ to (or reconciled with). When linking entities to each other, WordLift uses the `owl:sameAs` property; this means that we're talking about the same _thing_ (or simply that both entities share the same "identity"): "Yes, I'm talking about that same _\[Europe Day\]_ that Freebase describes with machine id **m/04f6ymq**". This linking process is also called \[reconciliation\] or disambiguation. Find out more on [how to import and export the user vocabulary](/pages/import-export-vocabulary/). ## Knowledge Graph[โ€‹](#knowledge-graph "Direct link to Knowledge Graph") A **knowledge graph** is a network of all kind of entities that are relevant to a specific domain or to an organization. They are not limited to abstract concepts and relations (as with a vocabulary) but also contain the instances of the things they describe. Using WordLift as new entities are added in the vocabulary, properties for these entities are populated using the_ease-to-use_ WordPress editing interfaces and new posts are enriched with these entities a knowledge graph is created and published as [RDF](#rdf) graph in the cloud. ## RDF[โ€‹](#rdf "Direct link to RDF") **RDF** stands for Resource Description Framework. RDF is a W3C standard language for representing information. ## Linked Open Data[โ€‹](#linked-open-data "Direct link to Linked Open Data") **Linked Open Data** is [Linked Data](http://en.wikipedia.org/wiki/Linked%5Fdata) that is made available as **open content**. Large linked open datasets (or [Knowledge Graph](#knowledge-graph)) include DBpedia and Freebase. ## Reconciliation[โ€‹](#reconciliation "Direct link to Reconciliation") **Reconciling** entities we store in our own [vocabulary](#vocabulary) with entities available elsewhere provides computers with an unambiguous way to identify the things we're talking about. _\[Apple\]_ in a specific article might refer to a rather typical British psychedelic-pop band rather than to a World famous computer company or the forbidden fruit. This becomes important when third party applications like search engines need to provide valuable content for users searching for articles on _\[Apple\]_ the psychedelic-pop band and not the other two _Apples_. [Reconciling](#reconciliation) entities means providing computers with unambiguous identifications of the _entities_ we talk about. ## Semantic Fingerprint[โ€‹](#semantic-fingerprint "Direct link to Semantic Fingerprint") The result of semantic annotation of a text is a _unique linked identifier_ added to the HTML code. This identifier is known as **semantic fingerprint**. Annotating contents, also known as _semantic enrichment_ or _lifting_, creates metadata that computers can understand. Just like in forensic science human fingerprints are used to identify humans appearing on a crime scene, in computer science we use semantic fingerprints to tell computers what [entities](#entity) we're referring to. WordLift re-uses these semantic fingerprints for adding Schema.org markup and for re-purposing contents using [Widgets](#widget). ## Dereferencing HTTP URIs[โ€‹](#dereferencing-http-uris "Direct link to Dereferencing HTTP URIs") **URI Dereferencing** is the process of looking up a URI on the Web in order to get information about the referenced resource. WordLift uses dereferencing to obtain a snapshot of the properties describing a [named entity](#entity). ## Widget[โ€‹](#widget "Direct link to Widget") A **widget** in WordLift is a dynamic visualisation that can be added by the editors to a page via [Shortcode](http://codex.wordpress.org/Shortcode) or using the WordLift menu. A Widget is executed by the end-user's browser when accessing a page. A Widget typically displays informations being stored in the [knowledge graph](#knowledge-graph) and creates dynamic connections between different posts or provides additional information about entities in the post. ## WordLift Edit Post Widget[โ€‹](#wordlift-edit-post-widget "Direct link to WordLift Edit Post Widget") Contents editors using WordLift can identify the basic '_who_, _what_, _when_ and _where_' of an article and structure information around it by creating new entities in the [custom vocabulary](#vocabulary). These annotations are added to the posts using the **WordLift Edit Post Widget**. ### Top down post annotation[โ€‹](#top-down-post-annotation "Direct link to Top down post annotation") The content editor, from the list of entities being detected in the text, uses these entities to describe his/her post without selecting any specific text annotations. Entities being selected, in this case, describe the entire post (and not the single occurrence of the entity in the text). ![image](/assets/images/wordlift-edit-post-widget-01-3b6910db6e5a418c2cc014727a1aea21.png) ### Bottom up entity annotation[โ€‹](#bottom-up-entity-annotation "Direct link to Bottom up entity annotation") The content editor has choosen the โ€œExpo 2015โ€ occurence in the text. In this case, this specific occurrence, is annotated with the entity "Expo 2015". ![image](/assets/images/wordlift-edit-post-widget-02-e297d1be00a8fe872da580b8685634ca.png) ### Edit Entity Properties[โ€‹](#edit-entity-properties "Direct link to Edit Entity Properties") The content editor is editing the main properties for the entity "Expo 2015" while writing the post. The complete list of properties can be edited from the [Edit Entity](/pages/edit-entity/) page. ![image](/assets/images/wordlift-edit-post-widget-03-6241b4fbdc2389347602def118807d9e.png) ### Image Suggestor[โ€‹](#image-suggestor "Direct link to Image Suggestor") ![image](/assets/images/wordlift-edit-post-widget-04-999e448fa784a76d22567e4ca0160502.png) Images for each entity appear in the WordLift Edit Post Widget and can be dragged and dropped in the visual editor. ## WordLift key[โ€‹](#wordlift-key "Direct link to WordLift key") The **WordLift key** is a _unique value_ that is assigned to each user after he/she has subscribed to the WordLift service. You can now continue to the [Analysis](/pages/analysis/) page. --- --- url: https://docs.wordlift.io/pages/mappings/ --- # Mappings | WordLift Developer Documentation # Mappings Mappings are designed to help us organize and structure content while improving the SEO on our website. **The markup in schema.org adds meaning to your content** for search engines but the real benefits come when you **use structured data as the basis for your content model.** We call it the **entity-based content model** and you can learn more about by watching the following webinars: * [Content Modeling for Search Optimization with Cruce Saunders](https://wordlift.io/academy-entries/content-modeling/) * [Get Started with Structured Content and Schema.org](https://wordlift.io/academy-entries/structure-your-content/) Or by [booking a call with our SEO experts.](https://wordlift.io/book-a-demo). WordLift mappings have been developed as an integration for the [Advanced Custom Fields](https://www.advancedcustomfields.com/) plugin and allows you to either: * re-use fields that you might have already configured with ACF on your CMS or, * create new fields based on the schema.org taxonomy ## Supported Schema types[โ€‹](#supported-schema-types "Direct link to Supported Schema types") WordLift **loads automatically the latest version of the schema.org vocabulary**, supports **all the available schema types**, and allows you to personalize your content model easily while taking care of the injection of the json-ld on your pages. ## Advanced Schema types[โ€‹](#advanced-schema-types "Direct link to Advanced Schema types") ### HowTo[โ€‹](#howto "Direct link to HowTo") HowTo Schema allows you to explain exact instructions to achieving a wanted result by performing a sequence of steps. This can range from guides explaining "How to start your own business" or simple DIY recipes. ### Recipe[โ€‹](#recipe "Direct link to Recipe") A recipe schema allows you to specify steps in your recipe, varying from nutritional information to the method of cooking. This can all be done by choosing specific keywords under the properties. Learn [how to add schema markup for recipes](https://wordlift.io/academy-entries/schema-markup-for-recipe/). ### Course[โ€‹](#course "Direct link to Course") Course schema markup is the specific entity type for web pages that describe an educational course that may be offered online or in person by public and private schools, colleges, and universities. Learn [how to add course schema markup to your content](https://wordlift.io/academy-entries/course-schema-markup/). ### FAQ[โ€‹](#faq "Direct link to FAQ") FAQ stands for "Frequently Asked Questions", where the questions that most people ask you about your activities can be listed on this webpage. Some properties include breadcrumbs and lastreviewed, which is the date on which the content on this web page was last reviewed for accuracy and/or completeness. Learn more on [how to use the FAQPage Schema type](https://wordlift.io/academy-entries/how-to-use-faq-schema-type/). ### Review[โ€‹](#review "Direct link to Review") Review schema shows you the opinions and feedback regarding an item, a movie or a service. ### Product[โ€‹](#product "Direct link to Product") Product markup communicates to Google a series of essential data for your customers such as product description, image, price, availability, conditions, and user ratings. With WordLift you can create a [product knowledge graph](https://wordlift.io/blog/en/product-knowledge-graph/) and help Google discover more about the brand, the color, the condition (new, used, reconditioned etc) the shipping details and a lot more. If you are using WooCommerce here is [all you need to know about the product schema](https://wordlift.io/blog/en/schema-markup-woocommerce/). ### Event[โ€‹](#event "Direct link to Event") Event schema is a type of structured data markup that informs search engines that a particular web page is an event that takes place offline or online, such as concerts, seminars/webinars, meetings and more. Learn [how to add event schema markup to your website](https://wordlift.io/academy-entries/event-schema-markup/). ### Service[โ€‹](#service "Direct link to Service") Service schema helps search engines understand your business and your services. Learn more on [how to use the service markup](https://wordlift.io/academy-entries/service-markup/). ### LocalBusiness[โ€‹](#localbusiness "Direct link to LocalBusiness") LocalBusiness is the schema markup for a particular physical business or branch of an organization, such as for example a restaurant, a particular branch of a restaurant chain, a branch of a bank, a medical practice, a club, a bowling alley, etc. Learn [how to add LocalBusiness schema to your web pages](https://wordlift.io/academy-entries/how-to-add-localbusiness-schema/). ## Advanced Custom Fields[โ€‹](#advanced-custom-fields "Direct link to Advanced Custom Fields") To follow a step-by-step tutorial head on to our blogpost where our specialist shows you [how to enhance your content model using Wordlift mappings.](https://wordlift.io/academy-entries/wordlift-mappings-tutorial/) ### Requirements[โ€‹](#requirements "Direct link to Requirements") * [Advanced Custom Fields](https://wordpress.org/plugins/advanced-custom-fields/) (ACF) ![image](/assets/images/mappings-acf-75e89b6f62ceae443feb6488674d2020.png) * Advanced Custom Fields for schema.org by WordLift ([Contact our SEO team to get started](https://wordlift.io/customize-your-plan/)) ### Add Custom Fields[โ€‹](#add-custom-fields "Direct link to Add Custom Fields") First create a **new custom field** by clicking on **Field Group** and choosing a title. ![image](/assets/images/mappings-field-group-97263b46cd89a2a010967ed1edbc3dd7.png) Then add your first **field** ![image](/assets/images/mappings-field-step-1-52fc3eaeddf43dccd4b0c39a5fd27332.png) * **Field Label** is what the user will see editing a post * **Field Name** from schema.org (e.g. endDate) * **Field Type** โ€œDate time pickerโ€ in the case of endDate ![image](/assets/images/mappings-field-type-2ea7547c43740fe980285ca287931e93.png) * **Instructions** for authors. Shown when submitting data * **Required?** whether this field is needed or not in order to publish a post ![image](/assets/images/mappings-field-example-1-fc4994c7550e9c18381ca40a9d7e720f.png) * **Default Value**, you can fill this box if you want a default data when creating a post * **Placeholder Text**, appears within the input * **Prepend**, appears before the input * **Append**, appears after the input * **Character Limit** * **Conditional Logic** * **Wrapper Attributes** ![image](/assets/images/mappings-field-example-2-406d2fd26699e8a1314af24e246e27cd.png) * **Location**: **Rules**, here you can choose to use this ACF if for example your Post Type is equal or not equal to one of your Post Types ![image](/assets/images/mappings-rules-bc68124abbcf4cd88af90bd9a1871528.png) This is how it looks for authors while creating or editing a post: ![image](/assets/images/mappings-draft-example-1bd6034f4854c65e526902a38216629c.png) ### Add New mapping[โ€‹](#add-new-mapping "Direct link to Add New mapping") First go on **Schema.org Types** and **Sync Schema.org classes** Then go on **Mappings** and add a new one. ![image](/assets/images/mappings-step-1-308f2cb99d931e5153e8577dd24c4255.png) Choose a **title** and at least one **Rule** ![image](/assets/images/mappings-step-2-ae0ef700e674a925fe54e8bb6210fd42.png) Add at least one **Property**: ![image](/assets/images/mappings-step-5-1a0ce07dd21d392c5f88d3fb7bc47971.png) * **Property name**, give a name to your property * **Field Type**, select ACF to use Custom Fields * **Field Text**, choose which _custom field_ to use for that property * **Transform Function** --- --- url: https://docs.wordlift.io/pages/overview/ --- # Overview | WordLift Developer Documentation # Overview **WordLift** brings the power of _Artificial Intelligence_ to web publishers around the World. **WordLift** is a plugin for WordPress designed to help you create, structure and visualize your content and to publish it as [Linked Open Data](/pages/key-concepts/#linked-open-data) following **Tim Berners-Lee**'s [Linked Data Principles](http://www.w3.org/DesignIssues/LinkedData.html). Linked Data is the language machines can read and understand in order to seamlessly analyze content, index it and fetch answers back to users. Linked Data technologies allow software agents and search crawlers find, share and integrate information across different resources. **WordLift** supports bloggers and site owners building _beautifully structured web sites_ and reach their maximum potential audiences: * It understands the text you write and structures it to allow you to create effective navigation flows and make sure commercial search engines like Google, Bing, Yandex and Yahoo! receive the structured data they need to properly index and rank your content. * It enriches your blog posts and pages with facts, links and images, and organizes them in relationship to each other, to internal vocabularies, and to other openly available data sources like DBpedia and Wikidata, increasing your readersโ€™ engagement. Note **WordLift** is available to all for a monthly fee. Find out more and get your activation key directly [on our website](https://wordlift.io). ## Features[โ€‹](#features "Direct link to Features") **WordLift** is a **semantic editor** for WordPress to help writing, organizing, tagging and sharing content online. **WordLift** is designed for bloggers, journalists and content creators to inspire and make writing more productive. **WordLift** adds [semantic annotation](/pages/key-concepts/#semantic-fingerprint) and combines information publicly available as [linked open data](/pages/key-concepts/#linked-open-data) to support the editorial workflow by suggesting relevant information, images and links. ### WordLift brings to content editors[โ€‹](#wordlift-brings-to-content-editors "Direct link to WordLift brings to content editors") * support for **self-organising content** using publicly and privately available [knowledge graphs](/pages/key-concepts/#knowledge-graph) * an easy way to **build your own custom vocabulary** * support for creating web content using **contextually relevant fact-based information** * free to use **photos and illustrations** from the Commons community ranging from maps to astronomical imagery to photographs, artworks and more * insightful **visualisations to engage the reader** * new means to drive business growth with **meaningful content discovery and recommendation paths** * content tagging using [schema org markup](https://wordlift.io/entity/schema-org/) for better SEO ### Websites built with WordLift bring to readers[โ€‹](#websites-built-with-wordlift-bring-to-readers "Direct link to Websites built with WordLift bring to readers") * multiple means of searching and accessing **editorial content around a specific topic** * **contextual information** helping readers with limited domain understanding * an **intuitive overview of all content being written** _on the site_ and _around a specific topic_ or cluster of topics * meaningful **content recommendations** ### A solution designed to delight every content editor[โ€‹](#a-solution-designed-to-delight-every-content-editor "Direct link to A solution designed to delight every content editor") #### Built for WordPress[โ€‹](#built-for-wordpress "Direct link to Built for WordPress") WordLift integrates seamlessly with WordPress, the fastest growing CMS on the web. You will create and curate your vocabulary and annotate your blog posts, exactly the same way you write and curate a WordPress page. #### Open Source[โ€‹](#open-source "Direct link to Open Source") We build technologies together. WordLiftโ€™s technology is Open Source, to allow you the maximum freedom developing and growing your project (no vendor lock-in). #### Data ownership[โ€‹](#data-ownership "Direct link to Data ownership") Data is owned by those who produce it. WordLift organizes your website and creates the metadata necessary to leverage and monetize your content. You can choose the type of licence to attach to the data created using WordLift. #### Scalability[โ€‹](#scalability "Direct link to Scalability") WordLift offers unlimited dataset storage and processing capacity, with a fix monthly price, no pricing tiers depending on volumes, allowing you to scale your business and your knowledge graph as much as you want. #### Customer support[โ€‹](#customer-support "Direct link to Customer support") Our team is always available to train, support and help our users, answering their questions, fixing their issues or consulting them on the best way to leverage WordLift to boost their content. #### Documentation[โ€‹](#documentation "Direct link to Documentation") How-to videos, whiteboards, FAQs and an extensive Wiki, to provide to our users with all the means necessary to learn WordLift as quickly as possible. WordLiftโ€™s development is available on GitHub, where you can open, follow and comment on product requests you champion. #### Interoperability[โ€‹](#interoperability "Direct link to Interoperability") The Web must be and stay open. The economic value of individual knowledge is linked on its openness. WordLift publishes contents according to open web standards. #### 32 Languages[โ€‹](#32-languages "Direct link to 32 Languages") WordLift currently supports 32 languages: Chinese, Danish, German, English, French, Italian, Dutch, Russian, Spanish, Portuguese, Swedish, Turkish, Albanian, Belarusian, Bulgarian, Catalan, Croatian, Czech, Estonian, Finnish, Hungarian, Icelandic, Indonesian, Latvian, Lithuanian, Norwegian, Polish, Romanian, Serbian, Slovak, Slovenian, Ukrainian. #### Data Querying[โ€‹](#data-querying "Direct link to Data Querying") WordLift provides means to record all the relationships created in a graph database, combining structured, semi-structured and unstructured data, and allowing queries like โ€œfind all content related to concept\_y and relevant for target\_zโ€. Such as: > 1. all content related to _Gazprom_ > 2. all content related to _Gazprom_ mentioning _Putin_ > 3. all content related to _renewables industry sector_ in _Italy_ > 4. all content related to _fishery_ interesting for a given user or for a cluster of users ## Who is using enriched metadata in the form of linked data today?[โ€‹](#who-is-using-enriched-metadata-in-the-form-of-linked-data-today "Direct link to Who is using enriched metadata in the form of linked data today?") In the media industries companies like BBC, The Financial Times and Associated Press are investing in these technologies. In the Public Health Care the World Health Organisation, in the energy sector companies like Enel. Public libraries are adopting these standards to share content at regional, national and international level. Public administrations around the world are committed to make their data available as [Linked Open Data](/pages/key-concepts/#linked-open-data). Search engines like Google, Yahoo!, Bing and Yandex, as well as social networks like Facebook, use these technologies to increase the quality of their services and to become _more meaningful_ to their end users. ## Why shall I publish my contents in the form of metadata?[โ€‹](#why-shall-i-publish-my-contents-in-the-form-of-metadata "Direct link to Why shall I publish my contents in the form of metadata?") Organising web content around **concepts** or **entities** rather than traditional web pages improves_navigation_, _content re-use_, _content re-purposing_ and _search engine rankings_, bringing the user experience to a new level of engagement. As your content metadata is published as [Linked Open Data](/pages/key-concepts/#linked-open-data) it becomes easier for third party applications providers like Google to better understand and interact with your content, creating new entry points and increasing traffic on your website (more on [Schema.org Actions](http://searchengineland.com/schema-user-actions-now-available-189421) from the Search Engine Land website). ## Can you tell me more about WordLiftโ€™s SEO benefits?[โ€‹](#can-you-tell-me-more-about-wordlifts-seo-benefits "Direct link to Can you tell me more about WordLiftโ€™s SEO benefits?") WordLift allows you to add a layer of metadata to your content, which provides several SEO benefits: Schema markup added to all your content will ensure Google will properly index and unquestionably understand the content of your article; Internal linking based on semantic concepts more than anchor texts will increase the SEO value of your pages; A properly curated vocabulary will act as search magnet on higher traffic queries to be then connected to your blog posts and your pages; Connecting your content semantically has a terrific effect on engagement metrics as well and good engagement metrics are of course an important signal for Google as well. Thanks to the contextual info added to your content and the connections between pages and posts that can be made through the 5 visualization widgets available, you will enjoy double digit growth for all your usability metrics. You can now continue to the [Getting Started](/wordpress-plugin/getting-started/) page. --- --- url: https://docs.wordlift.io/pages/pkg-builder/ --- # Product Knowledge Graph Builder | WordLift Developer Documentation # Product Knowledge Graph Builder **Product KG Builder** is the feature for e-commerce that allows you to automate your SEO and [create a product knowledge graph](https://wordlift.io/blog/en/how-build-product-knowledge-graph/) **with your Google Merchant Feed**. This helps e-commerce to **communicate with Google's Shopping Graph and get free listings in Google Shopping**. At the same time, it **improves the user experience** by providing your customers with information that is relevant to their search. WordLift Product KG Builder can make a difference in your e-commerce and positively **impact both organic traffic and sales**. ## Get Started[โ€‹](#get-started "Direct link to Get Started") Once you have purchased the WordLift [Business+E-Commerce subscription](https://wordlift.io/business/) you will receive a key and then you will be able to access your dashboard. The first step to start using your PKG Builder is to go to your dashboard and click on **\+ Add Merchant** on the left side, then follow the simple steps in the wizard. ![image](/assets/images/pkg-builder0-8bdd329ab5674ef91c9cf11d6cc97be9.png) ### 1\. Link your Google Account[โ€‹](#1-link-your-google-account "Direct link to 1. Link your Google Account") Sign in with your Google account. ![image](/assets/images/pkg-builder1-066b4de613d4053d5055f761652527ae.png) ### 2\. Choose the Merchant Feed[โ€‹](#2-choose-the-merchant-feed "Direct link to 2. Choose the Merchant Feed") Select the Merchant Feed you want to import. ![image](/assets/images/pkg-builder2-9b24dc3bb19bac8f7496b299ed4ad602.png) At the moment, only one language per import is supported, therefore if your feed contains multiple languages, use the _Path_ to filter the language, e.g. **/en** . Then you can create another configuration for another language. ### 3\. Create your Product Knowledge Graph[โ€‹](#3-create-your-product-knowledge-graph "Direct link to 3. Create your Product Knowledge Graph") Link the website and import the data from the Merchant Feed to the website. To **create your Product Knowledge Graph** you need to add the script into your website. ![image](/assets/images/pkg-builder3-a3788876481271f170fcd14be5c55cfd.png) Click _Finish_. Once you have completed these 3 steps, you will see that the **products** have been imported into the backend of your e-commerce website and **already enriched with structured data**. From the WordLift dashboard, you can open the backend of your website and see the products imported and you can synchronize the data (it takes about 1 hour). --- --- url: https://docs.wordlift.io/pages/publish/ --- # Publish | WordLift Developer Documentation # Publish ## Publish Entity[โ€‹](#publish-entity "Direct link to Publish Entity") When saved, entities are created as `custom posts` in the local WordPress installation and are accessible from the [WordLift vocabulary](/pages/key-concepts/#vocabulary). Note The URL for an entity page is as follows:: `http:///?entity=` ### Metadata being added to Entity pages[โ€‹](#metadata-being-added-to-entity-pages "Direct link to Metadata being added to Entity pages") ### RDF representation of the Entity[โ€‹](#rdf-representation-of-the-entity "Direct link to RDF representation of the Entity") By clicking on the **View Linked Data** button (right after the _Permalink_ in the editor) the **RDF representation of the entity** is displayed using [LodView](http://lodview.it/). ![image](/assets/images/wordlift-publish-entity-view-linked-data-2b7f9823bc8655cbe07823d4321f813f.png) ![image](/assets/images/wordlift-publish-entity-lodview-c73fcddc30a7f0df299516f8c1b7c89a.png) In this example you can see the relation being created between the entity _\[Mars\]_ and the entity _\[Solar System\]_ (`dcterms:relation`). This relation has been created from the [entity page](/pages/edit-entity/#linking-other-entities) page by annotating the description of the entity. ![image](/assets/images/wordlift-publish-entity-lodlive-f9826e8ad0207aaa98fc5f78adbe499d.png) You can also see (in this last image using [LodLive](http://lodlive.it/)) the `sameAs` attributes. ## Publish Post/Page[โ€‹](#publish-postpage "Direct link to Publish Post/Page") Posts and Pages with **WordLift** are annotated using the `schema.org` vocabulary. The _schema markup_ is a code (a semantic vocabulary) to help search engines return more informative results for their users. ### Metadata being added to Post/Page[โ€‹](#metadata-being-added-to-postpage "Direct link to Metadata being added to Post/Page") By clicking on the **Test Google Rich Snippets** button (right after the _Permalink_ in the editor) you can see the list of entities being added to the content from the **Google Structured Data Testing Tool**. ![image](/assets/images/wordlift-publish-post-test-structured-data-d00be7c7ad0f0ed998dc4a8df68f563b.png) ![image](/assets/images/wordlift-publish-structured-data-testing-31ce2dcdd419e2ca0486d059476ad856.png) In this example we're telling search engines that this post could be relevant for searches related to the _\[Solar System\]_. ### RDF representation of the Post/Page[โ€‹](#rdf-representation-of-the-postpage "Direct link to RDF representation of the Post/Page") By clicking on the **View Linked Data** button (right after the _Permalink_ in the editor) the **RDF representation of the post** is displayed using [LodView](http://lodview.it/). As of today, the data being represented in RDF for each post or page include: * schema-org:**datePublished** * schema-org:**dateModified** * schema-org:**interactionCount** * rdfs:**label** * rdf:**type** * schema-org:**url** * dcterms:**references** * schema-org:**author** ![image](/assets/images/wordlift-publish-post-lodview-59f4da2d80b76462d5096335e973b61e.png) Note In the RDF representation of the posts you can find all entities related to a post (or a page) by looking at the `dcterms:references` attribute The attributes describing the posts can be browsed. In this example by clicking on the entity _\[Solar System\]_ you will be able (directly from [LodView](http://lodview.it/)) to consult and read the data publish on that entity by **WordLift**. You can now continue to the [Discover](/pages/discover/) page. --- --- url: https://docs.wordlift.io/pages/publishing/ --- # Publishing | WordLift Developer Documentation # Publishing ## Rich Snippets[โ€‹](#rich-snippets "Direct link to Rich Snippets") By clicking on the **Test Google Rich Snippets** button (right after the _Permalink_ in the editor) you can see the list of entities being added to the content from the **Google Structured Data Testing Tool**. ![image](/assets/images/wordlift-publish-post-test-structured-data-d00be7c7ad0f0ed998dc4a8df68f563b.png) ![image](/assets/images/wordlift-publish-structured-data-testing-31ce2dcdd419e2ca0486d059476ad856.png) In this example we're telling search engines that this post could be relevant for searches related to the _\[Solar System\]_. ## Linked Data[โ€‹](#linked-data "Direct link to Linked Data") By clicking on the **View Linked Data** button (right after the _Permalink_ in the editor) the **RDF representation of the entity** is displayed using [LodView](http://lodview.it/). ![image](/assets/images/wordlift-publish-entity-view-linked-data-2b7f9823bc8655cbe07823d4321f813f.png) ![image](/assets/images/wordlift-publish-entity-lodview-c73fcddc30a7f0df299516f8c1b7c89a.png) In this example you can see the relation being created between the entity _\[Mars\]_ and the entity _\[Solar System\]_ (`dcterms:relation`). This relation has been created from the [entity page](/pages/edit-entity/#linking-other-entities) page by annotating the description of the entity. ![image](/assets/images/wordlift-publish-entity-lodlive-f9826e8ad0207aaa98fc5f78adbe499d.png) You can also see (in this last image using [LodLive](http://lodlive.it/)) the `sameAs` attributes. As of today, the data being represented in RDF for each post or page include: * schema-org:**datePublished** * schema-org:**dateModified** * schema-org:**interactionCount** * rdfs:**label** * rdf:**type** * schema-org:**url** * dcterms:**references** * schema-org:**author** ![image](/assets/images/wordlift-publish-post-lodview-59f4da2d80b76462d5096335e973b61e.png) Note In the RDF representation of the posts you can find all entities related to a post (or a page) by looking at the `dcterms:references` attribute The attributes describing the posts can be browsed. In this example by clicking on the entity _\[Solar System\]_ you will be able (directly from [LodView](http://lodview.it/)) to consult and read the data publish on that entity by **WordLift**. ## Widgets and Shortcodes[โ€‹](#widgets-and-shortcodes "Direct link to Widgets and Shortcodes") ### Shortcodes[โ€‹](#shortcodes "Direct link to Shortcodes") WordLift provides several useful shortcodes to provide enhanced visualizations on your web site. ### Widgets[โ€‹](#widgets "Direct link to Widgets") WordLift widgets can be inserted in a post or page to give a rich visual presentation of the entities populating the blog. As the blog grows and entities are created and mentioned, the widgets update their content without intervention from the editor. ### Faceted Search[โ€‹](#faceted-search "Direct link to Faceted Search") ``` [wl_faceted_search] ``` The Faceted Search widget can be used on entity pages to display and filter the posts related to the current and other entities. It is useful for [content discovery](/pages/discover/#the-navigator-widget). ![image](/assets/images/wordlift-edit-entity-faceted-search-widget-frontend-02b34e2c294dbdfafde1fe7ad4881da6.gif) ### Navigator[โ€‹](#navigator "Direct link to Navigator") ``` [wl_navigator] ``` The Navigator widget offers links to **semantic-related posts** in the blog. The search is made by considering the entities mentioned in the current post and by finding other blog posts that mentions the same entities. It is useful for [content discovery](/pages/discover/#the-faceted-search-widget). ![image](/assets/images/wordlift-discover-navigator-345c1c3ce542fbee022ccb40a78cbb6a.png) Here follows the list of the supported parameters: title _(optional)_ Title to be displayed above navigator. Defaults to 'Related articles'. limit _(optional)_ The total number of posts to display. Defaults to 4. offset _(optional)_ Offset for posts to display. It helps you break the list of recommended articles in different blocks (to add advertising and/or CTAs). Defaults to 0\. Defaults to 4. template\_id _(optional)_ The id of the script element which has mustache template. For example if the template is in `` then `template_id` would be `wordlift_navigator_sidebar_template`. post\_id _(optional)_ The post ID of a post of which navigator you want to display. Defaults to the current post. This is helpful if you want to display the navigator of post 'A' on post 'B' or add the navigator shortcode for a specific post in a non-post page. uniqid _(optional)_ The Unique ID for the navigator. This can be used to style or to apply navigator filters that are specific to an instance of the navigator (instead of acting on multiple navigators). Here is a sample code for personalizing the template to be used as reference: ``` ``` The filters available for the navigator widget are: * `wl_navigator_data_post`: Gets each navigator post item, post ID and uniqid. Returns the customized post item. * `wl_navigator_data_entity`: Gets each entity post item, post ID and uniqid. Returns the customized entity item. * `wl_navigator_data_placeholder`: Gets the complete result array and uniqid. Returns the customized result array. Can be used to seed navigator with placeholder ### Chord[โ€‹](#chord "Direct link to Chord") ``` [wl_chord width=... height=... main_color=... depth=... global=...] ``` ![image](/assets/images/wordlift-shortcodes-chord-64565b67a4b03bad217943588e8f2ade.png) The Chord widget visualizes relations between entities, starting from the current post and the entities mentioned in it. width _(optional)_ Width of the chord. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). height _(optional)_ Height of the chord. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). main\_color _(optional)_ The chord's _base_ color. depth _(optional)_ Maximum distance to travel in the entity graph in order to populate the chord. A small number limits the exploration of the main entity. global _(optional)_ When _global=true_ the main entity of the chord is not the current post, but the most mentioned entity in the latest posts. ### Geomap[โ€‹](#geomap "Direct link to Geomap") ``` [wl_geomap width=... height=... global=...] ``` ![image](/assets/images/wordlift-shortcodes-geomap-d625e46af8d4d2fcc1042d8b747ad955.png) The Geomap widget displays "Place" entities on a map. Each Place has its own marker with a popup containing a thumbnail and links of the place. Here are the parameters: width _(optional)_ Width of the geomap. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). height _(optional)_ Height of the geomap. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). global _(optional)_ By default the geomap displays places mentioned in the current post. When _global=true_ the geomap displays all places mentioned in the blog. ### Timeline[โ€‹](#timeline "Direct link to Timeline") ``` [wl_timeline width=... height=... global=...] ``` ![image](/assets/images/wordlift-shortcodes-timeline-c058f998afc06ac227d6fcdcc618b905.png) The Timeline widget displays a navigable list of chronologically ordered Event entities. The window on top shows details of the selected Events. Here follows the list of the supported parameters: width _(optional)_ Width of the timeline. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). height _(optional)_ Height of the timeline. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). global _(optional)_ By default the timeline displays events (or events related to places) mentioned in the current post. When _global=true_ the timeline displays events mentioned in the latest posts. display\_images\_as _(optional)_ When _display\_images\_as='background'_ the timeline displays for each event the featured image of the entity as background. excerpt\_length _(optional)_ Allows you to set the number of words that appear in the the excerpts of the timeline. Note When you create a timeline with WordLift you can pass in the shortcode optional parameters to set a variety of presentation options. These are derived from the TimelineJS library [read more here](https://timeline.knightlab.com/docs/options.html). ### Entity Cloud[โ€‹](#entity-cloud "Direct link to Entity Cloud") ``` [wl_cloud] ``` The **WordLift Entities Cloud Widget** is also available as a shortcode. The widget displays entities related to the current post/entity in a tag cloud. ### Glossary[โ€‹](#glossary "Direct link to Glossary") ``` [wl_vocabulary limit=... type=... orderby=...] ``` The **Glossary** is a site-wide Widget that displays all the entities in alphabetical order. Here you can see an example of the [Semantic SEO Glossary](https://wordlift.io/blog/en/glossary) ![image](/assets/images/wordlift-discover-vocabulary-fe17e1f1acf9c42d92b1a7ca5fdab8af.gif) By default the widget takes into account the latest 100 entities from all types (i.e. Person, Place, Organization, ...). The following paramenters can be used to personalise the entities beind displayed in the vocabulary: limit the total number of entities to displaye (_100_ is the defualt value). Use `-1` to remove the limit. type the type of entities to display (_all_ is the default value). Use Person\`to display only entities of type Person. orderby the selection is by default related to the alphabetical order (_title_ is the default value). Selected entities can be ordered using different parameters. [Read more here](https://developer.wordpress.org/reference/classes/WP%5FQuery/parse%5Fquery/) --- --- url: https://docs.wordlift.io/pages/releases/ --- # Releases | WordLift Developer Documentation # Releases This section is dedicated to the latest _versions_ of the plugin. Here you can keep track of everything that is happening with the developemnt of the plugin: read the _changelog_ and discover _fixes and enhancements_. **WordLift** developement is **open source** and we love to have you as contributor to both source code and issues; with your help we can make WordLift even better ๐ŸŽ‰. Here is the link to [GitHub](https://github.com/insideout10/wordlift-plugin) and here you can find [the guidelines for contributing](https://github.com/insideout10/wordlift-plugin/blob/develop/CONTRIBUTING) to the repository. Just spotted any _creeping bug_ or some _bothering issue_? Help us to smash it down: [report bugs and issues to us in detail on GitHub](https://github.com/insideout10/wordlift-plugin/issues/new). Thank you ๐Ÿ’™ ## WordLift 3.19 (2018-05-26)[โ€‹](#wordlift-319-2018-05-26 "Direct link to WordLift 3.19 (2018-05-26)") The WordLift 3.19 release has been published in May 2018 and we had minor sub-releases since then. WordLift now works very well with _Accelerated Mobile Pages_ and you can read all about it from our blog [AMP and Structured Data](https://wordlift.io/blog/en/amp-structured-data/). A lot has been done also to optimise the structured data for images and to keep in sync the knowledge graph. [Download the latest release](https://wordpress.org/plugins/wordlift/) now from WordPress.org or update it automatically from the administration panel of your website. ## WordLift 3.18 (2018-03-20)[โ€‹](#wordlift-318-2018-03-20 "Direct link to WordLift 3.18 (2018-03-20)") The WordLift 3.18 release is now available. We have introduced the new entity type for [Offer](/pages/edit-entity/#edit-a-offer) and the support for the property `performer` on the entity type [Event](/pages/edit-entity/#edit-an-event). The [glossary widget](/pages/discover/#the-glossary-widget) has also been improved and it now supports a new option to let you display all the entities that belong to a specific WordPress Category. Above all, WordLift's Knowledge Graph got better ๐Ÿ˜‰ the plugin now stores in RDF the link between entities and articles. [Download the latest release](https://wordpress.org/plugins/wordlift/) now from WordPress.org or update it automatically from the administration panel of your website. Have a look to the full [changelog on GitHub](https://github.com/insideout10/wordlift-plugin/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.18) for this release. Read the latest article on our blog on how a [smarter knowledge graph can improve SEO on your website](https://wordlift.io/blog/en/knowledge-graph-seo/). ## WordLift 3.13.3 (2017-07-12)[โ€‹](#wordlift-3133-2017-07-12 "Direct link to WordLift 3.13.3 (2017-07-12)") The WordLift 3.13.3 release is now available. The biggest news is that you can turn _on_ and _off_ WordLiftโ€™s analysis (and annotations) anytime you like. Say you are opening an article for a quick typo edit, you can now simply disable WordLift and avoid the analysis to run. Just click on the small arrow on the top-right corner of the WordLiftโ€™s widget. See how it works in the _.gif_ below: ![image](/assets/images/wl_toggle_3-13-3-36890b0a7d1d1060f91a5c356c28386b.gif) [Download the latest release](https://wordpress.org/plugins/wordlift/) now from WordPress.org or update it automatically from the administration panel of your website. Have a look to the full [changelog on GitHub](https://github.com/insideout10/wordlift-plugin/issues?utf8=%E2%9C%93&q=is%3Aclosed%20milestone%3A3.13.3%20) for this release: * Enhancement: #558: Link to the settings page in the message about unset key. * Enhancement: #412: Add a toggle to disable WordLiftโ€™s analysis on certain pages/post. ## WordLift 3.13.2 (2017-07-9)[โ€‹](#wordlift-3132-2017-07-9 "Direct link to WordLift 3.13.2 (2017-07-9)") The WordLift 3.13.2 release is now available. The biggest news is that now _cron_ has been replaced and the synchronization between WordPress and the Linked Data cloud is more reliable for everyone! We used _cron_ to execute SPARQL queries from WordPress to the Linked Data Platform of WordLift. To replace _cron_ we used an open source component originally developed by the team at TechCrunch ๐Ÿ™Œ. [Download the latest release](https://wordpress.org/plugins/wordlift/) now from WordPress.org or update it automatically from the administration panel of your website. Have a look to the full [changelog on GitHub](https://github.com/insideout10/wordlift-plugin/issues?utf8=%E2%9C%93&q=is%3Aclosed%20milestone%3A3.13.2%20) for this release: * Fix: #575: Cron is unreliable on some web sites. * Fix: #576: Error 404 on a WooCommerce Product Page. * Fix: #571: Faceted Search not displaying correctly. * Fix: #568: Trying to get property of non-object in class-wordlift-sharethis-service.php. ## Helpful links[โ€‹](#helpful-links "Direct link to Helpful links") * [WordLift Plugin on GitHub](https://github.com/insideout10/wordlift-plugin) * [Contributing guidelines of the repository](https://github.com/insideout10/wordlift-plugin/blob/develop/CONTRIBUTING) * [WordLift official website](https://wordlift.io) * [The Plugin in the WordPress repository](https://wordpress.org/plugins/wordlift/#developers) * [Translate WordLift in other languages](https://translate.wordpress.org/projects/wp-plugins/wordlift) --- --- url: https://docs.wordlift.io/pages/semantic-analytics/ --- # Semantics Analytics | WordLift Developer Documentation # Semantics Analytics You can use **WordLift** to create an _entity-based_ [Web Analytics Dashboard](https://wordlift.io/blog/en/semantic-web-analytics/) using Google Data Studio and traffic data from Google Analytics. ## How to configure Semantics Analytics[โ€‹](#how-to-configure-semantics-analytics "Direct link to How to configure Semantics Analytics") ### Step One[โ€‹](#step-one "Direct link to Step One") Copy the Web Analytics Dashboard from [here](https://datastudio.google.com/u/0/reporting/1%5FHu7hcfMhzE5EXDrZi3RTInZQcUjkiWt?s=l%5F0Vbo5t%5Fbs). ![image](/assets/images/semantics-analytics-step-1-70135fa584b8bec273848ec99d7e1f3f.png) ### Step Two[โ€‹](#step-two "Direct link to Step Two") On the pop-up window select โ€œcreate new data sourceโ€. ![image](/assets/images/semantics-analytics-step-2-e4f29f829349d7138268c0a220a7fa66.png) ### Step Three[โ€‹](#step-three "Direct link to Step Three") Click on โ€œselectโ€ under Google Analytics. ![image](/assets/images/semantics-analytics-step-3-910ef3e87d075a536c164ad6cd1ec9ad.png) ### Step Four[โ€‹](#step-four "Direct link to Step Four") You will see a list of your current sites associated with your Google Analytics. Select the one you want to connect. ![image](/assets/images/semantics-analytics-step-4-85ff9aa9d908a90b60756d1d9573fcc7.png) ### Step Five[โ€‹](#step-five "Direct link to Step Five") Go to the top right and click on โ€œconnectโ€. ![image](/assets/images/semantics-analytics-step-5-29f8fbf549228729195f187541aa4551.png) ### Step Six[โ€‹](#step-six "Direct link to Step Six") Go to the top right and click on โ€œadd to reportโ€. ![image](/assets/images/semantics-analytics-step-6-9b5a7588eda07011dfc58c310b3b3c25.png) ### Step Seven[โ€‹](#step-seven "Direct link to Step Seven") On the pop-up window click on โ€œcopy reportโ€. ![image](/assets/images/semantics-analytics-step-7-4aa2bf936b047694173e1393b178bc7f.png) Thatโ€™s it! You will see showing up your Semantic Analytics visualization with the semantic data WordLift is sending to it. Read this article on our blog ([Web Analytics Dashboard](https://wordlift.io/blog/en/semantic-web-analytics/)) to learn more about it. --- --- url: https://docs.wordlift.io/pages/shortcodes/ --- # Shortcodes | WordLift Developer Documentation # Shortcodes WordLift provides several useful shortcodes to provide enhanced visualizations on your web site. ## Widget Shortcodes[โ€‹](#widget-shortcodes "Direct link to Widget Shortcodes") WordLift widgets can be inserted in a post or page to give a rich visual presentation of the entities populating the blog. As the blog grows and entities are created and mentioned, the widgets update their content without intervention from the editor. ### Navigator Widget[โ€‹](#navigator-widget "Direct link to Navigator Widget") ``` [wl_navigator] ``` The Navigator widget offers links to **semantic-related posts** in the blog. The search is made by considering the entities mentioned in the current post and by finding other blog posts that mentions the same entities. It is useful for [content discovery](/pages/discover/#the-faceted-search-widget). ![image](/assets/images/wordlift-discover-navigator-345c1c3ce542fbee022ccb40a78cbb6a.png) Here follows the list of the supported parameters: **title** _(optional)_ Title to be displayed above navigator. Defaults to 'Related articles'. **limit** _(optional)_ The total number of posts to display. Defaults to 4. **offset** _(optional)_ Offset for posts to display. It helps you break the list of recommended articles in different blocks (to add advertising and/or CTAs). Defaults to 0\. Defaults to 4. **template\_id** _(optional)_ The id of the script element which has mustache template. For example if the template is in `` then `template_id` would be `wordlift_navigator_sidebar_template`. **post\_id** _(optional)_ The post ID of a post of which navigator you want to display. Defaults to the current post. This is helpful if you want to display the navigator of post 'A' on post 'B' or add the navigator shortcode for a specific post in a non-post page. **uniqid** _(optional)_ The Unique ID for the navigator. This can be used to style or to apply navigator filters that are specific to an instance of the navigator (instead of acting on multiple navigators). Here is a sample code for personalizing the template to be used as reference: ``` ``` The filters available for the navigator widget are: * `wl_navigator_data_post`: Gets each navigator post item, post ID and uniqid. Returns the customized post item. * `wl_navigator_data_entity`: Gets each entity post item, post ID and uniqid. Returns the customized entity item. * `wl_navigator_data_placeholder`: Gets the complete result array and uniqid. Returns the customized result array. Can be used to seed navigator with placeholder and/or similar data. ### Faceted Search Widget[โ€‹](#faceted-search-widget "Direct link to Faceted Search Widget") ``` [wl_faceted_search] ``` The Faceted Search widget can be used on entity pages to display and filter the posts related to the current and other entities. It is useful for [content discovery](/pages/discover/#the-navigator-widget). ![image](/assets/images/wordlift-edit-entity-faceted-search-widget-frontend-02b34e2c294dbdfafde1fe7ad4881da6.gif) ### Timeline Widget[โ€‹](#timeline-widget "Direct link to Timeline Widget") ``` [wl_timeline width=... height=... global=...] ``` ![image](/assets/images/wordlift-shortcodes-timeline-c058f998afc06ac227d6fcdcc618b905.png) The Timeline widget displays a navigable list of chronologically ordered Event entities. The window on top shows details of the selected Events. Here follows the list of the supported parameters: **width** _(optional)_ Width of the timeline. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). **height** _(optional)_ Height of the timeline. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). **global** _(optional)_ By default the timeline displays events (or events related to places) mentioned in the current post. When _global=true_ the timeline displays events mentioned in the latest posts. **display\_images\_as** _(optional)_ When _display\_images\_as='background'_ the timeline displays for each event the featured image of the entity as background. **excerpt\_length** _(optional)_ Allows you to set the number of words that appear in the the excerpts of the timeline. Note When you create a timeline with WordLift you can pass in the shortcode optional parameters to set a variety of presentation options. These are derived from the TimelineJS library [read more here](https://timeline.knightlab.com/docs/options.html). ### Geomap Widget[โ€‹](#geomap-widget "Direct link to Geomap Widget") ``` [wl_geomap width=... height=... global=...] ``` ![image](/assets/images/wordlift-shortcodes-geomap-d625e46af8d4d2fcc1042d8b747ad955.png) The Geomap widget displays "Place" entities on a map. Each Place has its own marker with a popup containing a thumbnail and links of the place. Here are the parameters: **width** _(optional)_ Width of the geomap. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). **height** _(optional)_ Height of the geomap. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). **global** _(optional)_ By default the geomap displays places mentioned in the current post. When _global=true_ the geomap displays all places mentioned in the blog. ### Chord Widget[โ€‹](#chord-widget "Direct link to Chord Widget") ``` [wl_chord width=... height=... main_color=... depth=... global=...] ``` ![image](/assets/images/wordlift-shortcodes-chord-64565b67a4b03bad217943588e8f2ade.png) The Chord widget visualizes relations between entities, starting from the current post and the entities mentioned in it. **width** _(optional)_ Width of the chord. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). **height** _(optional)_ Height of the chord. Can be expressed in pixels or percentages (e.g. _120px_ or _70%_). **main\_color** _(optional)_ The chord's _base_ color. **depth** _(optional)_ Maximum distance to travel in the entity graph in order to populate the chord. A small number limits the exploration of the main entity. **global** _(optional)_ When _global=true_ the main entity of the chord is not the current post, but the most mentioned entity in the latest posts. ### Entity Cloud Widget[โ€‹](#entity-cloud-widget "Direct link to Entity Cloud Widget") ``` [wl_cloud] ``` The **WordLift Entities Cloud Widget** is also available as a shortcode. The widget displays entities related to the current post/entity in a tag cloud. ### Glossary Widget[โ€‹](#glossary-widget "Direct link to Glossary Widget") ``` [wl_vocabulary limit=... type=... orderby=...] ``` The **Glossary** is a site-wide Widget that displays all the entities in alphabetical order. Here you can see an example of the [Semantic SEO Glossary](https://wordlift.io/blog/en/glossary) ![image](/assets/images/wordlift-discover-vocabulary-fe17e1f1acf9c42d92b1a7ca5fdab8af.gif) By default the widget takes into account the latest 100 entities from all types (i.e. Person, Place, Organization, ...). The following paramenters can be used to personalise the entities beind displayed in the vocabulary: **limit** the total number of entities to displaye (_100_ is the defualt value). Use `-1` to remove the limit. **type** the type of entities to display (_all_ is the default value). Use Person\`to display only entities of type Person. **orderby** the selection is by default related to the alphabetical order (_title_ is the default value). Selected entities can be ordered using different parameters. [Read more here](https://developer.wordpress.org/reference/classes/WP%5FQuery/parse%5Fquery/) --- --- url: https://docs.wordlift.io/pages/sidebar/ --- # Sidebar | WordLift Developer Documentation # Sidebar ## Content Analysis and Disambiguation[โ€‹](#content-analysis-and-disambiguation "Direct link to Content Analysis and Disambiguation") ![image](/assets/images/wordlift-content-analysis-disambiguation-start-f36892f6630bee746df63dcb1aeffab1.png) Let's choose as relevant entity in this example _\[Web\]_, as the post is referring to the World Wide Web. As the entity type for _\[Web\]_ is a `Thing` the entity appears under the _what_ category. Note [Reconciling](/pages/key-concepts/#reconciliation) entities means **linking** the entity appearing in this text with its own equivalent on other sources (i.e. DBpedia or Freebase). ![image](/assets/images/wordlift-edit-post-widget-05-768e0e44390b1b917ae55c02efb761ad.png) Using the [WordLift Edit Post Widget](/pages/analysis/#wordLift-edit-post-widget) you can now read the following parameters: * **Entity Title** the name of the entity * **Entity Category** the type of entity according to the `schema.org` vocabulary * **Entity Description** the description of the entity All parameters but the Title can be edited directly from the \[WordLift Edit Post Widget\] Note Data being used for the enrichments comes from openely avaialble sources like DBpedia that might contain misleading information that the editor can alwasy edit. Entity properties can also be edited clicking on the "open in vocabulary" link (see [Edit Entity](/pages/edit-entity/) page.) Once you hit **Save** you are annotating this post which means adding a [semantic fingerprint](/pages/key-concepts/#semantic-fingerprint) to this piece of content. In this post another important entity worth mentioning is the creator of the World Wide Web Sir Tim Berners-Lee. The entity is properly identified as `Person` and all `Person` and `Organization` types are available under the _who_ category. ![image](/assets/images/wordlift-content-analysis-disambiguation-berners-lee-c6cc681f450f613dc85247fde5c801f7.png) Note Annotations are saved when a blog post or a page is published. Annotations and data related to each entity being annotated remain in _draft_ untill the post is published. Warning When the text from the Visual Editor is edited or removed all annotations being saved are lost. WordLift stores the editor's selection of entities in the content of the Visual Editor. ## Manual Entity Selection[โ€‹](#manual-entity-selection "Direct link to Manual Entity Selection") If you are looking to annotate an entity that hasnโ€™t been suggested by the semantic analysis you still can do it manually. Here is how it works: First select the entity that you want to annotate * Go to WordLift Edit Post Widget. * Click on Add. * Choose the entities that you want to annotate form the suggested list. ![image](/assets/images/manual-entity-selection-cbf0452d98e20de345ae6436cf01a2cd.gif) ## Adding Entities[โ€‹](#adding-entities "Direct link to Adding Entities") The purpose of using WordLift is to (1) categorize your content, (2) help people find content of interest to them, and (3) help WordLift describe your contents in _machine-readable_ format so that other computers can re-use it. In some cases key concepts that are important for (1), (2) and (3) are not automatically detected by WordLift and need to be taught by creating new entities. Note A basic guideline for adding entity is: people should apply entities the same way a librarian would plausibly use tags to classify the content you're writing if it was a book. For some basic guidelines on when creating new entities [read here](/pages/faq/#what-are-the-guidelines-for-creating-new-entities-to-annotate-a-blog-post-or-a-page). New entities being added will become part of the [WordLift vocabulary](/pages/key-concepts/#vocabulary). Once an entity as been added to the vocabulary it will be automatically detected every-time you mention it again in your contents. In our example one significant entity has not been detected and it is worth _teaching_ it to WordLift. ![image](/assets/images/wordlift-content-analysis-new-entity-highlight-12c7c3256fa72ba05cb785081911c154.gif) The entity is _\[WordLift\]_ itself. To create a new entity simply highlight the text `WordLift`, then click the button **Create New Entity** at the top of the \[WordLift Edit Post Widget\] and by clicking it you will be then able to edit the properties of the new entity. ![image](/assets/images/wordlift-content-analysis-new-entity-creation-1777f55b7c4189ebec47dd459c0fa8cd.png) Choose the category _Creative Work_ (it also applies to _Software_), add a description and hit the "Save" button. Now the new entity will appear as [related entities](/pages/key-concepts/#related-entities) of the blog post along with _\[Web\]_ and _\[Tim Berners-Lee\]_. ![image](/assets/images/wordlift-content-analysis-new-entity-creation2-08fcab10511f533534a980a3cefdb9e1.png) Warning When creating a new entity over **an existing annotation**: a) remove the annotated entity, b) re-write the entity and c) create a new one (as described above). See animation below. ![image](/assets/images/wl-new-entity-specific-case-997a31ee3e9fc004e3ba674051257165.gif) ## Updating and Linking Entities[โ€‹](#updating-and-linking-entities "Direct link to Updating and Linking Entities") ### Updating the description[โ€‹](#updating-the-description "Direct link to Updating the description") When we have something meaningful to say on a specific concept **we shall curate the information and edit the data that has been fetched automatically by WordLift** (_this will create our own version of Wikipedia_). ### Linking other entities[โ€‹](#linking-other-entities "Direct link to Linking other entities") Entity pages can be annotated just like you would do with a blog posts. After saving the new description you wrote, WordLift will analyze the text and suggest related entities. You can now _link_ an entity with other entities. WordLift will store these relationships between one entity and other entities in the [graph](/pages/key-concepts/#knowledge-graph) using the Dublin Core property `dct:related`. This information will be used to infer new connections between the contents of the site. For more information on _entity linking_ [read the faq](/pages/faq/#when-should-i-link-one-entity-to-another). % Entities being _linked_ are listed as **Releated Entities** in the editing screen of the entity. % % .. image:: /images/wordlift-content-analysis-new-entity-related-entity.png ## Synonyms[โ€‹](#synonyms "Direct link to Synonyms") You can add synonyms in WordLift for any entity. Synonyms are marked up in the structured data using the schema property [alternateName](https://schema.org/alternateName). WordLift will automatically add the synonyms it knows for a given entity. WordLift also uses synonyms for its content analysis: if you want an entity to be detected in the future you shall add all the available synonyms (ie. โ€œWWWโ€ is a synonym for โ€œWorld Wide Webโ€ - capitalization will be ignored so โ€œWWWโ€ is the same as โ€œwww). ## Entity Types[โ€‹](#entity-types "Direct link to Entity Types") Here follows the list of properties that can be edited with WordLift for each entity type. | Type | Description | Properties | Schema.org | | -------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | Thing | The most generic type of entity. | name,description,image, type,URL,sameAs, additionalType. | [Thing](http://schema.org/Thing) | | Person | A person. | name,description,image, type,URL,sameAs, additionalType. | [Person](http://schema.org/Person) | | Place | Entities with a physical extension. | name,description,image, type,URL,sameAs, additionalType,geo. | [Place](http://schema.org/Place) | | Event | An event happening in a specific time and location. | name,description,image, type,URL,sameAs, additionalType,location, startDate,endDate,performer, offers. | [Event](http://schema.org/Event) | | Offer | An offer. | name,description,image, availability,price,URL, priceCurrency, availabilityStarts, availabilityEnds, inventoryLevel,validFrom, priceValidUntil,itemOffered. | [Offer](http://schema.org/Offer) | | Organization | An organization. | name,description,image, type,URL,sameAs, additionalType,founder. | [Organization](http://schema.org/Organization) | | Local business | A physical business or branch of an organization. | name,description,image, type,URL,sameAs,address founder,geo. | [LocalBusiness](http://schema.org/LocalBusiness) | | Creative Work | The most generic kind of Creative Work(i.e. Software). | name,description,image, type,URL,sameAs, additionalType. | [CreativeWork](http://schema.org/CreativeWork) | | Recipe | A food recipe. | name,description,image, type,URL,sameAs, additionalType, cookTime, prepTime, totalTime, recipeCuisine, recipeIngredient, recipeInstructions, recipeYield, author, nutrition.calories. | [Recipe](http://schema.org/Recipe) | --- --- url: https://docs.wordlift.io/pages/troubleshooting/ --- # Troubleshooting | WordLift Developer Documentation # Troubleshooting In rare cases, you might receive an error message when installing or updating WordLift. Here are some of the issues we gathered from our clients. ## Altervista blocking **WordLift** SaaS APIs[โ€‹](#altervista-blocking-wordlift-saas-apis "Direct link to altervista-blocking-wordlift-saas-apis") If WordLift is not working as expected, your key cannot be validated and you are using Altervista go to the _Server to Server_ configuration in the Settings tab of your WordPress dashboard. ![image](/assets/images/wordlift-troubleshooting-altervista-2-9d530c12a14df2e9b86d669c35e7741b.png) Complete the identification procedure via SMS by adding your phone number. ![image](/assets/images/wordlift-troubleshooting-altervista-3-4c4b6ba255b43dbfee09c30f95d15511.png) Now add `*.wordlift.it` in the whitelist (_.it_) and you are all set. WordLift can now interact with the backend APIs, your key gets validated and you are ready to WordLift your website. --- ## While running the analysis I am receiving a Bad Request error[โ€‹](#while-running-the-analysis-i-am-receiving-a-bad-request-error "Direct link to While running the analysis I am receiving a Bad Request error") Typically this happens when the dataset of your website is corrupted (ie the post URI lacks the domain name).[Contact the support](mailto:support@wordlift.io) and we will rebuild your dataset. --- --- url: https://docs.wordlift.io/pages/widgets/ --- # Widgets | WordLift Developer Documentation # Widgets ## Context Cards[โ€‹](#context-cards "Direct link to Context Cards") [Context Cards](/pages/discover/#context-cards) provide an immediate preview of an entity. If the entity has been annotated and, if links are active, WordLift will show a preview of the annotated entity. By default context cards will show up on hovering if Links to Entity Pages are enabled. To disable context cards, add the following code to your theme: The context card itself is wrapped within a class `wl-context-card` You can style this class and the child element classes using CSS. Other classes that you can use to style the context cards: * `wl-context-card__image` \- Image element * `wl-context-card__description` \- Wrapper element around complete description * `wl-context-card__description__logo` \- Publisher logo image element * `wl-context-card__description__text` \- Wrapper element around description text ### Advanced Filters to override default behaviour[โ€‹](#advanced-filters-to-override-default-behaviour "Direct link to Advanced Filters to override default behaviour") #### Javascript Filter `wl_context_cards_load_fn_supplier`[โ€‹](#javascript-filter-wl%5Fcontext%5Fcards%5Fload%5Ffn%5Fsupplier "Direct link to javascript-filter-wl_context_cards_load_fn_supplier") This is a function supplier filter that the context card applies if provided. This filter can be used to supply a function that overrides the the default function that returns a fetch (or any other request library) promise. This filter receives two arguments: 1. Endpoint of the context cards (`url`) 2. DOM element that triggered the context card (`el`) The filter is expected to return a fetch (or any other request library) promise with the desired request. Here's a sample implementation of this filter: ``` const settings = global["_wlEntityRedirectSettings"]; addFilter("wl_context_cards_load_fn_supplier", "wordlift", (defaultFn) => { return (url, el) => { const enabled = el.getAttribute("data-entity-redirect-enabled"); // If entity redirect isn't enabled for this target, then return the defaultFn. if ("true" !== enabled) return defaultFn(url, el); const join = -1 === url.indexOf("?") ? "?" : "&"; // should load things const ids = el .getAttribute("data-id") .split(";") .map((s) => encodeURIComponent(s)); const params = `${join}website=1&entity-redirect=true&id[]=` + ids.join("&id[]="); return fetch(`${settings.url}${params}`) .then((response) => response.json()) .then((json) => { // Return the JSON if it contains at least 2 elements (i.e. an entity and the web site). if (1 < json.length) return json; // Otherwise return the default function. return defaultFn(url, el); }); }; }); ``` #### PHP Filter `wl_anchor_data_attributes`[โ€‹](#php-filter-wl%5Fanchor%5Fdata%5Fattributes "Direct link to php-filter-wl_anchor_data_attributes") This filter lets you add custom data attributes to `` links in the post. This received existing `attributes` and the `post_id`. Here's a sample implementation of this filter: ``` add_filter( 'wl_anchor_data_attributes', function ( $attributes, $post_id ) { return $attributes + array( 'entity-redirect-enabled' => ( Wordlift_Entity_Redirect_Status::is_enabled( $post_id ) ? 'true' : 'false' ) ); }, 10, 2 ); ``` ## Faceted Search[โ€‹](#faceted-search "Direct link to Faceted Search") **Entity pages** can be used for helping users browse the content of your website. This is done using the **Faceted Search Widget**. The Widget can be added on the entity page using the **Faceted Search** option from the [Widgets Dropodown Menu](/pages/analysis/#wordlift-widgets-menu) ![image](/assets/images/wordlift-edit-entity-faceted-search-widget-b942e4d616c88054314f06d8ac82f266.png) Alternatively, the `[wl_faceted_search]` shortcode can be used. * **Faceted Search**: Provides a faceted search user interface to help readers discover relevant articles using the network of entities. ![image](/assets/images/wordlift-edit-entity-faceted-search-widget-frontend-02b34e2c294dbdfafde1fe7ad4881da6.gif) The example above represents the widget displayed in the front-end. The reader can select multiple concepts and highlight the list of articles related to these concepts. ## Navigator[โ€‹](#navigator "Direct link to Navigator") The [Navigator widget](/pages/discover/#the-navigator-widget) by default is wrapped in a `wl-navigator` class. You can style this class and the child element classes using CSS. Optionally, while using the navigator, you can also specify a `template_id` to style a specific instance with its own template. The template can be written using [Mustache](https://github.com/Mustache/Mustache): a framework-agnostic way to style web components. Here's a sample code that you can use as reference: ``` ``` As a theme developer you have complete flexibility on both: the contents of these templates and the CSS styling. Read here the [parameters supported](/pages/shortcodes/#navigator-widget) by the Navigator widget. ## Examples[โ€‹](#examples "Direct link to Examples") ### Personalization of the Navigator Widget[โ€‹](#personalization-of-the-navigator-widget "Direct link to Personalization of the Navigator Widget") The [Navigator widget](/pages/discover/#the-navigator-widget) by default is wrapped in a `wl-navigator` class. You can style this class and the child element classes using CSS. Optionally, while using the navigator, you can also specify a `template_id` to style a specific instance with its own template. The template can be written using [Mustache](https://github.com/Mustache/Mustache): a framework-agnostic way to style web components. Here's a sample code that you can use as reference: ``` ``` As a theme developer you have complete flexibility on both: the contents of these templates and the CSS styling. Read here the [parameters supported](/pages/shortcodes/#navigator-widget) by the Navigator widget. ### Personalization of the Context Cards[โ€‹](#personalization-of-the-context-cards "Direct link to Personalization of the Context Cards") [Context Cards](/pages/discover/#context-cards) provide an immediate preview of an entity. If the entity has been annotated and, if links are active, WordLift will show a preview of the annotated entity. By default context cards will show up on hovering if Links to Entity Pages are enabled. To disable context cards, add the following code to your theme: The context card itself is wrapped within a class `wl-context-card` You can style this class and the child element classes using CSS. Other classes that you can use to style the context cards: * `wl-context-card__image` \- Image element * `wl-context-card__description` \- Wrapper element around complete description * `wl-context-card__description__logo` \- Publisher logo image element * `wl-context-card__description__text` \- Wrapper element around description text --- --- url: https://docs.wordlift.io/pages/wordlift-cloud/ --- # WordLift Cloud | WordLift Developer Documentation # WordLift Cloud Learn how to use WordLift Cloud to improve the **organic traffic** of your website using [Semantic SEO](https://wordlift.io/blog/en/entity/semantic-seo). ## Introduction[โ€‹](#introduction "Direct link to Introduction") The **WordLift Cloud** is a _web-based application_ designed to bring the semantic markup of WordLift to any website regardless of the CMS being used.**WordLift Cloud** is activated on any HTML page by adding a JS in the HEAD section of the page. **WordLift Cloud** enables content owners to re-use any [RDF knowledge graph](https://wordlift.io/blog/en/entity/knowledge-graph/) to add [schema markup](https://wordlift.io/blog/en/entity/schema-org/). ## Get Started with WordLift Cloud[โ€‹](#get-started-with-wordlift-cloud "Direct link to Get Started with WordLift Cloud") **WordLift Cloud** uses a launcher JavaScript that needs to be added to the pages of your website. Once the script has been added, authenticated users, are able to activate the WordLift Sidebar widget, choose the relevant entities for a given article and publish the linked metadata using [JSON Linked Data](https://wordlift.io/blog/en/entity/json-ld) to improve the SEO. The markup can be checked using the [Structured Data Testing Tool of Google](https://search.google.com/structured-data/testing-tool). To start enriching your content using WordLift Cloud: 1. [Contact us](https://wordlift.io/contact-us/) to get your account. 2. Add the following script in the `HEAD` section of all the pages: ``` ``` 1. Visit the page that you want to enrich with your favorite browser. 2. Activate the WordLift Sidebar widget by pressing the "W" key while holding the Control and Alt keys: Ctrl + Alt + "W". 3. Point and click to the area of the page that you wish to annotate. 4. Chose the list of entities from the widget that represent at best the content of the page. You are all set. Entities have been saved automatically and the page now features the required**WordLift Cloud** enables content owners to re-use any [RDF knowledge graph](https://wordlift.io/blog/en/entity/knowledge-graph/) to add [schema markup](https://wordlift.io/blog/en/entity/schema-org/). Note To learn more about the **WordLift Cloud** [get in contact](https://wordlift.io/contact-us/) with our _concierge team_ and request a WordLift access key. Our team will help you to get the best out of the service. --- --- url: https://docs.wordlift.io/pages/wordlift-theme-development/ --- # WordLift Theme Development | WordLift Developer Documentation # WordLift Theme Development ## Who should read this[โ€‹](#who-should-read-this "Direct link to Who should read this") This document is intended for Web Developers that would like to extend their themes to support WordLift's data model and features. In the first paragraph we describe the WordLift data model, i.e. _how additional properties for entities are stored in WordPress_. ## WordLift Data Model[โ€‹](#wordlift-data-model "Direct link to WordLift Data Model") 1. WordLift Entities are **custom posts**; 2. Entity properties are managed as standard posts' metadata; 3. Entity types are managed through a [custom taxonomy](https://codex.wordpress.org/Taxonomies#Custom%5FTaxonomies); 4. **When a property references another entity:** * Its value is the entity ID (if the entity is inside the same WordPress site), * Its value is the entity URI (if the entity is outside the WordPress site). 5. The 4Ws classification, i.e. the relationships among posts and entities, are stored in a custom table called _wl\_relation\_instances_. 6. WordLift's Topics are a [custom taxonomy](https://codex.wordpress.org/Taxonomies#Custom%5FTaxonomies) ## Content Filtering - Available APIs[โ€‹](#content-filtering---available-apis "Direct link to Content Filtering - Available APIs") 1. Standard WordPress methods (such as [get\_posts](https://codex.wordpress.org/Template%5FTags/get%5Fposts) and [get\_post\_meta](https://developer.wordpress.org/reference/functions/get%5Fpost%5Fmeta/)) can be used on entities; 2. [get\_post\_terms](https://codex.wordpress.org/Function%5FReference/wp%5Fget%5Fpost%5Fterms) can be used to extract topics from posts see the example below; ``` wp_get_post_terms( , Wordlift_Topic_Taxonomy_Service::TAXONOMY_NAME, ) ``` 1. WordLift's _Properties API_ can be used to read/write entity properties using schema.org property names. See [here](https://github.com/insideout10/wordlift-plugin/blob/master/src/modules/core/wordlift%5Fcore%5Fschema%5Fapi.php); 2. WordLift's _Relations API_ can be used to access 4W relationships. See [here](https://github.com/insideout10/wordlift-plugin/blob/master/src/modules/core/wordlift%5Fcore%5Fpost%5Fentity%5Frelations.php). ## Personalization of Entity pages - Single Post[โ€‹](#personalization-of-entity-pages---single-post "Direct link to Personalization of Entity pages - Single Post") Entities are configured in WordPress as [Custom Post Types](https://codex.wordpress.org/Post%5FTypes#Custom%5FPost%5FTypes) and the post type is called **entity**. To personalise the design of entity pages the template file to be used is called [Single Post](https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post). Template files in WordPress are modular, reusable files, to create web pages on your web site. To learn more how to customize an existing WordPress theme or create a new one read the [template hirarchy page](https://developer.wordpress.org/themes/basics/template-hierarchy/) on the WordPress website or visualise the [WordPress template hierarchy](https://wphierarchy.com/). Note When [articles or pages are turned into entities](https://wordlift.io/blog/en/wordlift-3-15/) they mantain their existing post type. To personalise the template based on the entity type use the following: ``` Wordlift_Entity_Type_Service::get_instance()->get( $post_id ) ``` This will return: ``` * @return array|null { * An array of type properties or null if no term is associated * * @type string css_class The css class, e.g. `wl-thing`. * @type string uri The schema.org class URI, e.g. `http://schema.org/Thing`. * @type array same_as An array of same as attributes. * @type array custom_fields An array of custom fields. * @type array linked_data An array of {@link Wordlift_Sparql_Tuple_Rendition}. * } ``` ## Personalization of the Navigator Widget[โ€‹](#personalization-of-the-navigator-widget "Direct link to Personalization of the Navigator Widget") The [Navigator widget](/pages/discover/#the-navigator-widget) by default is wrapped in a `wl-navigator` class. You can style this class and the child element classes using CSS. Optionally, while using the navigator, you can also specify a `template_id` to style a specific instance with its own template. The template can be written using [Mustache](https://github.com/Mustache/Mustache): a framework-agnostic way to style web components. Here's a sample code that you can use as reference: ``` ``` As a theme developer you have complete flexibility on both: the contents of these templates and the CSS styling. Read here the [parameters supported](/pages/shortcodes/#navigator-widget) by the Navigator widget. ## Personalization of the Context Cards[โ€‹](#personalization-of-the-context-cards "Direct link to Personalization of the Context Cards") [Context Cards](/pages/discover/#context-cards) provide an immediate preview of an entity. If the entity has been annotated and, if links are active, WordLift will show a preview of the annotated entity. By default context cards will show up on hovering if Links to Entity Pages are enabled. To disable context cards, add the following code to your theme: The context card itself is wrapped within a class `wl-context-card` You can style this class and the child element classes using CSS. Other classes that you can use to style the context cards: * `wl-context-card__image` \- Image element * `wl-context-card__description` \- Wrapper element around complete description * `wl-context-card__description__logo` \- Publisher logo image element * `wl-context-card__description__text` \- Wrapper element around description text ### Advanced Filters to override default behaviour[โ€‹](#advanced-filters-to-override-default-behaviour "Direct link to Advanced Filters to override default behaviour") #### Javascript Filter `wl_context_cards_load_fn_supplier`[โ€‹](#javascript-filter-wl%5Fcontext%5Fcards%5Fload%5Ffn%5Fsupplier "Direct link to javascript-filter-wl_context_cards_load_fn_supplier") This is a function supplier filter that the context card applies if provided. This filter can be used to supply a function that overrides the the default function that returns a fetch (or any other request library) promise. This filter receives two arguments: 1. Endpoint of the context cards (`url`) 2. DOM element that triggered the context card (`el`) The filter is expected to return a fetch (or any other request library) promise with the desired request. Here's a sample implementation of this filter: ``` const settings = global["_wlEntityRedirectSettings"]; addFilter("wl_context_cards_load_fn_supplier", "wordlift", (defaultFn) => { return (url, el) => { const enabled = el.getAttribute("data-entity-redirect-enabled"); // If entity redirect isn't enabled for this target, then return the defaultFn. if ("true" !== enabled) return defaultFn(url, el); const join = -1 === url.indexOf("?") ? "?" : "&"; // should load things const ids = el .getAttribute("data-id") .split(";") .map((s) => encodeURIComponent(s)); const params = `${join}website=1&entity-redirect=true&id[]=` + ids.join("&id[]="); return fetch(`${settings.url}${params}`) .then((response) => response.json()) .then((json) => { // Return the JSON if it contains at least 2 elements (i.e. an entity and the web site). if (1 < json.length) return json; // Otherwise return the default function. return defaultFn(url, el); }); }; }); ``` #### PHP Filter `wl_anchor_data_attributes`[โ€‹](#php-filter-wl%5Fanchor%5Fdata%5Fattributes "Direct link to php-filter-wl_anchor_data_attributes") This filter lets you add custom data attributes to `` links in the post. This received existing `attributes` and the `post_id`. Here's a sample implementation of this filter: ``` add_filter( 'wl_anchor_data_attributes', function ( $attributes, $post_id ) { return $attributes + array( 'entity-redirect-enabled' => ( Wordlift_Entity_Redirect_Status::is_enabled( $post_id ) ? 'true' : 'false' ) ); }, 10, 2 ); ``` --- --- url: https://docs.wordlift.io/product-knowledge-graph-builder/feed-specifications/ --- # Feed Specifications | WordLift Developer Documentation # Feed Specifications **Mapping Between Google Merchant Product Properties and Schema.org Properties** Customers and integrators can further enhance the Product graphs by using [webhooks](/product-knowledge-graph-builder/webhooks/). | Google Merchant Product Property | Required | Schema.org Property | Description | | -------------------------------- | ----------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | offerId | required | sku | The product SKU | | title | required | name | The product name | | description | required | description | The product description; HTML is allowed | | link | required | url | The product URL | | imageLink | required | image | The main product image; must have a ratio of 1:1, 4:3, or 16:9 and be at least 1,600 pixels wide | | additionalImageLinks | recommended | image | Other product images; provide at least three ratios: 1:1, 4:3, and 16:9 | | availability | required | availability | Allowed values: InStock, LimitedAvailability, OnlineOnly, Discontinued, InStoreOnly, OutOfStock, SoldOut, PreOrder, PreSale, BackOrder | | price\_value | required | price | The price without currency and thousands separator; use a period (.) to separate decimals | | price\_currency | required | priceCurrency | The currency in 3-letter uppercase format | | brand | recommended | brand | The brand name | | canonicalLink | recommended | url | The product's canonical page URL | | gtin | recommended | gtin (or gtin8, gtin12, gtin13, gtin14) | The Global Trade Item Number | | condition | recommended | itemCondition | Allowed values: NewCondition, RefurbishedCondition, DamagedCondition, UsedCondition | | shipping0\_price\_value | recommended | shippingRate.value | The shipping price without currency and thousands separator; use a period (.) to separate decimals | | shipping0\_price\_currency | recommended | shippingRate.currency | The currency in 3-letter uppercase format | | shipping0\_country | recommended | shippingDestination.addressCountry | 2-letter uppercase country code | | shippingWeight\_value | recommended | weight.value | The product weight | | shippingWeight\_unit | recommended | weight.unitText | The weight unit | | id | optional | \- | The merchant ID, if available | | source | optional | \- | The feed source | | contentLanguage | optional | \- | The content language 2-letter lowercase code | | targetCountry | optional | \- | The target country 2-letter uppercase code | | feedLabel | optional | \- | The feed name | | channel | optional | \- | The target channel | | googleProductCategory | optional | \- | Google-defined product category | | itemGroupId | optional | inProductGroupWithID | A parent SKU to group variant products | | age\_group | recommended | audience.suggestedMinAge, audience.suggestedMaxAge | The intended demographic age range | | gender | recommended | audience.suggestedGender | The intended gender | | color | recommended | color | The product's color(s) | | material | recommended | material | The product's fabric or material | | product\_type | recommended | \- | The product category defined by you | **Recent Updates:** * **Newly Added Properties:** * `additionalImageLinks` โ†’ `image` Additional images for the product, supports multiple image URLs * `canonicalLink` โ†’ `url` The canonical URL of the product, ensuring search engines reference the correct page * `itemGroupId` โ†’ `inProductGroupWithID` Used to group product variants under a common identifier * `age_group` โ†’ `audience.suggestedMinAge, audience.suggestedMaxAge` Defines the intended audience age range: `newborn` 0.0-0.25 years, `infant` 0.25-1.0 years, `toddler` 1.0-5.0 years, `kids` 5.0-13.0 years, `adult` 13.0+ years * `gender` โ†’ `audience.suggestedGender` Specifies the gender targeting: `Female`, `Male`, `Unisex` * `shipping0_price_value` โ†’ `shippingRate.value` Specifies the shipping cost, using a decimal format * `shipping0_price_currency` โ†’ `shippingRate.currency` The currency of the shipping cost in 3-letter uppercase format * `shipping0_country` โ†’ `shippingDestination.addressCountry` Indicates the shipping destination using a 2-letter country code * `color` โ†’ `color` Defines the color of the product as described by the merchant * `material` โ†’ `material` Indicates the fabric or material composition of the product --- --- url: https://docs.wordlift.io/product-knowledge-graph-builder/introduction/ --- # Introduction | WordLift Developer Documentation # Product Knowledge Graph Builder **Product KG Builder** is the feature for e-commerce that allows you to automate your SEO and **[create a Product Knowledge Graph](https://wordlift.io/blog/en/how-build-product-knowledge-graph/) with your Google Merchant Feed.** This helps e-commerce to **communicate with Googleโ€™s Shopping Graph and get free listings in Google Shopping**. At the same time, it **improves the user experience** by providing your customers with information that is relevant to their search. WordLift [Product Knowledge Graph Builder](https://wordlift.io/seo-for-non-wordpress-ecommerce/) can make a difference in your e-commerce and positively **impact both organic traffic and sales.** > **Behind the Scenes:**Our system automatically parses your Merchant Feed and enriches product data with structured metadata. This seamless integration helps Google understand your products better, resulting in improved search visibility and customer engagement. ## Compatibility Across Platforms[โ€‹](#compatibility-across-platforms "Direct link to Compatibility Across Platforms") Our Product Knowledge Graph Builder is designed **for e-commerce platforms no WordPress**. It's the perfect solution **for any CMS, including Shopify, Magento, Joomla, and Drupal.** This means no matter what technology powers your e-commerce site, you can easily integrate our tool to enhance your SEO and visibility on Google Shopping. It's simple, straightforward, and ensures no one is left out. > **Behind the Scenes:**The integration layer connects with a variety of e-commerce systems using standardized APIs, ensuring robust and secure data exchange regardless of the platform. ## Get Started[โ€‹](#get-started "Direct link to Get Started") Once you have purchased the WordLift [Business subscription](https://wordlift.io/pricing/) you will receive a key and then you will be able to access your dashboard. The first step to start using your PKG Builder is to go to your dashboard and click on **\+ Add Merchant** on the left side, then follow the simple steps in the wizard. ### Overview Diagram[โ€‹](#overview-diagram "Direct link to Overview Diagram") Here is an overview of the Product Knowledge Graph Builder setup process: ![Product Knowledge Graph Builder Flow](/assets/images/PKGBuilder_workflow-fce30769ea26650f1e31f1b44bce0b9b.svg) ### 1\. Link your Google Account[โ€‹](#1-link-your-google-account "Direct link to 1. Link your Google Account") **What You Do:**Sign in with your Google account by clicking the provided button in the wizard. ![image](/assets/images/PKGBuilder_1-0ef8abd347b4530c609846abcf1433d8.png) > **Behind the Scenes:**Our system uses OAuth 2.0 for secure authorization. This ensures that your credentials remain safe while granting the necessary access to import your Merchant Feed data. ### 2\. Choose the Merchant Feed[โ€‹](#2-choose-the-merchant-feed "Direct link to 2. Choose the Merchant Feed") **What You Do:**Select the Merchant Feed you want to import. ![image](/assets/images/PKGBuilder_2-65c5b539898599d0a4af0f29b5fa3b25.png) At the moment, only one language per import is supported. Therefore, if your feed contains multiple languages, use the **Path** to filter the language (e.g., **/en**). Then you can create another configuration for another language. > **Behind the Scenes:**The tool validates and maps the feed data to create a consistent structure for your Product Knowledge Graph. Language filters help ensure that the correct version of your content is imported. ### 3\. Create your Product Knowledge Graph[โ€‹](#3-create-your-product-knowledge-graph "Direct link to 3. Create your Product Knowledge Graph") **What You Do:**Link your website and import the data from the Merchant Feed to the website. To **create your Product Knowledge Graph** you need to add the provided script into your website. Click **Finish**. Once you have completed these 3 steps, you will see that the **products** have been imported into the backend of your e-commerce website and **already enriched with structured data.** From the WordLift dashboard, you can open the backend of your website to view the imported products and synchronize the data (this process takes about 1 hour). > **Behind the Scenes:**When you add the script to your website, it initiates a secure connection between your site and our servers. Data is then synchronized using batch updates and caching techniques to ensure efficient processing. ### Last Update[โ€‹](#last-update "Direct link to Last Update") The update of [Product Knowledge Graph Builder](https://wordlift.io/seo-for-non-wordpress-ecommerce/) added important elements to this feature: * You can **reassign an existing merchant feed configuration to another Google account** that is not the same as the originally configured account. This way you have control over your data even if the platform was configured by someone else. * In the PKG Builder configuration, you can **add a custom domain** and specify the dataset you want to use. * You can check the **inport synchronization** at any time. * **Change the "Seller Name."** This element, which cannot be edited in the Merchant Feed, is customizable in our Builder. > **Behind the Scenes:**These new features allow for greater flexibility and control. The modular design of our system ensures that updates and customizations are applied seamlessly without disrupting the overall data flow. ### Advanced Integration[โ€‹](#advanced-integration "Direct link to Advanced Integration") For developers looking to customize their product data processing, we offer a powerful [webhooks integration](/product-knowledge-graph-builder/webhooks/). This allows you to modify RDF data from the Merchant Center before it's committed to the Graph store, enabling advanced customization of your Product Knowledge Graph. ## IMPORTANT[โ€‹](#important "Direct link to IMPORTANT") To ensure the proper implementation of structured data and Knowledge Graph, **it is crucial to effectively manage canonical links for products within the Google Merchant Center**. To gain a comprehensive understanding of how to accomplish this task, we highly recommend referring to Google's official documentation available at the [following link.](https://support.google.com/merchants/answer/9340054?hl=en) > **Behind the Scenes:**Proper management of canonical links prevents duplicate content issues and helps Google correctly identify the master version of your product pages, ultimately boosting your SEO performance. ## Azure Marketplace Integration[โ€‹](#azure-marketplace-integration "Direct link to Azure Marketplace Integration") > **For Azure Users:** The Product Knowledge Graph Builder is also available through the Azure Marketplace. If you're an Azure customer, you can activate and manage your Product Knowledge Graph directly through your Azure account for seamless integration with your existing infrastructure. To get started with the Azure Marketplace version: 1. Visit the [Azure Marketplace](https://azuremarketplace.microsoft.com) 2. Search for "WordLift Product KG Builder" 3. Select your plan and activate the service 4. Follow the standard setup process as described above The Azure Marketplace integration offers the same powerful features while leveraging your existing Azure infrastructure and billing. --- --- url: https://docs.wordlift.io/product-knowledge-graph-builder/webhooks/ --- # Webhooks | WordLift Developer Documentation # Webhooks > **What is a webhook?** A webhook is a method used to send real-time data updates from one application to another as soon as an event occurs. It allows for seamless integration and communication between systems by automatically triggering a callback when specific events take place. ## Introduction[โ€‹](#introduction "Direct link to Introduction") This guide explains the new webhooks feature in the Product Knowledge Graph Builder. With webhooks, your platform can modify RDF data from the Merchant Center before itโ€™s committed to the Graph store. This enables greater customization of product graphs, enhancing SEO and ensuring that your product information is as accurate and enriched as possible. --- ## How It Works[โ€‹](#how-it-works "Direct link to How It Works") The integration process works in the following sequence: 1. **Retrieve Product from Google Merchant Center:**The Platform KG Builder queries the Merchant Center to retrieve product data. 2. **Product Graph Creation:**A product graph is generated for each product based on the imported Merchant Feed data. 3. **Webhook Invocation:**The Platform KG Builder sends product graphs in batches to your webhook endpoint via an HTTP POST request. The webhook is expected to process (e.g., enhance, validate, or modify) the RDF data. 4. **Response Processing:**Your webhook replies with the updated RDF graph. The Platform KG Builder then writes this updated data to the Graph store. --- ## Integration Diagram[โ€‹](#integration-diagram "Direct link to Integration Diagram") Below is a flow diagram that visualizes the webhook integration process: _Figure: Flow Diagram of the Webhook Integration Process_ --- ## Technical Details[โ€‹](#technical-details "Direct link to Technical Details") ### Endpoint Details[โ€‹](#endpoint-details "Direct link to Endpoint Details") * **HTTP Method:** POST * **Endpoint Example:** `https://example.org/webhook/calls` ### Request Headers[โ€‹](#request-headers "Direct link to Request Headers") * `Content-Type: application/json; charset=utf-8` ### Request Payload Structure[โ€‹](#request-payload-structure "Direct link to Request Payload Structure") The payload is a JSON object that includes: * **webhook\_name:** Identifier for the event (e.g., `"productkg_preupdate"`). * **items:** An array of product objects where each product has: * **id:** Unique identifier (typically a URL). * **rdf:** An object containing: * **format:** RDF format (e.g., `"turtle"`). * **data:** The actual RDF data in a string format. ### Example Request (Step-by-Step)[โ€‹](#example-request-step-by-step "Direct link to Example Request (Step-by-Step)") 1. **Prepare the CURL Command:** ``` curl -X "POST" "http://localhost:8080/webhook/calls" \ -H 'Content-Type: application/json; charset=utf-8' \ -d '{ "webhook_name": "before_productkg_create", "items": [ { "id": "https://data.example.org/test-841554094878123/01/7895653316409", "rdf": { "format": "turtle", "data": "..." } } ] }' ``` 2. **Send the Request:**Run the above CURL command in your terminal. This POST request sends the product graphs to your webhook endpoint for processing. ### Example Response[โ€‹](#example-response "Direct link to Example Response") Your webhook should respond with an HTTP 200 status and a JSON payload that contains the updated RDF data. For example: ``` HTTP/1.1 200 OK Content-Type: application/json Content-Length: 8998 connection: close { "items": [ { "id": "https://data.example.org/test-841554094878123/01/7895653316409", "rdf": { "format": "turtle", "data": "..." } } ] } ``` _Note:_ The response must include the updated RDF data exactly as processed by your webhook. --- ## Step-by-Step Example Walkthrough[โ€‹](#step-by-step-example-walkthrough "Direct link to Step-by-Step Example Walkthrough") 1. **Graph Creation:**The Platform KG Builder retrieves product data and creates RDF graphs for each product. 2. **Webhook Call:**Each graph is sent via an HTTP POST request to your webhook endpoint. Use the CURL command provided above to simulate a call. 3. **Webhook Processing:**Your webhook receives the JSON payload, processes the RDF data (for example, altering specific fields or adding new metadata), and returns the updated graph. 4. **Data Synchronization:**Upon receiving the HTTP 200 response with the updated RDF graphs, the Platform KG Builder writes the data to the Graph store. --- ## Conclusion[โ€‹](#conclusion "Direct link to Conclusion") By following this guide, integrators can easily set up and test the webhook functionality. This feature not only enables real-time manipulation of product graphs but also ensures that your e-commerce platform communicates effectively with Googleโ€™s Shopping Graph, boosting both search visibility and customer engagement. For further questions or support, please refer to our support documentation or contact the development team. --- --- url: https://docs.wordlift.io/search/ --- # Search the documentation | WordLift Developer Documentation ![Chat Bot Icon](https://bot-framework-westeurope.azureedge.net/bot-icons-v1/bdb5390f-2312-420b-89b3-6d753841cdb1_DjAC7MB61QR80uauCeo1sPEve8jqABuAkHEcY8I28t0Dno.png) [Skip to main content](#%5F%5Fdocusaurus%5FskipToContent%5Ffallback) [![WordLift](/img/logo.svg)![WordLift](/img/logo-dark.svg)**Guide**](/)[Start Here](/) [Products](#) * [Search Demand / Google Sheets Add-on](/seo-add-on-google-sheets/introduction/) * [Knowledge Graph / Botify Connector](/knowledge-graph/botify/) * [Knowledge Graph / Sitemap Import](/knowledge-graph/sitemap-import/) * [Knowledge Graph / Analytics Import](/knowledge-graph/analytics-api/) * [Knowledge Graph / Product Knowledge Graph Builder](/product-knowledge-graph-builder/introduction/) * [Knowledge Graph / WordPress Plugin](/wordpress-plugin/) * [Knowledge Graph / WooCommerce Plugin](/woocommerce/introduction/) * [Knowledge Graph / Cloud](/cloud/) * [Knowledge Graph / KG-REST](/knowledge-graph/kg-rest/) * [Knowledge Graph / Multilingual Graphs](/knowledge-graph/multilingual/) * [Smart Content / AI SEO Agent](/agent-wordlift/) * [Smart Content / Content Generation](/content-generation/) * [Smart Content / AI & LLM Integrations](/llm-connectors/wordlift-reader/) * [Marketing Automation / Zapier](/marketing-automation/zapier/introduction/) * [Marketing Automation / Power Automate](/marketing-automation/power-automate/introduction/) * [Semantic Reporting / Looker Studio Connector ](/looker-studio-connector/introduction/) [AI SEO Agent](/agent-wordlift/)[API](/category/api/) [GitHub](https://github.com/wordlift) Search # Search the documentation Powered by Social * [GitHub](https://github.com/wordlift) * [LinkedIn](https://www.linkedin.com/company/wordlift/) * [X (Twitter)](https://twitter.com/wordliftit) * [Facebook](https://www.facebook.com/wordlift/) Solutions * [Visibility Solution](https://wordlift.io/visibility-solution/) * [Product Performance](https://wordlift.io/product-performance-solution/) * [Agent WordLift](https://wordlift.io/agent/) * [Intelligence Service](https://wordlift.io/intelligence-service/) Get Started * [Pricing](https://wordlift.io/pricing/) * [Documentation](/) * [API Reference](/category/api/) AI Resources * [llms.txt](/llms.txt) * [llms-full.txt](/llms-full.txt) Copyright ยฉ 2025 WordLift srl --- --- url: https://docs.wordlift.io/seo-add-on-google-sheets/introduction/ --- # Introduction | WordLift Developer Documentation # SEO Add-On for Google Sheets [**SEO Add-on for Google Sheetsโ„ข by WordLift**](https://wordlift.io/blog/en/seo-add-on-for-google-sheets/) is the extension that allows you to perform **semantic keyword research** and **entity analysis**, and create a JSON-LD to help Google understand what your content is about. With a few simple clicks, you can install the extension, you can analyze the entities behind a search query and the entities behind a web page (whether itโ€™s your page or a competitorโ€™s) and develop a semantic content strategy that determines which entities can enrich your content and beat the competition. The Entity Analysis supports hundreds of languages with many different alphabets (any language natively supported by WikiData). In this video you will learn what is SEO Add-On for Google Sheets and how it can help you to improve your SEO strategy. ## How it works[โ€‹](#how-it-works "Direct link to How it works") ### 1\. Installation[โ€‹](#1-installation "Direct link to 1. Installation") To install the SEO Add-on, open the Google Marketplace by clicking on the following link: [](https://workspace.google.com/marketplace/app/wordlift/785668802292) Then click on the _Install_ button, then the _Continue_ button, and then click on _Allow_ when requested. ### 2\. Create Google Sheets[โ€‹](#2-create-google-sheets "Direct link to 2. Create Google Sheets") Once the SEO Add-on is installed, you can create a new Google Sheetsโ„ข document by clicking on this link, [sheets.new](http://sheets.new). When in Google Sheets, open the SEO Add-on by clicking on the _Extensions_ menu, the _WordLift_, and finally _Open_: the sidebar will show. ### 3\. Configure Settings[โ€‹](#3-configure-settings "Direct link to 3. Configure Settings") Next step is to configure the **SEO Add-on settings**, click on the Next button in the sidebar. You'll need a key for the SEO Add-on to work. Normally we prefill the key based on your e-mail address, but if you're using a different e-mail address with Google, you'll need to insert the key yourself. You can also configure your **target geo market**, **language** and the **Google domain** to use for SERP analysis. ### 4\. Run the Entity Analysis[โ€‹](#4-run-the-entity-analysis "Direct link to 4. Run the Entity Analysis") Start running the Entity analysis is very easy. Once you have set up your SEO add-on, click **Entity Analysis** and follow the steps: Select up to 5 queries or URLs you want to analyze and run the analysis. The result includes: * The **list of entities** with links to DBpedia or WiKidata, * The **confidence level** of each entity (a value from 0 to 1 that takes into account factors such as thematic relevance and contextual ambiguity), * The **ranking** of the entities in the SERP (this data is obtained during the analysis of the entities to which a query refers), * The **number of occurrences** in the text (i.e., how often the entity appears in the mentioned content). You can select the most relevant entities, and the SEO Add-on will automatically create the JSON-LD that you need to copy and past into your website. ### 5\. Expand Your Content[โ€‹](#5-expand-your-content "Direct link to 5. Expand Your Content") With the **Content Expander**, you can enrich your content by integrating relevant entities. Here's how you can make the most of it in just three simple steps. First, from the main schemata click on **"Expand Content."** Note that you need an OpenAI key to configure this feature. To find out how to get one, you can visit [this link](https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key). ![image](/assets/images/step1-content-expander-homepage-7dac520e8c9bf3334ccd8dc6790e06d1.png) #### Step 1: Choose a URL[โ€‹](#step-1-choose-a-url "Direct link to Step 1: Choose a URL") Begin by selecting the URL of the page you're working on. This could be a blog post, article, or any web page that you're looking to enhance. The Content Expander will analyze this page to understand its context and existing content. ![image](/assets/images/step3-content-expander-URL-186d5afa1392a604a992750c21f18e7a.png) #### Step 2: Write Entities[โ€‹](#step-2-write-entities "Direct link to Step 2: Write Entities") Next, compile a **list of entities that you want to incorporate into your content**. These entities can be essential keywords, concepts, or topics related to your content. This step ensures that the generated content seamlessly integrates with your existing material. ![image](/assets/images/step4-content-expander-entities-4a89356ce7402c494d09280f0e0a2162.png) #### Step 3: Expand the Content[โ€‹](#step-3-expand-the-content "Direct link to Step 3: Expand the Content") With the URL and entities in place, **it's time to let the Content Expander do its job**. With a single click, the Add-on will dynamically generate text that weaves these entities into your content, ready to enhance your page's relevance and search engine visibility. ![image](/assets/images/step5-content-expander-results-a2b7d0d867555e670799752f2bf2e441.png) You can **expand the window to read the text better**. You can decide to add entities or remove them from the list. By clicking on โ€œExpand Contentโ€, **you can regenerate the text**. ![image](/assets/images/step-6-content-expander-results-expanded-0a3a6558513f621b4c7051cd1b8097e0.png) #### Step 4: Copy and Paste Into Your Page[โ€‹](#step-4-copy-and-paste-into-your-page "Direct link to Step 4: Copy and Paste Into Your Page") Once the content is generated, simply **copy and paste the content generated directly into your website**. It's that easy! You'll immediately notice how the expanded content elevates the depth and relevance of your page. And there you have it! With just three straightforward steps, you can significantly **improve your content's performance on search engines**. ### 6\. Get Traffic Data[โ€‹](#6-get-traffic-data "Direct link to 6. Get Traffic Data") To know which search queries you should boost, you can connect the SEO add-on to your Google Search Console and sort the analysis based on your traffic data. Here you will also find a column with the **Opportunity Score**, which suggests which search queries you should target to choose the best ones for your content. You can now **select the relevant entities**. If you have WordPress with WordLift plugin we can import the entities straight into your knowledge graph, otherwise you can copy the JSON-LD from the sidebar into your own CMS or web page. Learn how to use the SEO Add-on for Google Sheets, watching this demo๐Ÿ‘‡ Note The **SEO add-on for Google Sheetsโ„ข is included in the [Business plan](https://wordlift.io/pricing/)**, and only by purchasing this plan you can use the content expander. Alternatively, you can buy the [SEO Add-On for Google Sheets](https://deals.thenextweb.com/sales/lifetime-subscription-wordlift-standard?aid=&utm%5Fcampaign=feed&utm%5Fmedium=RSS&utm%5Fsource=thenextweb) from TNW website (in this case, the content expander is not included). ## Why is it asking for the country to be added?[โ€‹](#why-is-it-asking-for-the-country-to-be-added "Direct link to Why is it asking for the country to be added?") This is because Google SERP is different from country to another and the top ranking results can be different. Itโ€™s important to understand that local versions of Google results look different depending on where you are searching from. ## How can the location affect the analysis?[โ€‹](#how-can-the-location-affect-the-analysis "Direct link to How can the location affect the analysis?") Google's SERP changes depending on the location. Therefore, it is important to enter it before starting the search: only then will the results of the analysis be reliable for the market and audience your company is interested in. --- --- url: https://docs.wordlift.io/woocommerce/introduction/ --- # Introduction | WordLift Developer Documentation # WooCommerce SEO by WordLift [WooCommerce SEO by WordLift](https://woocommerce.com/products/e-commerce-seo-by-wordlift/) has been specifically designed for e-commerce websites running on WordPress with WooCommerce. E-commerce SEO by WordLift adds to your products **state-of-the-art structured data** and **extended product markup** that allows you to get more visibility on Googleโ€™s retail listing. Furthermore, E-commerce SEO by WordLift allows you to create a **Product Graph** out of the relevant connections between products, brands, product categories, and features. This e-commerce specific form of knowledge graph is a powerful tool to enhance the findability of your products. On one side, it helps you **get better results in terms of organic search traffic** and, on the other, it helps you improve the internal linking structure and **refine your product recommendations**. **Overview** WooCommerce SEO by WordLift enhances your Content Management System adding new features and allowing you to: 1. Produce **state-of-the-art structured linked data** 2. Add support for **extended mark-up properties** 3. Introduce **structured data on your category pages** 4. Create a **Product Graph** that improves the rankings 5. Connect **blog posts with products** and **product categories** with the Product Navigator and Product Faceted Search 6. Optimize **image sizes** as required by Google. In this video you will learn how to add schema markup to your WooCommerce store with E-commerce SEO by WordLift. ## Editors[โ€‹](#editors "Direct link to Editors") The WooCommerce extension of WordLift adds **additional fields to the backend of your product page** so that you can better describe your products to semantic search engines like Google and make them more relevant and visible to your audience. Here are the new custom fields that will appear in your WordPress Editor for Products. As you fill these fields, WordLift adds to your products an **extended product markup** that allows you to get more visibility on Googleโ€™s retail listing. ![image](/assets/images/editor-467fa6db3dfff45ad4f3b29f645b54f0.png) Looking more into the details, you will be able to add: 1. Product conditions, choosing from different options ![image](/assets/images/editor-1-0fb77b947949d3a2de720d6f4170fba5.png) 1. Connect the product with the manufacturer (which can be a brand or an organization) ![image](/assets/images/editor-2-3c154c1b3e7b5485448a9a1710e3796c.png) 1. Say the color of the product (itโ€™s a nice to have, if relevant) ![image](/assets/images/editor-3-e415c45f91806a840218ab4a11ee6dc1.png) 1. Select related products or services ![image](/assets/images/editor-4-d50426b4844fce2a552a3898dafe1486.png) 1. Add product codes if relevant in order to unambiguously refer to your products. ![image](/assets/images/editor-5-3bc8089e341dcab1ab7a1eec575e83bc.png) ## Categories[โ€‹](#categories "Direct link to Categories") You can turn category pages into entities by choosing an entity from your vocabulary. In this way, you will enrich category pages adding a layer of structured data. To link a category to an existing entity, just type the name of the entity (a few letters will be enough) and then select it, then click on save. ![image](/assets/images/category-d211090923ff2b9a98291924a258ddfc.gif) ## Widgets[โ€‹](#widgets "Direct link to Widgets") ### Products Navigator[โ€‹](#products-navigator "Direct link to Products Navigator") The **Product Navigator** suggests to your customers a series of products that they might be interested in. To add it to your product or article template just use this shortcode: \[wl\_products\_navigator\] The Product Navigator widget supports the same parameters as the Navigator. ![image](/assets/images/product-navigator-woocommerce-65831bc9c9f692ab25c7688b2ec7e781.png) _The Product Navigator of WordLift for WooCommerce on Oakley.com USA_ ### Product Card[โ€‹](#product-card "Direct link to Product Card") The Product Card allows the customers to see a preview of your product just placing their mouse over the link to the product itself. To activate the link and the Product Card just annotate the Product on your articles and pages. Learn more about [how to anotate your content](/pages/analysis/#wordlift-edit-post-widget) ![image](/assets/images/product-card-woocommerce-e780657dee398d54e094d6801ded7a60.png) _How The Product Card of WordLift looks like on articles and other pages_ Note Read from our blog how to [improve your WooCommerce product pages](https://wordlift.io/blog/en/woocommerce-product-pages/) to increase your sales. --- --- url: https://docs.wordlift.io/wordpress-plugin/ --- # Welcome | WordLift Developer Documentation # Welcome The main documentation for getting started with WordLift is organized in the following sections: * [Getting Started](/wordpress-plugin/getting-started/) * [Installation](/wordpress-plugin/getting-started/#installation) * [Tutorial](/wordpress-plugin/getting-started/#tutorial) * [Overview](/wordpress-plugin/getting-started/#overview) * [Features at a glance](/wordpress-plugin/getting-started/#features-at-a-glance) * [User Manual](/wordpress-plugin/user-manual/) * [Editors](/pages/editors/) * [Sidebar](/pages/sidebar/) * [Publishing](/pages/publishing/) * [Mappings](/pages/mappings/) * [JSON-LD](/pages/jsonld/) * [WooCommerce SEO by WordLift](/woocommerce/introduction/) * [SEO Add-On for Google Sheets](/seo-add-on-google-sheets/introduction/) * [WordLift Looker Studio Connector](/looker-studio-connector/introduction/) * [Product Knowledge Graph Builder](/pages/pkg-builder/) * [Advanced Topics](/wordpress-plugin/advanced-topics/) * [Knowledge Graph](/wordpress-plugin/advanced-topics/#knowledge-graph) * [RDF](/wordpress-plugin/advanced-topics/#rdf) * [Semantic Fingerprint](/wordpress-plugin/advanced-topics/#semantic-fingerprint) * [Dereferencing HTTP URIs](/wordpress-plugin/advanced-topics/#dereferencing-http-uris) * [Semantic Analytics](/wordpress-plugin/advanced-topics/#semantic-analytics) * [Automatic Pagination and Table of Contents](/wordpress-plugin/advanced-topics/#automatic-pagination-and-table-of-contents) * [Image SEO](/wordpress-plugin/advanced-topics/#image-seo) * [Customization and Development](/wordpress-plugin/customization-and-development/) * [APIs](/pages/api/) * [Widgets](/pages/widgets/) * [Support](/wordpress-plugin/support/) * [Where to ask for support](/wordpress-plugin/support/#where-to-ask-for-support) * [Frequently Asked Questions](/wordpress-plugin/support/#frequently-asked-questions) * [Who is WordLift for?](/wordpress-plugin/support/#who-is-wordlift-for) * [Why shall I use WordLift?](/wordpress-plugin/support/#why-shall-i-use-wordlift) * [How does it work?](/wordpress-plugin/support/#how-does-it-work) * [What are the languages supported by WordLift?](/wordpress-plugin/support/#what-are-the-languages-supported-by-wordlift) * [Is there a free trial?](/wordpress-plugin/support/#is-there-a-free-trial) * [Who owns the structured metadata created with WordLift?](/wordpress-plugin/support/#who-owns-the-structured-metadata-created-with-wordlift) * [What happens if I stop using WordLift?](/wordpress-plugin/support/#what-happens-if-i-stop-using-wordlift) * [Is WordLift Secure?](/wordpress-plugin/support/#is-wordlift-secure) * [Why and how should I customize the url of the entity pages created in my vocabulary?](/wordpress-plugin/support/#why-and-how-should-i-customize-the-url-of-the-entity-pages-created-in-my-vocabulary) * [Why is it important to organize my content and publish it as Linked Data?](/wordpress-plugin/support/#why-is-it-important-to-organize-my-content-and-publish-it-as-linked-data) * [Why is WordLift innovative?](/wordpress-plugin/support/#why-is-wordlift-innovative) * [What is content enrichment?](/wordpress-plugin/support/#what-is-content-enrichment) * [What entity types are supported and how they map to Schema.org?](/wordpress-plugin/support/#what-entity-types-are-supported-and-how-they-map-to-schema-org) * [When should I create a new entity?](/wordpress-plugin/support/#when-should-i-create-a-new-entity) * [What are the guidelines for creating new entities to annotate a blog post or a page?](/wordpress-plugin/support/#what-are-the-guidelines-for-creating-new-entities-to-annotate-a-blog-post-or-a-page) * [How can I search for the equivalent entity in the web of data?](/wordpress-plugin/support/#how-can-i-search-for-the-equivalent-entity-in-the-web-of-data) * [Can I prevent the analysis to run?](/wordpress-plugin/support/#can-i-prevent-the-analysis-to-run) * [Can I prevent WordLift from loading Wikimedia images?](/wordpress-plugin/support/#can-i-prevent-wordlift-from-loading-wikimedia-images) * [I have already published a JSON-LD on the page. How can I integrate it with the JSON-LD that WordLift creates?](/wordpress-plugin/support/#i-have-already-published-a-json-ld-on-the-page-how-can-i-integrate-it-with-the-json-ld-that-wordlift-creates) * [What factors determine Wordliftโ€™s rating of an entity?](/wordpress-plugin/support/#what-factors-determine-wordlift-s-rating-of-an-entity) * [I have a vocabulary term appearing several times in a page, should I link all of the occurrences to the term, or just once per page?](/wordpress-plugin/support/#i-have-a-vocabulary-term-appearing-several-times-in-a-page-should-i-link-all-of-the-occurrences-to-the-term-or-just-once-per-page) * [When should I link one entity to another?](/wordpress-plugin/support/#when-should-i-link-one-entity-to-another) * [How can I enable or disable links to entities?](/wordpress-plugin/support/#how-can-i-enable-or-disable-links-to-entities) * [Why do I get 404 error on pages linked by WordLift?](/wordpress-plugin/support/#why-do-i-get-404-error-on-pages-linked-by-wordlift) * [What are the datasets WordLift uses for named entity recognition?](/wordpress-plugin/support/#what-are-the-datasets-wordlift-uses-for-named-entity-recognition) * [How can I prevent WordLift from creating new entity pages?](/wordpress-plugin/support/#how-can-i-prevent-wordlift-from-creating-new-entity-pages) * [What is a triple?](/wordpress-plugin/support/#what-is-a-triple) * [Are there any integrations with Neo4j?](/wordpress-plugin/support/#are-there-any-integrations-with-neo4j) * [Do I need to be Administrator to configure it?](/wordpress-plugin/support/#do-i-need-to-be-administrator-to-configure-it) * [Which Schema Types does WordLift support?](/wordpress-plugin/support/#which-schema-types-does-wordlift-support) * [What is the advantage of using a custom domain for publishing the knowledge graph?](/wordpress-plugin/support/#what-is-the-advantage-of-using-a-custom-domain-for-publishing-the-knowledge-graph) * [How can I change the JSON-LD @type from Article to NewsArticle in WordLift?](/wordpress-plugin/support/#how-can-i-change-the-json-ld-type-from-article-to-newsarticle-in-wordlift) --- --- url: https://docs.wordlift.io/wordpress-plugin/advanced-topics/ --- # Advanced Topics | WordLift Developer Documentation # Advanced Topics ## Knowledge Graph[โ€‹](#knowledge-graph "Direct link to Knowledge Graph") A **knowledge graph** is a network of all kind of entities that are relevant to a specific domain or to an organization. They are not limited to abstract concepts and relations (as with a vocabulary) but also contain the instances of the things they describe. Using WordLift as new entities are added in the vocabulary, properties for these entities are populated using the_ease-to-use_ WordPress editing interfaces and new posts are enriched with these entities a knowledge graph is created and published as [RDF](#rdf) graph in the cloud. ### Linked Data[โ€‹](#linked-data "Direct link to Linked Data") **Linked Open Data** is [Linked Data](http://en.wikipedia.org/wiki/Linked%5Fdata) that is made available as **open content**. Large linked open datasets (or [Knowledge Graph](#knowledge-graph)) include DBpedia and Freebase. ### Reconciliation[โ€‹](#reconciliation "Direct link to Reconciliation") **Reconciling** entities we store in our own [vocabulary](#system-message-1) with entities available elsewhere provides computers with an unambiguous way to identify the things we're talking about. _\[Apple\]_ in a specific article might refer to a rather typical British psychedelic-pop band rather than to a World famous computer company or the forbidden fruit. This becomes important when third party applications like search engines need to provide valuable content for users searching for articles on _\[Apple\]_ the psychedelic-pop band and not the other two _Apples_. [Reconciling](/pages/key-concepts/#reconciliation) entities means providing computers with unambiguous identifications of the _entities_ we talk about. ## RDF[โ€‹](#rdf "Direct link to RDF") **RDF** stands for Resource Description Framework. RDF is a W3C standard language for representing information. ## Semantic Fingerprint[โ€‹](#semantic-fingerprint "Direct link to Semantic Fingerprint") The result of semantic annotation of a text is a _unique linked identifier_ added to the HTML code. This identifier is known as **semantic fingerprint**. Annotating contents, also known as _semantic enrichment_ or _lifting_, creates metadata that computers can understand. Just like in forensic science human fingerprints are used to identify humans appearing on a crime scene, in computer science we use semantic fingerprints to tell computers what [entities](/pages/key-concepts/#entity) we're referring to. WordLift re-uses these semantic fingerprints for adding Schema.org markup and for re-purposing contents using [Widgets](/pages/key-concepts/#widget). ## Dereferencing HTTP URIs[โ€‹](#dereferencing-http-uris "Direct link to Dereferencing HTTP URIs") **URI Dereferencing** is the process of looking up a URI on the Web in order to get information about the referenced resource. WordLift uses dereferencing to obtain a snapshot of the properties describing a [named entity](/pages/key-concepts/#entity). ## Semantic Analytics with WordLift Looker Studio Connector[โ€‹](#semantic-analytics-with-wordlift-looker-studio-connector "Direct link to Semantic Analytics with WordLift Looker Studio Connector") ![Semantic Analytics Connector 1](/assets/images/semantics-analytics-connector-1-22f5a47008792ee3932168e993d4261c.png) WordLift's Looker Studio Connector offers a powerful way to create semantic SEO reports. It allows you to blend data from various sources like Google Analytics, Google Search Console, and your own proprietary databases to create informative dashboards and reports. Below is how you can leverage it for semantic analytics: #### What is Google Looker Studio?[โ€‹](#what-is-google-looker-studio "Direct link to What is Google Looker Studio?") [Google Looker Studio](https://support.google.com/datastudio/answer/6283323?hl=en) is a free data visualization tool that allows you to collect data in easy-to-read, shareable, and fully customizable dashboards and reports. #### How to Create Semantic SEO Reports[โ€‹](#how-to-create-semantic-seo-reports "Direct link to How to Create Semantic SEO Reports") 1. **Structured Data**: Adding structured data to your website enriches your content, allowing search engines to better understand it. This can lead to better rankings and more organic traffic. 2. **Entities and Concepts**: Google is shifting its focus from just keywords to concepts and entities. With WordLift, you can work with entities on your website to improve your semantic SEO strategy. ![Semantic Analytics Connector 2](/assets/images/semantics-analytics-connector-2-160a4b0be6aef685f0dec0635d8a6efb.png) 1. **WordLift Looker Studio Connector**: Use the [Looker Studio Connector](https://docs.wordlift.io/looker-studio-connector/introduction/) to blend data from your Knowledge Graph with other analytics platforms like Google Search Console. * **Getting Started**: Search for WordLift on the [Google Looker Studio connectors page](https://datastudio.google.com/datasources/create?connectorId=AKfycbwxx5Jf1KKHeKItCkwzJsrW2iOhodliNcud1vk5HKimj1lUQLuVfcAD4K9oSFmqW8v-). Follow the instructions to connect. * **Data Blending**: Blend data from the Knowledge Graph and Google Search Console to create comprehensive reports. #### Benefits[โ€‹](#benefits "Direct link to Benefits") * **Single Source of Truth**: Create a unified dashboard for all your SEO and business performance metrics. * **Audience Insights**: Gain meaningful data about your content and audience. * **SEO Reporting**: Take your SEO reporting to the next level with insights into keyword rankings, traffic, and more. For more details, you can read the [WordLift Looker Studio Connector blog post](https://wordlift.io/blog/en/wordlift-looker-studio-connector/). ## Automatic Pagination and Table of Contents[โ€‹](#automatic-pagination-and-table-of-contents "Direct link to Automatic Pagination and Table of Contents") **Pagination** allows website editors to split long content into different pages. This technique really belongs to the ABC of web design and information architecture, but โ€” still โ€” **pagination SEO best practices are debated**. Therefore, dealing with it is not that easy as it could seem. Want to learn more about it? Head over to our blog post that covers the application of an [SEO friendly pagination](https://wordlift.io/blog/en/pagination-seo-wordpress-plugin/) . ## Image SEO[โ€‹](#image-seo "Direct link to Image SEO") Images greatly contribute to a websiteโ€™s SEO and improve the overall user experience. Fully optimizing images is about helping users, and search engines, better understand the content of an article. Head over to our blog that tackles [the optimization of images using machine learning](https://wordlift.io/blog/en/image-seo-using-ai/) --- --- url: https://docs.wordlift.io/wordpress-plugin/customization-and-development/ --- # Customization and Development | WordLift Developer Documentation # Customization and Development * [APIs](/pages/api/) * [Widgets](/pages/widgets/) * [Context Cards](/pages/widgets/#context-cards) * [Faceted Search](/pages/widgets/#faceted-search) * [Navigator](/pages/widgets/#navigator) * [Examples](/pages/widgets/#examples) --- --- url: https://docs.wordlift.io/wordpress-plugin/getting-started/ --- # Getting Started | WordLift Developer Documentation # Getting Started Note We **suggest** our users to make a full back-up of their website data before installing WordLift. ## Installation[โ€‹](#installation "Direct link to Installation") Note We **suggest** our users to make a full back-up of their website data before installing WordLift. ### Requirements[โ€‹](#requirements "Direct link to Requirements") WordLift is currently available on [WordPress](https://wordpress.org/) 5.3 and later. ### Installation[โ€‹](#installation-1 "Direct link to Installation") You can install **WordLift** from the [WordPress plugin directory](https://wordpress.org/plugins/wordlift/) or manually by uploading the files to your server. #### Automatic Installation[โ€‹](#automatic-installation "Direct link to Automatic Installation") Automatic installation is the easiest way to install WordLift. WordPress handles the file transfers itself and you donโ€™t need to leave your web browser. To do an automatic install of WordLift, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New. In the search field type โ€œWordLiftโ€ and click Search Plugins. Once youโ€™ve found our plugin you can view details about it such as the description, the features, and user reviews. Most importantly of course, you can install it by simply clicking โ€œInstall Nowโ€. #### Manual Installation[โ€‹](#manual-installation "Direct link to Manual Installation") The manual installation method involves _downloading our plugin_ and _uploading it to your webserver_ using your favourite FTP application. Download the provided zip file to the `wp-content/plugins` directory of your [WordPress](https://wordpress.org/) installation. Unzip the file, from the command line: ``` unzip wordlift.zip ``` More information on the manual installation are available on the [WordPress Codex](http://codex.wordpress.org/Managing%5FPlugins#Manual%5FPlugin%5FInstallation) website. ### Activation[โ€‹](#activation "Direct link to Activation") To activate the plugin you need a [WordLift key](/pages/key-concepts/#wordlift-key). You receive this key after [purchasing a subscription plan](https://wordlift.io/pricing/) the [WordLift](https://wordlift.io/) website. An automatic email will be then sent to you containing your key and account information. You can use the setup Wizard upon startup to activate your subscription. ![image](/assets/images/wordlift-setup-wizard-e55e0b5195f0c788b3ca2c203c25f649.gif) When doing so you are able to configure the [key](/pages/key-concepts/#wordlift-key), the entity base path (the URL pattern of the WordLift internal vocabulary), the languange used on the website and the publisher of the website. Alternatively, from the WordPress administration menu, click on _Plugins_ / _Installed Plugins_. Then click on _Settings_ on the WordLift plugin. ### Configuration[โ€‹](#configuration "Direct link to Configuration") The _Settings_ are also accessible by hovering on the WordLift logo on the WordPress dashboard menu; from there a menu will open. Note The _Settings_ are different based on the type of license. [Find out more about our plans](https://wordlift.io/pricing). Click on _Settings_ to open the settings screen: ![image](/assets/images/wordlift-settings-screen-7ac7ab9c9cb2e4f036c69b188b195c1a.png) From _Settings_ screen, as from the Wizard, you can configure: **WordLift Key** The [WordLift Key](/pages/key-concepts/#wordlift-key), required to activate the plug-in that can be purchased from the [website](https://wordlift.io/pricing/). **Entity Base Path** When selecting or creating new entities with WordLift, you are actively building your internal vocabulary, adding pages to your website. When you first built your website, you chose a pattern for the url of the pages you were going to add, such as [www.domain.com/name-of-the-page](http://www.domain.com/name-of-the-page) or [www.domain.com/seo-keyword/name-of-the-page](http://www.domain.com/seo-keyword/name-of-the-page). The same applies with all the pages created with WordLift inside your vocabulary. By default WordLift will add the word โ€œvocabularyโ€ between your root domain and the name of the page: [www.domain.com/vocabulary/name-of-the-entity-page](http://www.domain.com/vocabulary/name-of-the-entity-page). You can delete the word vocabulary if you want the new entity page to be inside your root domain folder: [www.domain.com/name-of-the-entity-page](http://www.domain.com/name-of-the-entity-page). Or you can replace vocabulary with another keyword (or keywords) of your choice, for SEO or branding reason: [www.domain.com/seo-keyword/name-of-the-entity-page](http://www.domain.com/seo-keyword/name-of-the-entity-page). **Country** This is the country that you are targeting for SEO. WordLift uses the language configured on the WordPress settings as the primary language. **Website Alternate Name** Google Search uses several sources from a site's homepage to determine site names automatically. WordLift will use the website's name (configured via WordPress) as the default name. Suppose you want to provide an alternate version of your site name (for example, an acronym or shorter name). In that case, you can do this by configuring the alternate name property here. WordLift will use otherwise, by default, the tagline of your website. Read more about [WebSite Structured Data](https://wordlift.io/blog/en/structured-data-homepage/). **Publisher** The person or the organization publishing the content of the website. This is also an entity that can be created directly from this setting screen. This information is used to enrich the metadata on your website. **Link by Default** You can choose if you want WordLift to add links to the entities you create by default automatically. Read more about [Link by Default](https://wordlift.io/blog/en/link-no-link-question/). **Send Diagnostic Data** You can choose if you want to send diagnostic data to WordLift. This data is used to improve the plugin and to provide support. Note For more information on the multilingual support of WordLift [read here](/pages/faq/#what-are-the-languages-supported-by-wordlift). ### Tutorial[โ€‹](#tutorial "Direct link to Tutorial") Learn the how to get started with WordLift with these simple video demo's. #### What is WordLift?[โ€‹](#what-is-wordlift "Direct link to What is WordLift?") [WordLift](https://wordlift.io/) helps your website speak Google's native language by converting your content into a format easily understood by search engines: **structured data**. Leveraging Natural Language Processing and AI, **WordLift analyzes your content and identifies the most relevant topics for your business**, organizing them into **entities**. Each entity describes an idea, concept, person, or place you're talking about on your website. Entities are saved in a **vocabulary**. But WordLift goes deeper than that. It relates the entities in your vocabulary and turns the information into linked data, creating a [Knowledge Graph](https://wordlift.io/entity/knowledge-graph/). Imagine the Knowledge Graph as **the infrastructure behind your content** that effectively helps **Google and search engines understand and index your content**. As a result, **users** searching for products, services, or businesses like yours **will find more relevant information** that meets their needs. The result is the strengthening of the **authority and reliability of your website**, the growth of **internal link building**, which helps Google and search engines understand the relationships between pages and content and their value, and **increases organic traffic and the time users spend on your website**. #### How does WordLift work?[โ€‹](#how-does-wordlift-work "Direct link to How does WordLift work?") With WordLift, you can **add structured data to your website**. This way, Google and the search engines know what you're talking about. Once you have installed WordLift and started the plug-in, the AI will analyze the text for each piece of content on your website and **suggest which concepts are relevant for your business**. You can **add schema markup** to these concepts, and **they will represent entities in your Knowledge Graph.** The entities will be part of [your vocabulary](https://wordlift.io/blog/en/use-vocabulary). They can be linked within your articles, enriching your content and creating a dynamic environment where users can move around and find information relevant to their search intent. Using WordLift is simple. To take the first steps with us, **watch the video here**. #### How can you create an entity with WordLift?[โ€‹](#how-can-you-create-an-entity-with-wordlift "Direct link to How can you create an entity with WordLift?") **Entities** in WordLift are web pages that describe the "things" you talk about on your website. **All entities are organized into a vocabulary within WordPress**. Each entity is a web page and corresponds to a data point that WordLift creates in the data network. Creating an entity with WordLift is simple. To learn how to do it and start building your vocabulary, **watch the video here**. **Entities help organize the content that you're writing. \*\*As you annotate an article with an entity, \*\*WordLift creates a relationship** between the article and entity so that a **computer can better understand it** and **you can build your Knowledge Graph**. ## Overview[โ€‹](#overview "Direct link to Overview") **WordLift** brings the power of _Artificial Intelligence_ to web publishers around the World. **WordLift** is a plugin for WordPress designed to help you create, structure and visualize your content and to publish it as [Linked Open Data](/pages/key-concepts/#linked-open-data) following **Tim Berners-Lee**'s [Linked Data Principles](http://www.w3.org/DesignIssues/LinkedData.html). Linked Data is the language machines can read and understand in order to seamlessly analyze content, index it and fetch answers back to users. Linked Data technologies allow software agents and search crawlers find, share and integrate information across different resources. **WordLift** supports bloggers and site owners building _beautifully structured web sites_ and reach their maximum potential audiences: * It understands the text you write and structures it to allow you to create effective navigation flows and make sure commercial search engines like Google, Bing, Yandex and Yahoo! receive the structured data they need to properly index and rank your content. * It enriches your blog posts and pages with facts, links and images, and organizes them in relationship to each other, to internal vocabularies, and to other openly available data sources like DBpedia and Wikidata, increasing your readersโ€™ engagement. Note **WordLift** is available to all for a monthly fee. Find out more and get your activation key directly [on our website](https://wordlift.io). ## Features at a glance[โ€‹](#features-at-a-glance "Direct link to Features at a glance") **WordLift** is a **semantic editor** for WordPress to help writing, organizing, tagging and sharing content online.**WordLift** is designed for bloggers, journalists and content creators to inspire and make writing more productive. **WordLift** adds [semantic annotation](/pages/key-concepts/#semantic-fingerprint) and combines information publicly available as [linked open data](/pages/key-concepts/#linked-open-data) to support the editorial workflow by suggesting relevant information, images and links. ### WordLift brings to content editors[โ€‹](#wordlift-brings-to-content-editors "Direct link to WordLift brings to content editors") * support for **self-organising** (or structuring) **content** using publicly (or privately) available [knowledge graphs](/pages/key-concepts/#knowledge-graph) ([linked open data](/pages/key-concepts/#linked-open-data)) * an easy way to **build your own dataset** made of _web content_, _semantic annotations_ and a _custom vocabulary_ * support for creating web content using **contextually relevant fact-based information** * valued and **free to use photos and illustrations** from the Commons community ranging from maps to astronomical imagery to photographs, artworks and more * insightful **visualisations to engage the reader** * new means to drive business growth with **meaningful content discovery paths** * content tagging for **better SEO** ### Websites built with WordLift bring to readers[โ€‹](#websites-built-with-wordlift-bring-to-readers "Direct link to Websites built with WordLift bring to readers") * multiple means of searching and accessing **editorial content around a specific topic** * **contextual information** helping readers with limited domain understanding * an **intuitive overview of all content being written** _on the site_ and _around a specific topic_ or graph of topics * meaningful **content recommendations** You can now continue to the [Key Concepts](/pages/key-concepts/) page or head directly to the [Analysis](/pages/analysis/). --- --- url: https://docs.wordlift.io/wordpress-plugin/support/ --- # Support | WordLift Developer Documentation # Support ## Where to ask for support[โ€‹](#where-to-ask-for-support "Direct link to Where to ask for support") Our team is always around, almost 24/7 and you can reach us by: * [Email](https://wordlift.io/contact-us/) * [Stack Overflow](https://stackoverflow.com/questions/tagged/wordlift) * [Bug tracker](https://github.com/insideout10/wordlift-plugin/issues) # Frequently Asked Questions # Who is WordLift for? **WordLift** is for all _bloggers_, _journalists_, and _content marketers_ publishing and fighting for readersโ€™ attention on the web.**WordLift** democratizes the field, bringing to the hands of all web content creators the technology that web publisher giants such as _Google_, _Facebook_ and the _BBC_ are using to organize and monetize their content.**WordLift** helps you create richer and more engaging content, optimizes it for all search engines and efficiently organizes your content creation process, allowing you to reach and speak directly to your tribe. ## Why shall I use WordLift?[โ€‹](#why-shall-i-use-wordlift "Direct link to Why shall I use WordLift?") Organizing web content around an internal vocabulary rather than traditional web pages helps both users and machines finding and accessing it, improving navigation, content re-use, content repurposing, and search engine rankings.**WordLift** **organizes** content, reducing the complexity of content management and content marketing operations, letting bloggers and site owners focus on stories and communities.**WordLift** **enriches** your content with _contextual information_, _links_, and _media_, from custom vocabularies and/or the wealth of open data available on the web, bringing your user experience to a new level of engagement.**WordLift** **connects** content with cross-media _discovery_ and _recommendations_ widgets, increasing content quality, exposure, trustworthiness and readership engagement.**WordLift** **optimizes** content, complementing the offer of plug-ins such as _SEO Ultimate +_ or _Yoast_, automatically adding [schema markup](https://wordlift.io/blog/en/entity/schema-org/) to your text, allowing all search engines to properly index your pages and deliver more traffic to your site. ## How does it work?[โ€‹](#how-does-it-work "Direct link to How does it work?") Note To know more about how **WordLift** works, please [watch the step by step video tutorials](https://wordlift.io/how-it-works/) on our [website](https://wordlift.io). **WordLift** works in subsequent stages. 1. The first step provides a **full text analysis** and suggests concepts and relationships found in open vocabularies (such as _DBpedia_, _Wikidata_, _GeoNames_, etc) to help writers **classify** and **enrich** their content and structure it for search engines like Google, according to schema.org vocabulary. 2. Writers can then create new entities, to complement the ones suggested automatically, and to be published as part of a **proprietary vocabulary**, acting both as a **reference** and a **search magnet** for their readers, according to the editorial plans. 3. **WordLift** also assists writers suggesting **links**, **media** and providing a set of powerful **visualization widgets** to connect and recommend alternative content, to boost readersโ€™ engagement. 4. Finally **WordLift** provides means to record all these relationships in a graph database allowing search queries like _โ€œfind all contents related to concept\_y and relevant for target\_zโ€_. ## What are the languages supported by WordLift?[โ€‹](#what-are-the-languages-supported-by-wordlift "Direct link to What are the languages supported by WordLift?") WordLift currently supports 32 languages: Chinese, Danish, German, English, French, Italian, Dutch, Russian, Spanish, Portuguese, Swedish, Turkish, Albanian, Belarusian, Bulgarian, Catalan, Croatian, Czech, Estonian, Finnish, Hungarian, Icelandic, Indonesian, Latvian, Lithuanian, Norwegian, Polish, Romanian, Serbian, Slovak, Slovenian, Ukrainian. Note WordLift supports one language at the time. The main language of the website can be configured from the WordLift settings. Review the [configuration settings](/wordpress-plugin/getting-started/#configuration) for more information. ## Is there a free trial?[โ€‹](#is-there-a-free-trial "Direct link to Is there a free trial?") Yes! All of our subscriptions come with a **14-day free trial**. If after two weeks you are not happy with WordLift, [contact us](mailto:support@wordlift.io) and we will cancel your subscription, no questions asked. In addition, with the purchase of our 12-month packages, we offer 20% discount. [Check it out](https://wordlift.io/pricing)! ## Who owns the structured metadata created with WordLift?[โ€‹](#who-owns-the-structured-metadata-created-with-wordlift "Direct link to Who owns the structured metadata created with WordLift?") **You do!** We believe content creators should retain the commercial value of their content and all the data they create and exploit it through **new business models** based on **content syndication**, **data-as-a-service** and a stronger **relationship with their audience**. You can open your datasets to the public, attaching to it a free or a commercial licence. Otherwise, use your data to feed **chat bots** such as Facebook Messenger or Telegram, providing live feed updates on your activity and/or automatic customer service in real time. ## What happens if I stop using WordLift?[โ€‹](#what-happens-if-i-stop-using-wordlift "Direct link to What happens if I stop using WordLift?") 1. If you stop paying for your subscription, but keep the plugin on your site, all the entities, metadata and pages you created with wordlift will still be available on your site - you won't be able to update it any longer, but they will still work just fine as they were at the moment you removed the key. The data youโ€™ve created belongs to you and you can always request to us a data dump that is available in various machine-readable formats. 2. if you deactivate the plugin instead, the vocabulary (metadata, entity and pages) will disappear from your dashboard, but everything you created is stored in your website Database in WordPress, and you will be able to download it, transfer it or re-activate it again anytime from the plugin menu. 3. Turning off WordLift on our side, it would be like turning off all the keys and un-publish all the linked data youโ€™ve created, not the plug-in itself, so it will be like ##1 - you could get the data back from us and re-publish it as [linked data](https://wordlift.io/blog/en/entity/linked-data/) on your own infrastructure. 4. WordLift's technology is entirely open source: it takes development skills, infrastructure and some wisdom to nicely bring all the pieces together without our support. 5. Your vocabulary (article metadata and entities) are published as [linked data](/pages/key-concepts/#linked-open-data) and you can always request a data dump in any of the following formats: RDF/XML, Turtle, N3, JSON-LD. ## Is WordLift Secure?[โ€‹](#is-wordlift-secure "Direct link to Is WordLift Secure?") Security has been a consideration from day one. We have worked for many years in high-security environments such as parliaments and telco operators and we leverage on all of our experience to protect the data of our users. #### So, what are some of the ways we do this?[โ€‹](#so-what-are-some-of-the-ways-we-do-this "Direct link to So, what are some of the ways we do this?") * WordLift plugin and front end only use [SSL](http://info.ssl.com/article.aspx?id=10241). * Your data from the WordLift store is in a dedicated database, with access granted only to the WordLift store web site account originating from the WordLift store network address. * Keys for accessing your account page are transmitted securely over SSL and encrypted from the moment we receive them. * Any data transmitted between WordLift and our server farm is done over SSL. * Your data is **not shared with or handled by** any other services or companies, with the exception of the data published as open data. * WordLift itself is a small team, which limits the number of people with any access to your data. * There are regular security reviews of all WordLift servers and components. * You can ask us to delete your account information at any time. Contact us by by [email](mailto:hello-gdpr@wordlift.io), or by [making a request here](https://wordlift.gdprform.io/). If you have any other questions, concerns, or want to clarify anything listed on this page, please let us know. ## Why and how should I customize the url of the entity pages created in my vocabulary?[โ€‹](#why-and-how-should-i-customize-the-url-of-the-entity-pages-created-in-my-vocabulary "Direct link to Why and how should I customize the url of the entity pages created in my vocabulary?") When selecting or creating new entities with WordLift, you are actively [building your internal vocabulary](https://wordlift.io/8-rules-create-vocabulary-wordpress-website/), adding pages to your website. When you first built your website, you chose a pattern for the url of the pages you were going to add, such as [www.domain.com/name-of-the-page](http://www.domain.com/name-of-the-page) or [www.domain.com/seo-keyword/name-of-the-page](http://www.domain.com/seo-keyword/name-of-the-page). The same applies with all the pages created with WordLift inside your vocabulary. 1. By default WordLift will add the word โ€œvocabularyโ€ between your root domain and the name of the page: [www.domain.com/vocabulary/name-of-the-entity-page](http://www.domain.com/vocabulary/name-of-the-entity-page). 2. You can delete the word vocabulary if you want the new entity page to be inside your root domain folder: [www.domain.com/name-of-the-entity-page](http://www.domain.com/name-of-the-entity-page). 3. Or you can replace vocabulary with another keyword (or keywords) of your choice, for SEO or branding reason: [www.domain.com/seo-keyword/name-of-the-entity-page](http://www.domain.com/seo-keyword/name-of-the-entity-page). ## Why is it important to organize my content and publish it as Linked Data?[โ€‹](#why-is-it-important-to-organize-my-content-and-publish-it-as-linked-data "Direct link to Why is it important to organize my content and publish it as Linked Data?") Organizing web content around concepts rather than traditional web pages helps both users and machines finding and accessing it, improves **navigation**, **content re-use**, **content repurposing** and **search engine rankings**.**Enriching content** with _contextual information_, _links_ and _media_, from custom vocabularies and/or the wealth of **open data** available on the web, brings the user experience to a new level of engagement. Structuring content with **richer metadata** and publishing it as [linked data](https://wordlift.io/blog/en/entity/linked-data/) makes it **discoverable and searchable**, providing new ways of reaching targets. ## Why is WordLift innovative?[โ€‹](#why-is-wordlift-innovative "Direct link to Why is WordLift innovative?") **WordLift** is **first-to-market** following a **โ€œcontent organizationโ€ approach** which allows the classification and direct exploitation of proprietary content and structured metadata.**Wordlift** helps publishers create their **knowledge graph**, _exploit it_ and _monetize it_. Finally **WordLift** complements the offer of plug-ins such as _SEO Ultimate +_ or _Yoast_ automatically adding [schema markup](https://wordlift.io/blog/en/entity/schema-org/) to content, allowing search engines to properly index pages, increasing traffic from organic searches. ## What is content enrichment?[โ€‹](#what-is-content-enrichment "Direct link to What is content enrichment?") Content enrichment is a processes used to refine and improve textual content by embedding structured data (_metadata_) on web pages. This _metadata_ is made available to search engines and other data consumers. ## What entity types are supported and how they map to Schema.org?[โ€‹](#what-entity-types-are-supported-and-how-they-map-to-schemaorg "Direct link to What entity types are supported and how they map to Schema.org?") _Thing_, _Person_, _Place_, _Event_, _Organization_, _LocalBusiness_, _Creative Work_ and _Recipe_ are the supported types. Review the [Edit Entity page](/pages/edit-entity/##entity-types-and-properties-table) for more information. ## When should I create a new entity?[โ€‹](#when-should-i-create-a-new-entity "Direct link to When should I create a new entity?") You should create a new entity when this is directly relevant to the content you're writing and it doesn't already exist. When an entity is properly recognised by WordLift you shall edit this entity rather then creating a new one. You can add as many entities as you like. ## What are the guidelines for creating new entities to annotate a blog post or a page?[โ€‹](#what-are-the-guidelines-for-creating-new-entities-to-annotate-a-blog-post-or-a-page "Direct link to What are the guidelines for creating new entities to annotate a blog post or a page?") A basic guideline for adding a new entity is: > "_people should create entities that a librarian would plausibly use to classify the content as if it was a book._" The purpose of using WordLift is to (1) categorize your content, (2) help people find content of interest to them, and (3) help WordLift describe your contents in _machine-readable_ format so that other computers can re-use it. In some cases key concepts that are important for (1), (2) and (3) are not automatically detected by WordLift and need to be taught. To teach WordLift new concepts a new entity shall be created. Note When entities already exist on a website in the form of posts or pages we shall always avoid creating a new entity and instead turn these posts or pages into entities. [Here is how](https://wordlift.io/blog/en/wordlift-3-15/). People should add entities that are accurate and directly relevant to the content they're writing. Excessively broad entities should not be added to content. Content should not be overloaded with entities to increase its distribution online. As a general guideline, 6โ€“8 entities should be adequate for most blog posts (based on the lenght of the article). If an article has too many entities it may be that some of the entities could be replaced with a single broader entity. All entities shall be matched to the proper language of the content. There are two important articles to read on this topic: 1. [8 Rules To Create A Vocabulary For Your WordPress Website](https://wordlift.io/blog/en/8-rules-create-vocabulary-wordpress-website/) 2. [Entity Based SEO: How To Optimize Your Entity Vocabulary](https://wordlift.io/blog/en/use-vocabulary/) ## How can I search for the equivalent entity in the web of data?[โ€‹](#how-can-i-search-for-the-equivalent-entity-in-the-web-of-data "Direct link to How can I search for the equivalent entity in the web of data?") A published datasets like the knowledge graph that users create with WordLift shall link to other existing datasets using the OWL `owl:sameAs` property. This property creates an equivalence class between two nodes of an RDF graph. [Tim Berners Lee](https://wordlift.io/blog/en/entity/tim-berners-lee/) in his "Linked Data" note of 2006 outlined 4 principles of [linked data](https://wordlift.io/blog/en/entity/linked-data/): 1. Use URIs to name (identify) things. 2. Use HTTP URIs so that these things can be looked up (interpreted, "dereferenced"). 3. Provide useful information about what a name identifies when it's looked up, using open standards such as RDF, SPARQL, etc. 4. Refer to other things using their HTTP URI-based names when publishing data on the Web. Specifically the **4th linked data principle** is meant to ensure a Web of data and not just a set of unconnected data islands. WordLift during the analysis automatically interlinks all detected entities with several datasets (DBpedia, Yago, Freebase etc.) but what if we are creating a new entity from scratch? How can we find an equivalent resource in the Web of linked data? There are basically four ways of doing it. The goal is to provide an information that can be understood by semantic search engines like Google, Bing and Yandex: 1. **use WordLift sameAs search box**. WordLift will look for entities in Wikidata, DBpedia and on the datasets configured behind the WordLift key for the equivalent entity. This feature has been introduced with WordLift 3.15 [learn more about this feature here](https://wordlift.io/blog/en/wordlift-3-15/). 2. **ask Google Search** a query by adding "site:dbpedia.org" to the name of the entity (ie "_site:dbpedia.org apache marmotta_"). Google will provide a list of results, chose the URL that start with _dbpedia.org/page/_ (ie _dbpedia.org/page/Apache\_Marmotta_), replace `/page/` with `/resource/` and you will have the `owl:sameAs` link to be added to your entity; 3. **look for the entity in Wikidata** by using the search bar on the [wikidata](https://wikidata.org) website. The search bar is on the top right corner. The URL for the equivalent entity of Apache Marmotta in Wikidata is __; 4. **use the Google Knowledge Graph Search API** (here is [a link](https://developers.google.com/knowledge-graph/) to the documentation by Google). You will need an API Key from Google. Using your personal API key you will be able to search the Google Knowledge Graph with simple HTTP request. Here is an example `https://kgsearch.googleapis.com/v1/entities:search?query=andrea+volpini&key=API_KEY&limit=1&indent=True` (simply replace `API_KEY` with your personal API Key). The API responds with a [JSON LD](https://wordlift.io/blog/en/entity/json-ld/); look for the `machine id` that is located under `itemListElement` \> `result` \> `@id`. This should be something like `kg:/m/0djtw2h` now take the id and rewrite it by adding in front __ than replace `/m/` with `/m.` and you should have something like: __. Note While Freebase no longer exists the `machine id` remains valid. We prefer to have such links in the `owl:sameAs` property of entities created with WordLift as these links point to RDF resources. As a matter of fact DBpedia, to interlink with Freebase, still uses these type of links rather than just the `machine id`. ## Can I prevent the analysis to run?[โ€‹](#can-i-prevent-the-analysis-to-run "Direct link to Can I prevent the analysis to run?") Yes. You can switch WordLift's analysis ON and OFF by clicking on the _open|close_ arrow on the top right corner of the WordLift's Edit widget. See the _.gif_ below: ![image](/assets/images/wl_toggle_3-13-3-36890b0a7d1d1060f91a5c356c28386b.gif) What factors determine Wordlift's rating of an entity? ## Can I prevent WordLift from loading Wikimedia images?[โ€‹](#can-i-prevent-wordlift-from-loading-wikimedia-images "Direct link to Can I prevent WordLift from loading Wikimedia images?") Yes. You can prevent WordLift from loading images that come from Wikipedia. In your `wp-config.php`, add the following line:`define( 'WL_EXCLUDE_IMAGES_REGEX', 'https?://[^.]*\.wikimedia\.org/.*' );` **before** the line `/* That's all, stop editing! Happy blogging. */` ## I have already published a JSON-LD on the page. How can I integrate it with the JSON-LD that WordLift creates?[โ€‹](#i-have-already-published-a-json-ld-on-the-page-how-can-i-integrate-it-with-the-json-ld-that-wordlift-creates "Direct link to I have already published a JSON-LD on the page. How can I integrate it with the JSON-LD that WordLift creates?") We provide several options to help you integrate WordLift with the existing markup: 1. Completely disable WordLiftโ€™s JSON-LD by adding `add_filter( 'wl_jsonld_enabled', '__return_false' );` in your theme. 2. Edit WordLiftโ€™s JSON-LD by using WordPress filters (this requires PHP development skills), see [here on Stack Overflow](https://stackoverflow.com/questions/52925820/how-do-i-change-the-json-ld-type-from-article-to-newsarticle-in-wordlift). 3. Use [WordLiftโ€™s Mappings](https://wordlift.io/academy-entries/wordlift-mappings-tutorial/) to customize the JSON-LD using the UI provided by the plugin in _Dashboard > WordLift > Mappings_ 4. Augment WordLiftโ€™s JSON-LD by adding your own custom JSON-LD matching the same @id (in this case Google will merge the data from WordLiftโ€™s JSON-LD and your JSON-LD) ## What factors determine Wordlift's rating of an entity?[โ€‹](#what-factors-determine-wordlifts-rating-of-an-entity "Direct link to What factors determine Wordlift's rating of an entity?") The entity rating in WordLift takes under account the following factors: * Every entity should be linked to one or more related posts. * Every entity should have its own description. * Every entity should link to other entities - when we select other entities to enrich the description of an entity we create relationships in the site's [knowledge graph](/pages/key-concepts/##knowledge-graph). * Entities, just like any post in WordPress, can be kept as draft. Only when we publish them they become available in the analysis and we can use them to classify our contents. * Entities shall have a featured image. When we add a featured image to an entity weโ€™re adding the `schema-org:image` attribute to it. * Every entity (unless weโ€™re creating something completely new) should be interlinked with the same entity contained in at least one other dataset. This is called data interlinking and can be done by adding a link to the equivalent entity using the `sameAs` attribute. * Every entity has a type (i.e. Person, Place, Organization, โ€ฆ) and every type has its own set of properties. When we complete all the properties of an entity we increase the entity visibility and usefulness. ## I have a vocabulary term appearing several times in a page, should I link all of the occurrences to the term, or just once per page?[โ€‹](#i-have-a-vocabulary-term-appearing-several-times-in-a-page-should-i-link-all-of-the-occurrences-to-the-term-or-just-once-per-page "Direct link to I have a vocabulary term appearing several times in a page, should I link all of the occurrences to the term, or just once per page?") While on an average length blog post (> 500 words) we shall use a limited number of entities to classify the content, there is not an actual limit for the number of internal links pointing to the same entity page. In SEO the link juice is transferred equally from every single link: if Google transfers let's say 85% of your article's Page Rank each link will equally get its own share. Five links pointing to the same page will therefore transfer the same amount of link juice of one single link. If I link too many different pages by annotating the blog post with too many entities the link juice will be diluted (and this is why we don't expect to have too many entities per article). Now we need to consider the following: * if on the page (including navigation links, footer links and so on) you have too many links already - you easily might hit the [100 link limit](https://moz.com/blog/how-many-links-is-too-many); there is no penalty for that but still it is a good rule to keep the number of links (both internal and external) below the _100-link mark_; * WordLift is keen on helping you create a good internal linking structure to reduce the bounce rate on your site and to increase the number of pages visited during each browsing session by your readers; if your internal links for the same entity are too many they simply become irrelevant. On the contrary if your article is long enough it is probably good to have 2-3 links pointing to the same entity page (as a reader I might miss the first one and might instead find useful the second or third one). ## When should I link one entity to another?[โ€‹](#when-should-i-link-one-entity-to-another "Direct link to When should I link one entity to another?") By running the analysis on the property description text of an entity you can _link_ it to other entities. WordLift will store these relationships between one entity and other entities in the [graph](/pages/key-concepts/##knowledge-graph) using the Dublin Core property `dct:related`. This information will be used to suggest new connections between the contents of your site. Creating links among relevant entities will create more structure for your content, even though it is not mandatory to do so. You should always link entities that can help other users discover relevant contents (i.e. the entity _\[Berners-Lee\]_ shall be linked to entity _\[Web\]_ as the two concepts are strictly related.) ## How can I enable or disable links to entities?[โ€‹](#how-can-i-enable-or-disable-links-to-entities "Direct link to How can I enable or disable links to entities?") You can enable or disable the link to an entity by toggling the "Link" option for each annotation. See below ![image](/assets/images/wordlift-edit-entity-link-4b0d206c66fce83e1a9ff247c7360d70.gif) You can also enable or disable links site-wide from the WordLift Settings screen in the General tab as shown below. ![image](/assets/images/wordlift-settings-menu-link-6c658e46c110bc2584782acd7ef8db15.png) ## Why do I get 404 error on pages linked by WordLift?[โ€‹](#why-do-i-get-404-error-on-pages-linked-by-wordlift "Direct link to Why do I get 404 error on pages linked by WordLift?") WordPress is a powerful CMS. Nevertheless, in some cases, posts or pages newly created might return a _scary_ **404 Error**. Pages created with WordLift are not an exception and you might end up in a situation where WordLift is creating links to pages that _apparently_ do not exist. Don't worry this is a well-known WordPress issue and it can be easily fixed. Head into the dashboard of your website, click _Settings_ ยป _Permalinks_ and than press the _Save Changes_ button. WordPress will re-generate all the permalinks and the error will be fixed. ![image](/assets/images/wordlift-updatepermalinks-5fa50ce4ba8106634f00b990014bcd1a.png) Read [this article](http://www.wpbeginner.com/wp-tutorials/how-to-fix-wordpress-posts-returning-404-error/) to learn more about this issue from the WPbeginner website. ## What are the datasets WordLift uses for named entity recognition?[โ€‹](#what-are-the-datasets-wordlift-uses-for-named-entity-recognition "Direct link to What are the datasets WordLift uses for named entity recognition?") WordLift by default uses DBpedia and Freebase to detect and link named entities. With a custom configuration, the content analysis services provided by [Redlink](http://www.redlink.co) and available via our professional services, can use any RDF-based [graph](/pages/key-concepts/##knowledge-graph). It is also possible to use _multiple graphs_ for named entity recognition and [dereferencing](/pages/key-concepts/##dereferencing-http-uris). ## How can I prevent WordLift from creating new entity pages?[โ€‹](#how-can-i-prevent-wordlift-from-creating-new-entity-pages "Direct link to How can I prevent WordLift from creating new entity pages?") The best soution is to convert existing posts, pages and taxonomy terms to entities that will become part of your Knowledge Graph. This way youโ€™ll not create new pages but re-link the existing pages on your web site. ## What is a triple?[โ€‹](#what-is-a-triple "Direct link to What is a triple?") A triple is a set of three elements: a subject, a predicate, and an object. Triples are linked together to form a [graph](/pages/key-concepts/##knowledge-graph) that is without hierarchy, is machine readable, and can be used to infer new facts. Triples in WordLift describe facts as metadata about an article or an entity. ## Are there any integrations with Neo4j?[โ€‹](#are-there-any-integrations-with-neo4j "Direct link to Are there any integrations with Neo4j?") Neo4j is a graph database. WordLift stores data in a Linked Data store ([Apache Marmotta](https://marmotta.apache.org)) which provides linked data and SPARQL end-points. As long as Neo4j provides connectors for those interfaces, then an integration is possible. ## Do I need to be Administrator to configure it?[โ€‹](#do-i-need-to-be-administrator-to-configure-it "Direct link to Do I need to be Administrator to configure it?") Yes. To configure WordLift you will need to have admin privileges. ## Which Schema Types does WordLift support?[โ€‹](#which-schema-types-does-wordlift-support "Direct link to Which Schema Types does WordLift support?") WordLift, using the [Business plan](https://wordlift.io/pricing/), **supports all the schema types** listed in the [Schema.org](https://schema.org/) vocabulary. ## What is the advantage of using a custom domain for publishing the knowledge graph?[โ€‹](#what-is-the-advantage-of-using-a-custom-domain-for-publishing-the-knowledge-graph "Direct link to What is the advantage of using a custom domain for publishing the knowledge graph?") WordLift, includes with the [Business plan](https://wordlift.io/pricing/), the option **to support a custom domain** for linked data publishing. This means that you can use your own domain name to host the knowledge graph that WordLift creates. The main advantage is that you can use the same domain name for your website (ie `https://www.example.org`) and for the knowledge graph (`https://data.example.org`). Moreover if you decide to host the knowledge graph on a different platform you are free to do so without any vendor lock-in. WordLift hosts your data in a [Linked Data platform](https://www.w3.org/TR/ldp/), using the custom domain you are free to migrate your data to any other compatible graph platform without the need of changing the URIs of your entities. ## How can I change the JSON-LD _@type_ from _Article_ to _NewsArticle_ in WordLift?[โ€‹](#how-can-i-change-the-json-ld-type-from-article-to-newsarticle-in-wordlift "Direct link to how-can-i-change-the-json-ld-type-from-article-to-newsarticle-in-wordlift") WordLift, allows you to filter the the JSON-LD output before it is sent to the client and change any part of it, e.g. in this specific case:: ``` add_filter( 'wl_post_jsonld', function( $jsonld ) { // Bail out if `@type` isn't set or isn't `Article`. if ( ! isset( $jsonld['@type'] ) || 'Article' !== $jsonld['@type'] ) { return $jsonld; } $jsonld['@type'] = 'NewsArticle'; return $jsonld; } ); ``` --- --- url: https://docs.wordlift.io/wordpress-plugin/troubleshooting/ --- # Troubleshooting | WordLift Developer Documentation # Troubleshooting ## Author's @id is null[โ€‹](#authors-id-is-null "Direct link to Author's @id is null") ![image](/assets/images/authors_id_is_null-93a58cac40f39ee042efb4f74f93f3c0.png) This is due to WordPress not updating the post's author property when an author is removed. To fix follow this steps: 1. Open the Edit Post screen and look for the `author` property in the sidebar ![image](/assets/images/authors_id_is_null_step_1-878819632439a1e7bb79c1775be189b4.png) 1. Select a valid author and update ![image](/assets/images/authors_id_is_null_step_2-34f5f6332dd29a3d765b652faee3e544.png) Now check the structured data again, the problem should be solved. --- --- url: https://docs.wordlift.io/wordpress-plugin/user-manual/ --- # User Manual | WordLift Developer Documentation # User Manual * [Editors](/pages/editors/) * [Classic Editors](/pages/editors/#classic-editors) * [Block Editors](/pages/editors/#block-editors) * [Automatic Summarization](/pages/editors/#automatic-summarization) * [Sidebar](/pages/sidebar/) * [Content Analysis and Disambiguation](/pages/sidebar/#content-analysis-and-disambiguation) * [Manual Entity Selection](/pages/sidebar/#manual-entity-selection) * [Adding Entities](/pages/sidebar/#adding-entities) * [Updating and Linking Entities](/pages/sidebar/#updating-and-linking-entities) * [Synonyms](/pages/sidebar/#synonyms) * [Entity Types](/pages/sidebar/#entity-types) * [Publishing](/pages/publishing/) * [Rich Snippets](/pages/publishing/#rich-snippets) * [Linked Data](/pages/publishing/#linked-data) * [Widgets and Shortcodes](/pages/publishing/#widgets-and-shortcodes) * [Mappings](/pages/mappings/) * [Supported Schema types](/pages/mappings/#supported-schema-types) * [Advanced Schema types](/pages/mappings/#advanced-schema-types) * [Advanced Custom Fields](/pages/mappings/#advanced-custom-fields-1) * [Jsonld](/pages/jsonld/) * [Post linked with term](/pages/jsonld/#post-linked-with-term) * [Post linked with entity which matches the complete or a part of title](/pages/jsonld/#post-linked-with-entity-which-matches-the-complete-or-a-part-of-title) * [Post linked with Entity via annotation](/pages/jsonld/#post-linked-with-entity-via-annotation) * [Post linked with Entity which has Place entity on location property](/pages/jsonld/#post-linked-with-entity-which-has-place-entity-on-location-property) * [WooCommerce SEO by WordLift](/woocommerce/introduction/) * [Editors](/woocommerce/introduction/#editors) * [Categories](/woocommerce/introduction/#categories) * [Widgets](/woocommerce/introduction/#widgets) * [SEO Add-On for Google Sheets](/seo-add-on-google-sheets/introduction/) * [How it works](/seo-add-on-google-sheets/introduction/#how-it-works) * [Why is it asking for the country to be added?](/seo-add-on-google-sheets/introduction/#why-is-it-asking-for-the-country-to-be-added) * [How can the location affect the analysis?](/seo-add-on-google-sheets/introduction/#how-can-the-location-affect-the-analysis) * [WordLift Looker Studio Connector](/looker-studio-connector/introduction/) * [Get Started](/looker-studio-connector/introduction/#get-started) * [Product Knowledge Graph Builder](/pages/pkg-builder/) * [Get Started](/pages/pkg-builder/#get-started) ---