{"id":201,"date":"2026-05-19T00:00:00","date_gmt":"2026-05-19T00:00:00","guid":{"rendered":"https:\/\/local.paioclawblog.com\/openclaw-calendar-skill\/"},"modified":"2026-05-19T00:00:00","modified_gmt":"2026-05-19T00:00:00","slug":"openclaw-calendar-skill","status":"publish","type":"post","link":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/","title":{"rendered":"How to Set Up the OpenClaw Calendar Skill"},"content":{"rendered":"\n<div>\n<p>Scheduling is one of the most genuinely automatable tasks in knowledge work. Unlike email (where nuance matters constantly) or code review (where judgment is non-negotiable), a large portion of calendar management is mechanical: find a time that works, block it, send an invite. It&#8217;s rule-following, not thinking.<\/p>\n<p>The OpenClaw calendar skill handles the rule-following so you can focus on the decisions. This guide covers OAuth setup for Google Calendar, the time zone disambiguation problem that breaks most scheduling automations, and the &#8220;find me 3 slots that work for everyone&#8221; recipe.<\/p>\n<h2 id=\"oauth-setup\">OAuth Setup<\/h2>\n<p>The calendar skill uses OAuth 2.0 for Google Calendar \u2014 the same pattern as the email skill, but with calendar-specific scopes.<\/p>\n<h3>Google Calendar OAuth<\/h3>\n<p><strong>Step 1: Enable the API<\/strong><\/p>\n<ol>\n<li>Go to <a href=\"https:\/\/console.cloud.google.com\" target=\"_blank\" rel=\"noopener noreferrer\">console.cloud.google.com<\/a><\/li>\n<li>Enable the <strong>Google Calendar API<\/strong> under APIs &amp; Services \u2192 Library<\/li>\n<li>Go to <strong>Credentials \u2192 Create Credentials \u2192 OAuth 2.0 Client ID<\/strong><\/li>\n<li>Application type: Desktop app<\/li>\n<li>Download the credentials JSON<\/li>\n<\/ol>\n<p>If you already set up the email skill with a Google Cloud project, you can add the Calendar API to the same project \u2014 no need to create a new one.<\/p>\n<p><strong>Step 2: Choose your scopes<\/strong><\/p>\n<div><pre><code>https:\/\/www.googleapis.com\/auth\/calendar.readonly     # Read events only\nhttps:\/\/www.googleapis.com\/auth\/calendar.events       # Read + write events\nhttps:\/\/www.googleapis.com\/auth\/calendar.freebusy     # Free\/busy queries only\n<\/code><\/pre><\/div>\n<p>Start with <code>calendar.events<\/code> \u2014 it covers reading and creating events, which covers 95% of use cases. If you only want OpenClaw to check availability without creating events, <code>calendar.freebusy<\/code> is the minimal scope.<\/p>\n<p><strong>Step 3: Run the OAuth flow<\/strong><\/p>\n<div><pre><code>@openclaw setup google calendar oauth\n<\/code><\/pre><\/div>\n<p>OpenClaw opens a browser authorization window. Approve access, and the refresh token is stored. Access tokens are managed automatically from that point.<\/p>\n<div><pre><code>google_calendar:\n  credentials_file: \"~\/.openclaw\/calendar-credentials.json\"\n  token_file: \"~\/.openclaw\/calendar-token.json\"\n  scopes:\n    - \"https:\/\/www.googleapis.com\/auth\/calendar.events\"\n<\/code><\/pre><\/div>\n<h3>Multiple Calendars<\/h3>\n<p>Google accounts often have multiple calendars: personal, work, shared team calendars, birthdays, subscribed calendars. OpenClaw can access all calendars your account has access to.<\/p>\n<div><pre><code>@openclaw list my Google Calendar accounts\n<\/code><\/pre><\/div>\n<div><pre><code>Calendars available:\n\u2022 Your Name (primary) \u2014 personal events\n\u2022 Work - Company Name \u2014 synced from work Google account\n\u2022 Team Shared Calendar \u2014 shared with 8 people\n\u2022 US Holidays \u2014 subscribed\n\u2022 [3 more]\n\nWhich calendars should I use for scheduling? (default: primary only)\n<\/code><\/pre><\/div>\n<p>Configure which calendars to read from and which to create events on:<\/p>\n<div><pre><code>google_calendar:\n  read_from: [\"primary\", \"work-calendar-id\", \"team-shared-id\"]\n  create_events_on: \"primary\"  # Only create on primary\n<\/code><\/pre><\/div>\n<h3>Microsoft 365 \/ Outlook Calendar<\/h3>\n<p>For Outlook calendar, the skill uses Microsoft Graph API:<\/p>\n<div><pre><code>outlook_calendar:\n  client_id: \"your-azure-app-id\"\n  client_secret: \"your-client-secret\"\n  tenant_id: \"your-tenant-id\"\n  redirect_uri: \"http:\/\/localhost:8080\/callback\"\n<\/code><\/pre><\/div>\n<p>Microsoft&#8217;s OAuth flow requires an Azure app registration. The process is similar to Google&#8217;s but through <a href=\"https:\/\/portal.azure.com\" target=\"_blank\" rel=\"noopener noreferrer\">portal.azure.com<\/a>. The required scope is <code>Calendars.ReadWrite<\/code>.<\/p>\n<h3>CalDAV (Self-Hosted, Apple Calendar, Others)<\/h3>\n<p>For self-hosted calendar servers (Nextcloud, Fastmail, iCloud via CalDAV, Radicale):<\/p>\n<div><pre><code>caldav:\n  url: \"https:\/\/caldav.fastmail.com\/dav\/calendars\/user\/you@fastmail.com\/\"\n  username: \"you@fastmail.com\"\n  password: \"${CALDAV_PASSWORD}\"\n<\/code><\/pre><\/div>\n<p>CalDAV is the universal standard. If your calendar service supports CalDAV, this works.<\/p>\n<h2 id=\"the-time-zone-problem\">The Time Zone Problem<\/h2>\n<p>Time zone handling is where calendar automations go wrong silently. The error doesn&#8217;t throw an exception \u2014 the meeting just gets scheduled at the wrong time.<\/p>\n<h3>The Disambiguation Issue<\/h3>\n<p>Consider this request:<\/p>\n<div><pre><code>@openclaw schedule a call with John for Thursday at 2pm\n<\/code><\/pre><\/div>\n<p>Questions this raises:<\/p>\n<ul>\n<li>2pm in whose time zone?<\/li>\n<li>Is it your time zone or John&#8217;s?<\/li>\n<li>Are you assuming John is in the same zone?<\/li>\n<li>Is it 2pm local time for the meeting room or for all participants?<\/li>\n<\/ul>\n<p>If you&#8217;re in New York and John is in London, &#8220;2pm Thursday&#8221; means something different to each of you. OpenClaw needs to know \u2014 and it needs to ask rather than assume.<\/p>\n<h3>Configuring Your Time Zone<\/h3>\n<p>Set your home time zone explicitly:<\/p>\n<div><pre><code>calendar_skill:\n  user_timezone: \"America\/New_York\"  # IANA timezone format\n  display_format: \"12h\"  # or 24h\n  week_start: \"monday\"  # monday or sunday\n<\/code><\/pre><\/div>\n<p>Use IANA timezone names, not abbreviations. <code>America\/New_York<\/code> is unambiguous; <code>EST<\/code> is ambiguous (Eastern Standard Time is UTC-5, but people use &#8220;EST&#8221; colloquially to mean Eastern time year-round, which is sometimes UTC-4 during daylight saving).<\/p>\n<h3>Handling Attendee Time Zones<\/h3>\n<p>When scheduling with others, OpenClaw checks their calendar&#8217;s time zone if available:<\/p>\n<div><pre><code>@openclaw find a time to meet with sarah@company.com next week\n<\/code><\/pre><\/div>\n<p>OpenClaw:<\/p>\n<ol>\n<li>Queries Sarah&#8217;s free\/busy data (if she&#8217;s on Google Calendar and sharing)<\/li>\n<li>Detects her calendar&#8217;s time zone from her event data<\/li>\n<li>Shows you slots in your time zone with Sarah&#8217;s local time in parentheses<\/li>\n<\/ol>\n<div><pre><code>Available slots for meeting with Sarah Chen:\n\u2022 Monday May 20, 10am-11am (your time: 10am ET \/ her time: 3pm BST)\n\u2022 Tuesday May 21, 2pm-3pm (your time: 2pm ET \/ her time: 7pm BST) \u2190 late for her\n\u2022 Wednesday May 22, 9am-10am (your time: 9am ET \/ her time: 2pm BST) \u2190 recommended\n\nNote: Sarah appears to be in BST (UTC+1). Tuesday slot is late in her evening.\nRecommend Wednesday 9am.\n<\/code><\/pre><\/div>\n<h3>The &#8220;Ambiguous Time&#8221; Rule<\/h3>\n<p>Configure OpenClaw to always clarify when time zone is ambiguous:<\/p>\n<div><pre><code>calendar_skill:\n  always_confirm_timezone: true\n  flag_late_times: true  # Warn if a slot is after 6pm for any attendee\n  flag_early_times: true  # Warn if a slot is before 8am for any attendee\n<\/code><\/pre><\/div>\n<p>With this config, ambiguous requests trigger a clarification:<\/p>\n<div><pre><code>@openclaw schedule a call with the London team at 3pm Friday\n\n&gt; Which time zone for 3pm? \n&gt; \u2022 3pm ET \u2192 8pm BST (London) \u2014 late for them\n&gt; \u2022 3pm BST \u2192 10am ET \u2014 works for both\n&gt; Which did you mean?\n<\/code><\/pre><\/div>\n<p>This adds one round-trip but prevents wrong-time meetings.<\/p>\n<h2 id=\"reading-and-summarizing-your-calendar\">Reading and Summarizing Your Calendar<\/h2>\n<div><pre><code>@openclaw what's my week look like?\n<\/code><\/pre><\/div>\n<div><pre><code>Week of May 19-23, 2026\n\nMON\n\u2022 10am-11am: Team standup (recurring)\n\u2022 2pm-3pm: Product review with Alex\n\nTUE\n\u2022 9am-10am: 1:1 with manager\n\u2022 Free afternoon\n\nWED\n\u2022 All-day: Focus day (no meetings scheduled)\n\nTHU\n\u2022 11am-12pm: Client call \u2014 Acme Corp\n\u2022 3pm-4pm: Design review\n\nFRI\n\u2022 9am-9:30am: Weekly retrospective\n\u2022 Free rest of day\n\nBusiest day: Monday (3.5 hours in meetings)\nMost available: Wednesday (good for deep work)\n<\/code><\/pre><\/div>\n<div><pre><code>@openclaw do I have any back-to-back meetings this week with no break?\n<\/code><\/pre><\/div>\n<div><pre><code>Yes \u2014 Thursday has a potential issue:\n\u2022 11am-12pm: Client call (Acme Corp)\n\u2022 12pm-1pm: [No break]\n\u2022 1pm-2pm: Lunch blocked (you blocked this yourself)\n\nYou have 1 hour between the client call and lunch \u2014 that's fine.\nNo back-to-back issues this week.\n<\/code><\/pre><\/div>\n<h2 id=\"the-find-me-3-slots-that-work-for-everyone-recipe\">The &#8220;Find Me 3 Slots That Work for Everyone&#8221; Recipe<\/h2>\n<p>This is the scheduling automation that saves the most time. Instead of the back-and-forth of &#8220;are you free Tuesday? No. Wednesday? Maybe afternoon. What time?&#8221; \u2014 OpenClaw does it in one step.<\/p>\n<h3>Setup<\/h3>\n<div><pre><code>@openclaw find a 45-minute slot next week for me, sarah@company.com, and james@company.com\n<\/code><\/pre><\/div>\n<p>OpenClaw:<\/p>\n<ol>\n<li>Queries free\/busy for all three people (if they&#8217;re on Google Calendar or have shared availability)<\/li>\n<li>Applies your working hours preference (9am-6pm, Monday-Friday by default)<\/li>\n<li>Applies buffer rules (no meetings before 9:30am, 30-min lunch block)<\/li>\n<li>Finds overlapping free windows<\/li>\n<li>Ranks by quality (avoids Mondays before 10am, Fridays after 3pm)<\/li>\n<li>Returns 3 options<\/li>\n<\/ol>\n<div><pre><code>Found 3 slots for 45-min meeting (all times ET):\n\n1. \u2b50 Tuesday May 21, 10am-10:45am\n   \u2022 You: Free (before product standup at 11)\n   \u2022 Sarah: Free (confirmed via calendar)\n   \u2022 James: Free (confirmed via calendar)\n   \n2. Wednesday May 22, 2pm-2:45pm\n   \u2022 You: Free\n   \u2022 Sarah: Free\n   \u2022 James: Tentative conflict (might clear)\n   \n3. Thursday May 23, 11am-11:45am\n   \u2022 You: Free\n   \u2022 Sarah: Free\n   \u2022 James: Free\n\nRecommend option 1. Want me to send invites?\n<\/code><\/pre><\/div>\n<h3>Availability Preferences<\/h3>\n<p>Configure your scheduling preferences so OpenClaw produces realistic slots:<\/p>\n<div><pre><code>calendar_skill:\n  working_hours:\n    start: \"09:00\"\n    end: \"18:00\"\n    days: [\"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\"]\n  buffers:\n    before_meeting: 5    # minutes\n    after_meeting: 10    # minutes\n    lunch_start: \"12:30\"\n    lunch_end: \"13:30\"\n  avoid:\n    - \"monday_morning_before_10\"  # Usually catch-up time\n    - \"friday_after_15\"           # End-of-week focus time\n  prefer_back_to_back: false      # Cluster meetings or spread them\n<\/code><\/pre><\/div>\n<h3>Creating Events<\/h3>\n<div><pre><code>@openclaw schedule the Tuesday 10am slot, invite Sarah and James, title \"Q3 Planning Sync\", add a Zoom link\n<\/code><\/pre><\/div>\n<p>OpenClaw:<\/p>\n<ol>\n<li>Creates the event on your primary calendar<\/li>\n<li>Adds Sarah and James as attendees (sends invites)<\/li>\n<li>Generates or attaches a video conference link (Google Meet auto-generated, or your Zoom URL if configured)<\/li>\n<li>Adds you as organizer<\/li>\n<\/ol>\n<div><pre><code>calendar_skill:\n  video_conference:\n    default: \"google_meet\"  # or \"zoom\", \"teams\", \"none\"\n    zoom_personal_link: \"https:\/\/zoom.us\/j\/your-meeting-id\"\n<\/code><\/pre><\/div>\n<h3>Meeting Prep Summaries<\/h3>\n<div><pre><code>@openclaw I have a call with Acme Corp in 1 hour, what do I know about them?\n<\/code><\/pre><\/div>\n<p>OpenClaw cross-references the calendar event with your email, Notion, and any other connected tools:<\/p>\n<div><pre><code>Upcoming: Acme Corp Call in 58 minutes\n\n? Context from your notes:\n\u2022 Last meeting: April 3 (discovery call, 45 min)\n\u2022 Key contact: Jennifer Walsh, VP Product\n\u2022 Status: They're evaluating your proposal, response expected this week\n\u2022 Open question: Budget sign-off timing\n\n? Recent email:\n\u2022 Jennifer replied May 17: \"Looking forward to Thursday's call\"\n\u2022 No specific agenda items mentioned\n\n? Suggested topics to cover:\n\u2022 Follow up on proposal timeline\n\u2022 Budget approval status\n\u2022 Next steps \/ who signs off\n<\/code><\/pre><\/div>\n<h2 id=\"recurring-meeting-management\">Recurring Meeting Management<\/h2>\n<div><pre><code>@openclaw find recurring meetings on my calendar that nobody has attended in the last 3 weeks\n<\/code><\/pre><\/div>\n<p>Useful for calendar hygiene \u2014 identifying zombie meetings that should be cancelled.<\/p>\n<div><pre><code>@openclaw cancel the Tuesday 4pm \"Weekly Sync\" series \u2014 nobody's attended in a month\n<\/code><\/pre><\/div>\n<p>OpenClaw cancels the entire series and sends cancellation notices to attendees.<\/p>\n<h2 id=\"paioclaw-vs-self-hosted\">PaioClaw vs. Self-Hosted<\/h2>\n<p>The calendar skill works well self-hosted for single-account Google Calendar setups. PaioClaw adds value in:<\/p>\n<p><strong>External availability sharing:<\/strong> The &#8220;find me 3 slots&#8221; feature queries other attendees&#8217; free\/busy. This works when they&#8217;re on Google Calendar and sharing availability. For external attendees (clients, candidates) who don&#8217;t share calendars, PaioClaw can generate a Calendly-style availability link that shows your open slots without requiring Google Calendar access.<\/p>\n<p><strong>Multi-calendar routing:<\/strong> If you manage separate personal and work Google accounts, routing scheduling across both without conflicts is more complex to configure self-hosted.<\/p>\n<p><strong>Mobile scheduling:<\/strong> Approving and sending meeting invites from mobile is smoother in PaioClaw&#8217;s interface than in the terminal.<\/p>\n<p>Plans start free, Smart at $15\/mo, Genius at $25\/mo.<\/p>\n<h2 id=\"summary\">Summary<\/h2>\n<p>OAuth setup with <code>calendar.events<\/code> scope covers all standard use cases. Set your IANA time zone explicitly, configure working hours and buffer preferences, and always enable the time zone disambiguation prompt \u2014 the one extra question it asks saves real confusion.<\/p>\n<p>The free\/busy slot-finding recipe is the highest-value use of the calendar skill. Run it before any meeting request and you skip 3-5 rounds of back-and-forth scheduling emails. The meeting prep summary adds a useful layer \u2014 60-second context before a call beats 5 minutes of frantic note-reviewing.<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>PaioClaw gives you a private, always-on AI assistant powered by your own API keys. No Docker, no command line \u2014 sign up and it&#8217;s ready in 60 seconds.<\/p>\n","protected":false},"author":0,"featured_media":202,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-201","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Set Up the OpenClaw Calendar Skill - PaioClaw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Set Up the OpenClaw Calendar Skill - PaioClaw\" \/>\n<meta property=\"og:description\" content=\"PaioClaw gives you a private, always-on AI assistant powered by your own API keys. No Docker, no command line \u2014 sign up and it&#039;s ready in 60 seconds.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/\" \/>\n<meta property=\"og:site_name\" content=\"PaioClaw\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/paioclaw\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-19T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/paioclaw.ai\/blog\/wp-content\/uploads\/2026\/05\/openclaw-calendar-skill.png\" \/>\n\t<meta property=\"og:image:width\" content=\"852\" \/>\n\t<meta property=\"og:image:height\" content=\"341\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PaioClaw\" \/>\n<meta name=\"twitter:site\" content=\"@PaioClaw\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"How to Set Up the OpenClaw Calendar Skill\",\"datePublished\":\"2026-05-19T00:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/\"},\"wordCount\":980,\"publisher\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/openclaw-calendar-skill.png\",\"articleSection\":[\"How to\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/\",\"url\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/\",\"name\":\"How to Set Up the OpenClaw Calendar Skill - PaioClaw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/openclaw-calendar-skill.png\",\"datePublished\":\"2026-05-19T00:00:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/#primaryimage\",\"url\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/openclaw-calendar-skill.png\",\"contentUrl\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/openclaw-calendar-skill.png\",\"width\":852,\"height\":341},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/openclaw-calendar-skill\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Set Up the OpenClaw Calendar Skill\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/\",\"name\":\"PAIO Blog \u2014 Guides, tips, and updates\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/#organization\",\"name\":\"PAIO\",\"url\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/local.paioclawblog.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/paioclaw_logo.webp\",\"contentUrl\":\"https:\\\/\\\/local.paioclawblog.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/paioclaw_logo.webp\",\"width\":128,\"height\":128,\"caption\":\"PAIO\"},\"image\":{\"@id\":\"https:\\\/\\\/paioclaw.ai\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/paioclaw\\\/\",\"https:\\\/\\\/x.com\\\/PaioClaw\",\"https:\\\/\\\/www.instagram.com\\\/paioclaw\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/paioclaw\",\"https:\\\/\\\/www.youtube.com\\\/@PaioClaw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Set Up the OpenClaw Calendar Skill - PaioClaw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/","og_locale":"en_US","og_type":"article","og_title":"How to Set Up the OpenClaw Calendar Skill - PaioClaw","og_description":"PaioClaw gives you a private, always-on AI assistant powered by your own API keys. No Docker, no command line \u2014 sign up and it's ready in 60 seconds.","og_url":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/","og_site_name":"PaioClaw","article_publisher":"https:\/\/www.facebook.com\/paioclaw\/","article_published_time":"2026-05-19T00:00:00+00:00","og_image":[{"width":852,"height":341,"url":"https:\/\/paioclaw.ai\/blog\/wp-content\/uploads\/2026\/05\/openclaw-calendar-skill.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_creator":"@PaioClaw","twitter_site":"@PaioClaw","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/#article","isPartOf":{"@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/"},"author":{"name":"","@id":""},"headline":"How to Set Up the OpenClaw Calendar Skill","datePublished":"2026-05-19T00:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/"},"wordCount":980,"publisher":{"@id":"https:\/\/paioclaw.ai\/blog\/#organization"},"image":{"@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/#primaryimage"},"thumbnailUrl":"https:\/\/paioclaw.ai\/blog\/wp-content\/uploads\/2026\/05\/openclaw-calendar-skill.png","articleSection":["How to"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/","url":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/","name":"How to Set Up the OpenClaw Calendar Skill - PaioClaw","isPartOf":{"@id":"https:\/\/paioclaw.ai\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/#primaryimage"},"image":{"@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/#primaryimage"},"thumbnailUrl":"https:\/\/paioclaw.ai\/blog\/wp-content\/uploads\/2026\/05\/openclaw-calendar-skill.png","datePublished":"2026-05-19T00:00:00+00:00","breadcrumb":{"@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/#primaryimage","url":"https:\/\/paioclaw.ai\/blog\/wp-content\/uploads\/2026\/05\/openclaw-calendar-skill.png","contentUrl":"https:\/\/paioclaw.ai\/blog\/wp-content\/uploads\/2026\/05\/openclaw-calendar-skill.png","width":852,"height":341},{"@type":"BreadcrumbList","@id":"https:\/\/paioclaw.ai\/blog\/openclaw-calendar-skill\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/paioclaw.ai\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Set Up the OpenClaw Calendar Skill"}]},{"@type":"WebSite","@id":"https:\/\/paioclaw.ai\/blog\/#website","url":"https:\/\/paioclaw.ai\/blog\/","name":"PAIO Blog \u2014 Guides, tips, and updates","description":"","publisher":{"@id":"https:\/\/paioclaw.ai\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/paioclaw.ai\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/paioclaw.ai\/blog\/#organization","name":"PAIO","url":"https:\/\/paioclaw.ai\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/paioclaw.ai\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/local.paioclawblog.com\/wp-content\/uploads\/2026\/05\/paioclaw_logo.webp","contentUrl":"https:\/\/local.paioclawblog.com\/wp-content\/uploads\/2026\/05\/paioclaw_logo.webp","width":128,"height":128,"caption":"PAIO"},"image":{"@id":"https:\/\/paioclaw.ai\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/paioclaw\/","https:\/\/x.com\/PaioClaw","https:\/\/www.instagram.com\/paioclaw\/","https:\/\/www.linkedin.com\/company\/paioclaw","https:\/\/www.youtube.com\/@PaioClaw"]}]}},"_links":{"self":[{"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/posts\/201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/comments?post=201"}],"version-history":[{"count":0,"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/posts\/201\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/media\/202"}],"wp:attachment":[{"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/media?parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/categories?post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paioclaw.ai\/blog\/wp-json\/wp\/v2\/tags?post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}