<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Skryvo AI</title>
    <description>The latest articles on DEV Community by Skryvo AI (@skryvo).</description>
    <link>https://dev.to/skryvo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4174906%2F27ac051a-c47b-4445-b5f1-c73c6f3a4442.png</url>
      <title>DEV Community: Skryvo AI</title>
      <link>https://dev.to/skryvo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/skryvo"/>
    <language>en</language>
    <item>
      <title>Best Time to Post on X (Twitter): What 3 Studies Say</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Tue, 10 Nov 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/best-time-to-post-on-x-twitter-what-3-studies-say-4fp5</link>
      <guid>https://dev.to/skryvo/best-time-to-post-on-x-twitter-what-3-studies-say-4fp5</guid>
      <description>&lt;p&gt;The best time to post on X is a weekday morning or early afternoon, Tuesday to Thursday, in your audience's local time. Three studies published in the past year agree on the days and disagree on the hours: Buffer and Hootsuite found 9 to 11 a.m., Sprout Social found noon to 6 p.m. All three found the weekend weakest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; post on X between 9 a.m. and 6 p.m., Tuesday to Thursday, in your followers' time zone, and avoid Saturday. Inside that window, the studies split between mornings (Buffer, Hootsuite) and afternoons (Sprout), so test both for two weeks and keep the hour your own posts reward. A study tells you where to start; your analytics tell you where to stay.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the best time to post on X (Twitter)?
&lt;/h2&gt;

&lt;p&gt;Tuesday to Thursday, between 9 a.m. and 6 p.m. local time. That is the window every recent study shares. Within it, Buffer's data points to 9 a.m. on Tuesday as the single strongest hour, and Sprout Social's to the afternoon. If you post once a day, start at 9 or 10 a.m. on weekdays and move later only if your own numbers say so.&lt;/p&gt;

&lt;p&gt;Here is what each study actually measured. They are not the same thing, which is why their answers differ.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Study&lt;/th&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;th&gt;Best time on X&lt;/th&gt;
&lt;th&gt;Worst&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://buffer.com/resources/best-time-to-post-on-twitter-x/" rel="noopener noreferrer"&gt;Buffer&lt;/a&gt;, March 2026&lt;/td&gt;
&lt;td&gt;8.7 million posts sent through Buffer, ranked by engagement rate&lt;/td&gt;
&lt;td&gt;Tuesday 9 a.m., then Wednesday 10 a.m. and 9 a.m.; weekdays 9–11 a.m. most reliable&lt;/td&gt;
&lt;td&gt;Saturday, then Friday; evenings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://sproutsocial.com/insights/best-times-to-post-on-twitter/" rel="noopener noreferrer"&gt;Sprout Social&lt;/a&gt;, March 2026&lt;/td&gt;
&lt;td&gt;Nearly 2 billion engagements on about 307,000 profiles across six networks, November 2025 to February 2026&lt;/td&gt;
&lt;td&gt;Tuesday to Thursday, 12–6 p.m.; Monday 2–3 p.m. and 5 p.m.&lt;/td&gt;
&lt;td&gt;Saturday and Sunday&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://blog.hootsuite.com/best-time-to-post-on-social-media/" rel="noopener noreferrer"&gt;Hootsuite&lt;/a&gt;, November 2025&lt;/td&gt;
&lt;td&gt;More than 1 million posts across networks, with Critical Truth, normalised across 118 countries&lt;/td&gt;
&lt;td&gt;Wednesday to Friday, 9–11 a.m.&lt;/td&gt;
&lt;td&gt;Not stated for X&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;All times are local to the audience. Figures read from each study's own page on October 18, 2026.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do the studies disagree?
&lt;/h2&gt;

&lt;p&gt;Because they measure different accounts with different yardsticks. Buffer ranks hours by engagement rate on posts its own customers scheduled. Sprout counts engagements on the profiles its customers manage, across six networks, over one winter quarter. Hootsuite pools posts from every network and normalises the hours across 118 countries. Each sample is mostly businesses that pay for a scheduling tool, which is not the same crowd as a founder posting from a phone.&lt;/p&gt;

&lt;p&gt;The useful reading is the overlap, not any one number. Midweek beats the weekend in all three. Daytime beats the evening in all three. Everything finer than that depends on whose followers you have.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the worst time to post on X?
&lt;/h2&gt;

&lt;p&gt;Saturday, and weekday evenings after 6 p.m. Buffer found evenings from 6 to 11 p.m. the weakest hours on every day of the week, and Saturday the weakest day, followed by Friday. Sprout found both weekend days weakest. If your audience is not in one time zone, the worst time is whichever hour falls at night for most of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does it matter what time you post on X?
&lt;/h2&gt;

&lt;p&gt;Less than what you post, but yes. Most people see a post in the hours after it goes out, so a post that lands while your followers are asleep starts with nobody to read it. Timing cannot rescue a weak post. It can stop a good one from going unseen.&lt;/p&gt;

&lt;p&gt;Two habits matter more than the exact hour. Post when you can stay around for the first replies, because a conversation keeps a post in front of people. And post consistently: a steady weekday rhythm at a decent hour beats a perfect hour you hit twice a month.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to find your own best time to post on X
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find where your followers are.&lt;/strong&gt; If most of them are in one region, use its local time. If they are split, pick the hours where the regions' working days overlap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick two slots inside the shared window.&lt;/strong&gt; One morning (9 or 10 a.m.) and one afternoon (2 or 3 p.m.), Tuesday to Thursday.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alternate them for two weeks.&lt;/strong&gt; Similar posts, same days, only the hour changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare the results.&lt;/strong&gt; Open each post's stats (the bar-chart icon under it) and compare engagement per impression, not raw likes, so one lucky post does not decide it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the winner and test again next quarter.&lt;/strong&gt; Audiences shift; a rule you set once goes stale.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In Skryvo this is the Performance page: it measures the best hour on each channel from your own published posts, and "Use best times" makes that hour the default for new posts. Until you have a few weeks of posts, start from the shared window above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best time to post on X by day
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Start here (local time)&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monday&lt;/td&gt;
&lt;td&gt;2–3 p.m.&lt;/td&gt;
&lt;td&gt;Sprout's Monday peak; mornings go to inboxes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tuesday&lt;/td&gt;
&lt;td&gt;9 a.m.&lt;/td&gt;
&lt;td&gt;Buffer's top hour of the week&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wednesday&lt;/td&gt;
&lt;td&gt;9–10 a.m.&lt;/td&gt;
&lt;td&gt;Top three in Buffer, inside Hootsuite's window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thursday&lt;/td&gt;
&lt;td&gt;9–11 a.m. or 12–3 p.m.&lt;/td&gt;
&lt;td&gt;Inside all three studies' windows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Friday&lt;/td&gt;
&lt;td&gt;9–11 a.m.&lt;/td&gt;
&lt;td&gt;Hootsuite's window; Buffer ranks Friday second-weakest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Saturday&lt;/td&gt;
&lt;td&gt;Skip, or post only if your audience is consumers&lt;/td&gt;
&lt;td&gt;Weakest day in Buffer and Sprout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunday&lt;/td&gt;
&lt;td&gt;Afternoon at most&lt;/td&gt;
&lt;td&gt;Weak in Sprout's summary&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The table is a starting point built from the studies above, not a measured result of ours. Your own two-week test overrides it. For the other networks, see &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-social-media/" rel="noopener noreferrer"&gt;the best time to post on every social network&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Schedule the week, then stop thinking about it
&lt;/h2&gt;

&lt;p&gt;Once you know your hours, the time of day stops being a decision. Write the week's posts in one sitting, or &lt;a href="https://skryvo.ai/blog/turn-one-blog-into-a-week-of-social/" rel="noopener noreferrer"&gt;turn one blog post into a week of them&lt;/a&gt;, check each against &lt;a href="https://skryvo.ai/tools/post-preview/" rel="noopener noreferrer"&gt;X's 280-character limit&lt;/a&gt;, and &lt;a href="https://skryvo.ai/blog/how-to-schedule-tweets/" rel="noopener noreferrer"&gt;schedule them for the slots you picked&lt;/a&gt;. Then spend the posting hour replying to people instead of watching the clock.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-x/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;. Drafted with AI assistance; every figure links to the source it comes from.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>twitter</category>
      <category>socialmedia</category>
      <category>marketing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Best Time to Post on LinkedIn: What 3 Studies Say</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Mon, 09 Nov 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/best-time-to-post-on-linkedin-what-3-studies-say-4p1l</link>
      <guid>https://dev.to/skryvo/best-time-to-post-on-linkedin-what-3-studies-say-4p1l</guid>
      <description>&lt;p&gt;The best time to post on LinkedIn is a weekday, Tuesday to Thursday, but the studies disagree on the hour by more than ten hours. Hootsuite found 4 to 6 a.m., Sprout Social found late morning to mid-afternoon, and Buffer's latest study found 3 to 8 p.m. All of them found weekends weakest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; post on a weekday, Tuesday to Thursday if you can, in your audience's time zone, and skip the weekend. For the hour, start in the window two studies share, 11 a.m. to 5 p.m., then test one early-morning slot and one late-afternoon slot against it for two weeks. The studies cannot agree on the hour, so the hour is the thing to measure yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the best time to post on LinkedIn?
&lt;/h2&gt;

&lt;p&gt;Tuesday to Thursday, between 11 a.m. and 5 p.m. local time, is the safest starting point: it sits inside Sprout Social's daily windows and overlaps the start of Buffer's. If you post once a week, Wednesday afternoon is the slot two of the three studies rate well. After that, your own analytics should decide.&lt;/p&gt;

&lt;p&gt;Here is what each study measured and found, read from their own pages on October 18, 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Study&lt;/th&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;th&gt;Best time on LinkedIn&lt;/th&gt;
&lt;th&gt;Worst&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://sproutsocial.com/insights/best-times-to-post-on-linkedin/" rel="noopener noreferrer"&gt;Sprout Social&lt;/a&gt;, 2026&lt;/td&gt;
&lt;td&gt;2 billion engagements across 307,000 profiles&lt;/td&gt;
&lt;td&gt;Mon 1–2 p.m.; Tue 11 a.m.–5 p.m.; Wed 11 a.m.–4 p.m.; Thu 11 a.m. and 1–5 p.m.; Fri 11 a.m. and 1–2 p.m.&lt;/td&gt;
&lt;td&gt;Saturday and Sunday&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://buffer.com/resources/best-time-to-post-on-linkedin/" rel="noopener noreferrer"&gt;Buffer&lt;/a&gt;, 2026&lt;/td&gt;
&lt;td&gt;4.8 million posts sent through Buffer&lt;/td&gt;
&lt;td&gt;Weekdays 3–8 p.m.; top slots Wednesday 4 p.m., Friday 3 p.m. and 4 p.m.&lt;/td&gt;
&lt;td&gt;Weekends&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://blog.hootsuite.com/best-time-to-post-on-social-media/" rel="noopener noreferrer"&gt;Hootsuite&lt;/a&gt;, 2025&lt;/td&gt;
&lt;td&gt;More than 1 million posts across networks, with Critical Truth&lt;/td&gt;
&lt;td&gt;Tuesday and Wednesday, 4–6 a.m.&lt;/td&gt;
&lt;td&gt;Not stated&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;All times are local to the audience.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do the studies disagree so much?
&lt;/h2&gt;

&lt;p&gt;Because each one measures its own customers, with its own yardstick, in its own year. Buffer ranks hours by engagement on posts its users scheduled. Sprout counts engagements on the profiles its customers manage across six networks. Hootsuite pools posts from every network and normalises the hours across 118 countries, which can pull a global average toward hours that are morning somewhere and evening somewhere else.&lt;/p&gt;

&lt;p&gt;The answers also move over time. In July 2024, LinkedIn's own marketing blog summarised Buffer's then-new data as "between 9 am and 5 pm on weekdays". &lt;a href="https://www.linkedin.com/business/marketing/blog/linkedin-ads/whats-the-best-time-to-post-on-linkedin" rel="noopener noreferrer"&gt;The same LinkedIn article&lt;/a&gt; lists HubSpot and Sprinklr findings that differ again. Buffer's 2026 study now puts the peak at 3 to 8 p.m. When the same company's answer shifts by hours in two years, treat any single hour as a starting guess.&lt;/p&gt;

&lt;p&gt;What survives every study: weekdays beat weekends, and midweek is strong. Everything finer depends on whose followers you have.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the worst time to post on LinkedIn?
&lt;/h2&gt;

&lt;p&gt;Saturday and Sunday. Every study above rates the weekend lowest, which fits a network people use for work. For weekday evenings the studies split: Sprout's windows all close by 5 p.m., while Buffer's newest study found engagement holding until 8 p.m.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does the time you post on LinkedIn matter?
&lt;/h2&gt;

&lt;p&gt;Yes, but less than what you post. LinkedIn's own article makes the same point: timing plays a role, but the substance of the post matters more, and LinkedIn has said it gives more weight to knowledge and insight in the feed. A strong post at an average hour beats a weak post at the perfect one. If you want the substance part, &lt;a href="https://skryvo.ai/blog/how-to-write-a-linkedin-post/" rel="noopener noreferrer"&gt;how to write a LinkedIn post people read&lt;/a&gt; covers it.&lt;/p&gt;

&lt;p&gt;Timing matters most in the first hour, when your own network sees the post and decides whether to react. Post when you can stay around to answer the first comments.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to find your own best time to post on LinkedIn
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check where your audience works.&lt;/strong&gt; LinkedIn's analytics show your followers' locations. Use the time zone most of them are in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick three slots to test.&lt;/strong&gt; One early (7–8 a.m.), one midday (12–1 p.m.), one late afternoon (4–5 p.m.), all Tuesday to Thursday.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate them for three weeks.&lt;/strong&gt; Similar posts, only the hour changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare engagement per impression,&lt;/strong&gt; not raw reactions, so one post that travelled does not decide it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the winner, retest each quarter.&lt;/strong&gt; Audiences and the feed both change.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In Skryvo, the Performance page measures the best hour on each channel from your own published posts, and "Use best times" makes it the default for new posts. Until you have a few weeks of posts, the shared window above is the place to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best time to post on LinkedIn by day
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Start here (local time)&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monday&lt;/td&gt;
&lt;td&gt;1–2 p.m.&lt;/td&gt;
&lt;td&gt;Sprout's Monday window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tuesday&lt;/td&gt;
&lt;td&gt;11 a.m.–5 p.m.&lt;/td&gt;
&lt;td&gt;Sprout's longest window; Hootsuite's early slot is the test alternative&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wednesday&lt;/td&gt;
&lt;td&gt;3–4 p.m.&lt;/td&gt;
&lt;td&gt;Inside Sprout's window and Buffer's top slot (4 p.m.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thursday&lt;/td&gt;
&lt;td&gt;1–5 p.m.&lt;/td&gt;
&lt;td&gt;Inside Sprout's window, overlaps Buffer's&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Friday&lt;/td&gt;
&lt;td&gt;1–3 p.m.&lt;/td&gt;
&lt;td&gt;Sprout's 1–2 p.m. and Buffer's 3 p.m.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weekend&lt;/td&gt;
&lt;td&gt;Skip&lt;/td&gt;
&lt;td&gt;Weakest in every study&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This table is a starting point drawn from the studies above, not a result we measured. Your own three-week test overrides it.&lt;/p&gt;

&lt;p&gt;Posting the same news on other networks? Each has its own hours: see &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-social-media/" rel="noopener noreferrer"&gt;the best time to post on every social network&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set the hours once, then write
&lt;/h2&gt;

&lt;p&gt;Pick your slots, put them in your scheduler, and stop deciding the hour every day. &lt;a href="https://skryvo.ai/blog/how-to-schedule-linkedin-posts/" rel="noopener noreferrer"&gt;Scheduling LinkedIn posts&lt;/a&gt; takes a minute in LinkedIn's own composer or in a tool. Spend the time you save on the post itself, and on the first hour of comments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-linkedin/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;. Drafted with AI assistance; every figure links to the source it comes from.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linkedin</category>
      <category>socialmedia</category>
      <category>marketing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Bluesky vs Threads: Which Should You Post On?</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Sun, 08 Nov 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/bluesky-vs-threads-which-should-you-post-on-1o1b</link>
      <guid>https://dev.to/skryvo/bluesky-vs-threads-which-should-you-post-on-1o1b</guid>
      <description>&lt;p&gt;Threads is far bigger: Meta reported 500 million monthly active users in June 2026. Bluesky is smaller and more open: it reported 41 million users at the end of 2025, on a protocol anyone can build on. Pick Threads for reach and Bluesky for an open network you control. You can post to both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; Threads has the audience, native scheduling and a home next to Instagram. Bluesky has open data, custom feeds you can build or choose, and a 300-character format that rewards a sharp line. If you can only do one, go where your customers already talk. If you can do both, write one idea and shape it for each, because 300 and 500 characters are different posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bluesky vs Threads at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Bluesky&lt;/th&gt;
&lt;th&gt;Threads&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;41 million users at the end of 2025 (&lt;a href="https://bsky.social/about/blog/01-29-2026-transparency-report-overview" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt;), counted as accounts&lt;/td&gt;
&lt;td&gt;500 million monthly active users in June 2026 (&lt;a href="https://about.fb.com/news/2026/06/meta-launching-new-features-500-million-monthly-threads-users/" rel="noopener noreferrer"&gt;Meta&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner&lt;/td&gt;
&lt;td&gt;Bluesky, an independent company&lt;/td&gt;
&lt;td&gt;Meta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post length&lt;/td&gt;
&lt;td&gt;300 characters, counted in graphemes&lt;/td&gt;
&lt;td&gt;500 characters, up to 5 links&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feed&lt;/td&gt;
&lt;td&gt;Following, plus custom feeds anyone can build and you choose between&lt;/td&gt;
&lt;td&gt;Algorithmic "For you" plus Following&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Native scheduling&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, since January 2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open protocol&lt;/td&gt;
&lt;td&gt;AT Protocol, designed so an account can move between servers&lt;/td&gt;
&lt;td&gt;Run by Meta&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read the two size figures with care: Bluesky counts accounts and Threads counts people active in a month. They are not the same measure, and the gap in active users is wider than the headline numbers suggest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Bluesky better than Threads?
&lt;/h2&gt;

&lt;p&gt;Not overall; it is better for some goals. Threads wins on reach, because its audience is many times larger and Meta's feed shows posts to people who do not follow you yet. Bluesky wins on control: you choose your feed, and its open protocol means your account and followers are not locked to one company's rules. For a business, the question is less which network is better and more where your buyers spend time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which is better for business, Bluesky or Threads?
&lt;/h2&gt;

&lt;p&gt;Threads, for most brands that want reach, because of its size and its place next to Instagram. Bluesky, when your buyers are already active there. Before choosing, search the terms your customers use on both networks and see where real conversations about them are happening; that tells you more than either platform's total.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Bluesky growing?
&lt;/h2&gt;

&lt;p&gt;Yes, but more slowly than Threads. By Bluesky's own count it grew from 25 million to 41 million users during 2025, and its users made 1.41 billion posts that year, 61% of all posts ever made on Bluesky. Threads added users faster: Meta reported 500 million monthly active users in June 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  How posting differs on each
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;On Bluesky,&lt;/strong&gt; 300 characters force one idea per post. Threads of several posts are common for anything longer. There is no schedule button in the app, so scheduling needs a tool; &lt;a href="https://skryvo.ai/blog/how-to-schedule-bluesky-posts/" rel="noopener noreferrer"&gt;how to schedule Bluesky posts&lt;/a&gt; covers the options, including signing in with an app password instead of your main password.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On Threads,&lt;/strong&gt; 500 characters leave room for a short story or a list. Mosseri announced &lt;a href="https://www.threads.com/@mosseri/post/DFLhrwRT8pC" rel="noopener noreferrer"&gt;native scheduling on January 23, 2025&lt;/a&gt;, so you can queue posts in the app itself.&lt;/p&gt;

&lt;p&gt;Do not paste the same text to both. A post written to fill 500 characters gets cut on Bluesky, and a 300-character post on Threads can feel thin. Check both lengths at once in the &lt;a href="https://skryvo.ai/tools/post-preview/" rel="noopener noreferrer"&gt;post preview tool&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you post to Bluesky and Threads at the same time?
&lt;/h2&gt;

&lt;p&gt;Yes, with a tool that publishes to both, or by scheduling each natively where you can. Skryvo publishes to Bluesky today, writing each channel's version to its own limit; its Threads connection is built and waiting for Meta's app review, so check &lt;a href="https://skryvo.ai/channels/threads/" rel="noopener noreferrer"&gt;the Threads channel page&lt;/a&gt; for its current status before you rely on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start where your readers already are
&lt;/h2&gt;

&lt;p&gt;Look at where people in your field already reply to each other, not where the follower counts are biggest. Post there for a month, measure the replies you get, and only then add the second network. Comparing Bluesky with X? See &lt;a href="https://skryvo.ai/blog/bluesky-vs-twitter/" rel="noopener noreferrer"&gt;Bluesky vs Twitter&lt;/a&gt;. Comparing Threads with X instead? See &lt;a href="https://skryvo.ai/blog/threads-vs-x/" rel="noopener noreferrer"&gt;Threads vs X&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/bluesky-vs-threads/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;. Drafted with AI assistance; every figure links to the source it comes from.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bluesky</category>
      <category>threads</category>
      <category>socialmedia</category>
    </item>
    <item>
      <title>Bluesky vs Twitter (X) in 2026: What Differs for a Brand</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Sat, 07 Nov 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/bluesky-vs-twitter-x-in-2026-what-differs-for-a-brand-3anp</link>
      <guid>https://dev.to/skryvo/bluesky-vs-twitter-x-in-2026-what-differs-for-a-brand-3anp</guid>
      <description>&lt;p&gt;Bluesky and X (Twitter) look alike: short posts, replies, reposts and a timeline. The differences that matter to a brand are underneath. Bluesky allows 300 characters, has no built-in scheduler, and runs on the open AT Protocol with custom feeds anyone can build. X allows 280 characters for most accounts, counts every link as 23 of them, and schedules posts in X Pro. Bluesky reported 41 million users at the end of 2025.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; post where your readers already are, and if that is both, write the idea twice: one line that lands in 280 characters for X, and one in 300 for Bluesky. Facts are from &lt;a href="https://docs.x.com/fundamentals/counting-characters" rel="noopener noreferrer"&gt;X's developer docs&lt;/a&gt;, &lt;a href="https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/post.json" rel="noopener noreferrer"&gt;Bluesky's post schema&lt;/a&gt; and &lt;a href="https://bsky.social/about/blog/01-29-2026-transparency-report-overview" rel="noopener noreferrer"&gt;Bluesky's 2025 transparency report&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bluesky vs Twitter at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;X (Twitter)&lt;/th&gt;
&lt;th&gt;Bluesky&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Characters per post&lt;/td&gt;
&lt;td&gt;280; paid tiers can post far longer&lt;/td&gt;
&lt;td&gt;300, counted in graphemes (an emoji is one)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images per post&lt;/td&gt;
&lt;td&gt;Up to 4&lt;/td&gt;
&lt;td&gt;Up to 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feed&lt;/td&gt;
&lt;td&gt;For You and Following&lt;/td&gt;
&lt;td&gt;Following, plus custom feeds anyone can build and you choose between&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built-in scheduling&lt;/td&gt;
&lt;td&gt;Yes, in X Pro&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network&lt;/td&gt;
&lt;td&gt;Run by X&lt;/td&gt;
&lt;td&gt;AT Protocol, designed so an account can move between servers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What is the character limit on Bluesky vs X?
&lt;/h2&gt;

&lt;p&gt;Bluesky allows 300 characters per post, counted in graphemes, so an emoji or an accented letter counts as one, with a hard cap of 3,000 bytes. X allows 280 for most accounts; emoji count as 2 and every link counts as 23 because X shortens it through t.co. Our &lt;a href="https://skryvo.ai/blog/social-media-character-limits/" rel="noopener noreferrer"&gt;character limits guide&lt;/a&gt; lists every network, and the &lt;a href="https://skryvo.ai/tools/post-preview/" rel="noopener noreferrer"&gt;post preview tool&lt;/a&gt; shows where a post breaks on each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you schedule posts on Bluesky and X?
&lt;/h2&gt;

&lt;p&gt;On X, yes, in X Pro: our guide to &lt;a href="https://skryvo.ai/blog/how-to-schedule-tweets/" rel="noopener noreferrer"&gt;scheduling a tweet&lt;/a&gt; has the steps. Bluesky has no schedule button, so you need a tool. Connect it through Bluesky's own sign-in or an app password, never your main password; &lt;a href="https://skryvo.ai/blog/how-to-schedule-bluesky-posts/" rel="noopener noreferrer"&gt;how to schedule Bluesky posts&lt;/a&gt; explains both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Bluesky better than Twitter for a brand?
&lt;/h2&gt;

&lt;p&gt;Neither is better everywhere. X has a built-in scheduler in X Pro; Bluesky lets readers choose custom feeds, so a niche audience can find you through a feed built for its topic, and its open protocol means your account is not tied to one company's servers. Check where your customers and peers actually post before you commit time to either.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you post to Bluesky and X at the same time?
&lt;/h2&gt;

&lt;p&gt;Yes, with a tool that publishes to both. Paste the same post into both and one of them will look wrong: a 295-character Bluesky post does not fit X, and X counts every link as 23 characters. Write a version for each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Posting to Bluesky and X from one place
&lt;/h2&gt;

&lt;p&gt;We make Skryvo, so read this with that in mind. Skryvo publishes to both Bluesky and X today: it writes a separate version of each post for each network, inside each limit and in your brand's voice, and publishes them on one calendar, from the app or from an AI agent such as Claude. See &lt;a href="https://skryvo.ai/channels/bluesky/" rel="noopener noreferrer"&gt;Skryvo for Bluesky&lt;/a&gt; and &lt;a href="https://skryvo.ai/channels/x/" rel="noopener noreferrer"&gt;Skryvo for X&lt;/a&gt;, and if you are also weighing Threads, read &lt;a href="https://skryvo.ai/blog/bluesky-vs-threads/" rel="noopener noreferrer"&gt;Bluesky vs Threads&lt;/a&gt; and &lt;a href="https://skryvo.ai/blog/threads-vs-x/" rel="noopener noreferrer"&gt;Threads vs X&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/bluesky-vs-twitter/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bluesky</category>
      <category>twitter</category>
      <category>socialmedia</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Reach vs Impressions: What Facebook, Instagram and X Count</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Fri, 06 Nov 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/reach-vs-impressions-what-facebook-instagram-and-x-count-4fl</link>
      <guid>https://dev.to/skryvo/reach-vs-impressions-what-facebook-instagram-and-x-count-4fl</guid>
      <description>&lt;p&gt;Reach is the number of people who saw your post at least once. Impressions are the number of times it appeared on a screen, counting repeat views, so impressions are always equal to or higher than reach. One person who sees a post three times adds 1 to reach and 3 to impressions. Facebook and Instagram now report &lt;strong&gt;Views&lt;/strong&gt; where they used to report impressions for most posts, counted the same way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; read reach to know how many people you got in front of, and impressions or views to know how often. Divide one by the other for frequency: 3,000 views over 1,000 reach means each person saw the post three times on average. Definitions are from &lt;a href="https://www.facebook.com/help/285625061456389" rel="noopener noreferrer"&gt;Facebook's Help Center&lt;/a&gt;, &lt;a href="https://creators.facebook.com/introducing-views-to-simplify-content" rel="noopener noreferrer"&gt;Meta's announcement of Views&lt;/a&gt;, the &lt;a href="https://developers.facebook.com/docs/instagram-platform/reference/instagram-media/insights" rel="noopener noreferrer"&gt;Instagram API docs&lt;/a&gt; and &lt;a href="https://docs.x.com/x-api/fundamentals/metrics" rel="noopener noreferrer"&gt;X's API docs&lt;/a&gt;, read on October 27, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reach vs impressions on each platform
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Reach&lt;/th&gt;
&lt;th&gt;Impressions or views&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Facebook&lt;/td&gt;
&lt;td&gt;"The number of people who saw any of your posts at least once." Estimated.&lt;/td&gt;
&lt;td&gt;Views replaced Impressions for Stories, photo and text posts in November 2024: times on a person's screen, including repeat views&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instagram&lt;/td&gt;
&lt;td&gt;"Number of unique Instagram users" who saw the post at least once. Estimated.&lt;/td&gt;
&lt;td&gt;Impressions deprecated for media created after July 2, 2024; Views counts "the total number of times" the post was played&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;td&gt;No separate reach metric in X's API&lt;/td&gt;
&lt;td&gt;Impressions: times the post appeared on a screen; "not unique", so one person viewing twice counts twice&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What is the difference between reach and impressions?
&lt;/h2&gt;

&lt;p&gt;Reach counts people; impressions count appearances. If 1,000 people each scroll past your post twice, reach is 1,000 and impressions are 2,000. Reach tells you how big your audience was; impressions tell you how much attention the post got in total. A post can have high impressions and modest reach when a small, engaged group sees it again and again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are impressions the same as views?
&lt;/h2&gt;

&lt;p&gt;On Facebook and Instagram, yes in practice: Meta announced on November 14, 2024 that "for Stories, photo or text posts, Views will replace Impressions", calculated as "the number of times they appear on a person's screen, including repeat views". On Reels and videos, what used to be Plays is now also called Views. Reach did not change. X still calls its count impressions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which is more important, reach or impressions?
&lt;/h2&gt;

&lt;p&gt;It depends on the goal. For awareness, such as a launch or an event, reach matters more: you want new people to see it. For a message that needs repetition, such as an offer that ends Friday, impressions and frequency matter too. For a business, neither is the result on its own: watch what people did after seeing it, such as clicks, replies, sign-ups or sales.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is reach lower than impressions?
&lt;/h2&gt;

&lt;p&gt;Because reach counts each person once and impressions count every time. A gap is normal; a very large gap means the same people keep seeing your posts and few new ones do. To widen reach, post at the hours your audience is active (our guides to &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-facebook/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;, &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-instagram/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; and &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-x/" rel="noopener noreferrer"&gt;X&lt;/a&gt; compare the studies), and write each post for the network it goes to rather than pasting one everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can reach be higher than impressions?
&lt;/h2&gt;

&lt;p&gt;Not in a correct report for the same post and period, since each person who is reached appears on screen at least once. Reach figures are estimated, though, so the two can disagree slightly in a dashboard, and totals across several posts or periods do not add up the same way: reach is deduplicated, impressions are not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tracking results across your channels
&lt;/h2&gt;

&lt;p&gt;We make Skryvo, so read this with that in mind. Skryvo publishes each post, reads it back from the platform to confirm it went live, and collects its results at 1 hour, 1 day and 7, 30, 60 and 90 days, so you can see which posts, channels and hours work best. Each platform reports its own metrics, and Skryvo shows what each one shares.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/reach-vs-impressions/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>socialmedia</category>
      <category>analytics</category>
      <category>marketing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Claude Connectors: How to Add One, Directory or Custom</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Thu, 05 Nov 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/claude-connectors-how-to-add-one-directory-or-custom-5bo1</link>
      <guid>https://dev.to/skryvo/claude-connectors-how-to-add-one-directory-or-custom-5bo1</guid>
      <description>&lt;p&gt;A Claude connector links Claude to another app, so Claude can read from it or act in it during a chat: your calendar, your docs, your issue tracker, or a publishing tool. Some connectors come from Claude's directory and connect in one click. Any other service that runs a remote MCP server can be added by its URL as a custom connector.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; to add a connector in Claude, go to &lt;strong&gt;Customize › Connectors&lt;/strong&gt; and click the &lt;strong&gt;+&lt;/strong&gt; next to Connectors. Pick one from the directory and click Connect, or choose &lt;strong&gt;Add custom connector&lt;/strong&gt; and paste the server's URL. Every plan can add custom connectors; the Free plan is limited to one. Turn a connector on per chat from the "+" menu, approve its actions as Claude asks, and remove it any time from the same Connectors page.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Claude connectors?
&lt;/h2&gt;

&lt;p&gt;Connectors are how Claude uses tools outside the chat. Under the hood most of them are MCP servers: MCP (Model Context Protocol) is the standard way an AI assistant calls an outside service's tools. A connector for a publishing tool, for example, might offer tools to list your channels, draft a post and schedule it. Claude decides when to call a tool, and you approve what it does.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I add connectors in Claude?
&lt;/h2&gt;

&lt;p&gt;From the directory, which &lt;a href="https://support.claude.com/en/articles/11724452-use-the-connectors-directory-to-extend-claude-s-capabilities" rel="noopener noreferrer"&gt;Anthropic's directory help page&lt;/a&gt; describes (checked October 21, 2026):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In a chat, click the &lt;strong&gt;+&lt;/strong&gt; at the lower left (or type &lt;strong&gt;/&lt;/strong&gt;), hover over &lt;strong&gt;Connectors&lt;/strong&gt; and choose &lt;strong&gt;Manage connectors&lt;/strong&gt;. From settings, go to &lt;strong&gt;Customize › Connectors&lt;/strong&gt; instead.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;+&lt;/strong&gt; next to &lt;strong&gt;Connectors&lt;/strong&gt; to open the directory.&lt;/li&gt;
&lt;li&gt;Open a connector's page, read what it can read and write, and click &lt;strong&gt;Connect&lt;/strong&gt; or &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Sign in to the service and approve its permissions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The service shows its own consent screen, which tells you what Claude will be allowed to do there. The service shows its own consent screen, which tells you what Claude will be allowed to do there. Skryvo is listed there, for instance: &lt;a href="https://claude.ai/directory/connectors/skryvo" rel="noopener noreferrer"&gt;its directory page&lt;/a&gt; connects in one click and then shows Skryvo's consent page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which connectors are in the directory?
&lt;/h2&gt;

&lt;p&gt;Anthropic's own examples include Linear for creating issues, Slack for sending messages and Google Drive for searching files, plus GitHub, Gmail, Google Calendar and Microsoft 365. Each listing says what the connector can read and write, so check that before you connect. For social media, Skryvo's connector writes posts in your brand's voice and schedules them to LinkedIn, X, Bluesky, Mastodon and your other connected channels after you approve each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I add a custom connector to Claude?
&lt;/h2&gt;

&lt;p&gt;A custom connector is any remote MCP server added by its URL. These are the steps from &lt;a href="https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-MCP" rel="noopener noreferrer"&gt;Anthropic's help article on custom connectors&lt;/a&gt;, for Free, Pro and Max accounts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Customize › Connectors&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add&lt;/strong&gt;, then &lt;strong&gt;Add custom connector&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter a name and the remote MCP server URL, then click &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Review the sign-in settings Claude detected and click &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Set the authentication, OAuth client and request headers if the server's docs ask for them.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Skryvo's URL, for example, is &lt;code&gt;https://api.skryvo.ai/mcp&lt;/code&gt;; &lt;a href="https://skryvo.ai/agents/claude/" rel="noopener noreferrer"&gt;the Claude setup page&lt;/a&gt; walks through it.&lt;/p&gt;

&lt;p&gt;To use it in a conversation, click the "+" button at the bottom left of the chat, open Connectors and switch it on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Claude plans can use custom connectors?
&lt;/h2&gt;

&lt;p&gt;Anthropic lists custom connectors for Free, Pro, Max, Team and Enterprise plans, on Claude, Claude Desktop and Cowork. Free accounts can add one custom connector. On Team and Enterprise, an Owner or Primary Owner adds it under &lt;strong&gt;Organization settings › Connectors&lt;/strong&gt; (Add, then Custom › Web), and each member then connects it from Customize › Connectors with their own account, so Claude only reaches what that person can access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you use Claude connectors on mobile?
&lt;/h2&gt;

&lt;p&gt;Yes. You can browse the directory in Claude for iOS and Android, and installing connectors there is in beta; Anthropic still calls desktop and web the main path for custom connectors. Once added, a connector works in every Claude app, because Claude reaches the service from Anthropic's cloud rather than from your phone or computer. That is also why a custom connector must be a remote server with a public URL: a local server configured in &lt;code&gt;claude_desktop_config.json&lt;/code&gt; is a separate setup that only Claude Desktop uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are Claude connectors safe?
&lt;/h2&gt;

&lt;p&gt;As safe as the server behind them. Anthropic's own advice, in short:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom connectors are not verified by Anthropic, so connect only servers you trust.&lt;/li&gt;
&lt;li&gt;Read the permissions on the service's sign-in screen before you approve.&lt;/li&gt;
&lt;li&gt;Choose "Allow always" only for tools you trust; otherwise approve each action.&lt;/li&gt;
&lt;li&gt;Turn off tools you do not need, and switch off tools that can write before using Research mode, which can call tools without asking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good connector also makes the risky step explicit. Skryvo's tools tell Claude to show you each post and wait for your go-ahead before scheduling it, and nothing is published without that step.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to remove a connector
&lt;/h2&gt;

&lt;p&gt;Go to Customize › Connectors and choose Remove (or the three dots next to the connector). You can also revoke access from the other service's own security settings, which cuts Claude off at the source. To change a custom connector's URL, remove it and add it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can you do with a connector? One worked example
&lt;/h2&gt;

&lt;p&gt;With Skryvo connected, Claude can work with your brands, connected channels, calendar and results. Things people ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Write a LinkedIn and Bluesky post about our launch week."&lt;/li&gt;
&lt;li&gt;"What is scheduled on my Skryvo calendar this week?"&lt;/li&gt;
&lt;li&gt;"Which channel and hour worked best for me last month?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same server works in Claude Code, ChatGPT, Cursor and other agents; &lt;a href="https://skryvo.ai/agents/" rel="noopener noreferrer"&gt;the agents page&lt;/a&gt; has the steps for each, and &lt;a href="https://skryvo.ai/blog/linkedin-mcp-server/" rel="noopener noreferrer"&gt;our LinkedIn MCP guide&lt;/a&gt; covers what to check before connecting anything to a social account.&lt;/p&gt;

&lt;p&gt;Start with one connector you will use every day, approve its actions by hand for a week, and only then decide which tools deserve "Allow always".&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/claude-connectors/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Fact-Check AI Content: A Five-Step Workflow</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Sat, 31 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/how-to-fact-check-ai-content-a-five-step-workflow-3104</link>
      <guid>https://dev.to/skryvo/how-to-fact-check-ai-content-a-five-step-workflow-3104</guid>
      <description>&lt;p&gt;To fact-check AI content, list every claim in the draft that could be wrong, find each one's primary source, check that the source says what the draft says and is still current, and cut whatever you cannot confirm. Looking for a citation is not enough: AI drafts cite real organisations for numbers those organisations never published.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; extract the checkable claims, demand the primary source, check the date, delete what you cannot verify, and keep a kill-list of claims you have already disproved. Search the exact number in quotes with the source's name, read the source itself rather than the blogs repeating it, and never ask the model that wrote the draft whether it is true. On a 1,200-word draft this takes me 15 to 20 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why fact-check AI content at all?
&lt;/h2&gt;

&lt;p&gt;Because fluency and accuracy are different products, and models are only paid in fluency. A language model completes the most plausible next sentence; when the truth is rare and the myth is common, the myth is more plausible. That is how you end up with statistics that sound right, are formatted right, and were never true.&lt;/p&gt;

&lt;p&gt;Here is what that looks like from our own work. In July, while researching Skryvo's email feature, three statistics kept surfacing in drafts and around the web: that AI-written emails are "47% less likely to get replies", that AI emails read as "more formal", and that they trigger "2.7x more spam flags". All three circulate widely. None survived a primary-source check — we could not trace a single one to a real study. They are now on a permanent kill-list in our pipeline, banned from our own marketing. That is the shape of the problem: the most repeatable "facts" are often the least verifiable. We later &lt;a href="https://skryvo.ai/blog/ai-making-up-statistics/" rel="noopener noreferrer"&gt;measured it across 186 claims in 20 AI-written posts&lt;/a&gt;. The same thing happens to numbers that are checkable but nobody checks — &lt;a href="https://skryvo.ai/blog/marketplace-title-limits-guides-get-wrong/" rel="noopener noreferrer"&gt;marketplace character limits are a whole genre of it&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you fact-check AI-generated content?
&lt;/h2&gt;

&lt;p&gt;The workflow I actually run, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Extract the checkable claims.&lt;/strong&gt; Numbers, dates, names, quotes, and every "studies show" sentence. If a claim could be wrong, it goes on the list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demand the primary source.&lt;/strong&gt; Not the blog that repeated it — the study, the documentation, the announcement. If the trail ends at another article citing another article, treat the claim as unverified.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the date.&lt;/strong&gt; A claim that was true in 2023 about model behavior, pricing, or platform rules is a coin flip today. Facts expire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete or soften what you cannot verify.&lt;/strong&gt; A cut claim costs you a sentence. A wrong one costs you the reader. "Many marketers report" is honest; "73% of marketers" without a source is a liability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a kill-list.&lt;/strong&gt; Refuted claims come back — models regenerate them and writers half-remember them. Write them down once so they die permanently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On a typical 1,200-word draft this takes me 15–20 minutes by hand. That cost is exactly why most publishers skip it — and why doing it is an advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which tools help you fact-check AI content?
&lt;/h2&gt;

&lt;p&gt;Free ones do most of the work. None of them replaces opening the source.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exact-match search.&lt;/strong&gt; Put the number in quotes with the source's name, for example &lt;code&gt;"47%" Mailchimp subject line&lt;/code&gt;. If every result is another blog repeating it, the figure has no home.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The site: operator.&lt;/strong&gt; &lt;code&gt;site:ahrefs.com zero traffic&lt;/code&gt; searches only the organisation the draft cites, so you find what it actually published.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lateral reading.&lt;/strong&gt; Leave the page and read what other sources say about the claim and the publisher, the method university libraries teach for checking AI output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://toolbox.google.com/factcheck/explorer" rel="noopener noreferrer"&gt;Google Fact Check Explorer&lt;/a&gt;.&lt;/strong&gt; Searches claims that professional fact-checkers have already reviewed. It is strongest on news and viral claims, weakest on industry statistics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Is AI accurate for fact-checking?
&lt;/h2&gt;

&lt;p&gt;Asking a model "is this true?" is asking the guessing machine to grade its own guess — do not trust it. Retrieval-grounded checking is a different thing entirely: extract the claim, run a live web search, and compare the claim against what real sources actually say. That works, because the verdict comes from the sources, not from the model's memory. It is how &lt;a href="https://skryvo.ai/features/" rel="noopener noreferrer"&gt;Skryvo's fact-check pass&lt;/a&gt; is built — every checkable claim gets searched, sources get attached to the draft, and anything unsupported gets flagged. The rule we hold it to: if it cannot verify a claim, it says so instead of hiding it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why accuracy is becoming a ranking advantage
&lt;/h2&gt;

&lt;p&gt;Google's guidance rewards &lt;a href="https://developers.google.com/search/docs/fundamentals/creating-helpful-content" rel="noopener noreferrer"&gt;people-first, trustworthy content&lt;/a&gt; regardless of how it was produced — and demonstrable accuracy is the trust signal a machine can actually evaluate. When two pages cover the same topic, the one with verifiable, sourced claims is the safer result to serve.&lt;/p&gt;

&lt;p&gt;The newer force is bigger: AI answer engines. When ChatGPT or Perplexity composes an answer, it cites a small number of sources it treats as reliable — and a page carrying a debunkable statistic is a risk those systems learn to skip. Getting cited by answer engines is the highest-intent traffic that exists, and accuracy is the entry fee. The same discipline that protects you from &lt;a href="https://skryvo.ai/blog/rank-ai-content-without-penalty/" rel="noopener noreferrer"&gt;the author E-E-A-T signals Google uses to evaluate trustworthiness&lt;/a&gt; is what makes you citable everywhere else.&lt;/p&gt;

&lt;p&gt;One wrong stat does more damage than a missing keyword ever could. Readers notice, competitors screenshot, and a reputation for being unreliable follows your domain around. This is why I treat fact-checking as an SEO tactic and not an ethics garnish — it compounds, in both directions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make it the workflow, not the extra step
&lt;/h2&gt;

&lt;p&gt;Manual checking gets skipped under deadline — that is human nature, not a discipline failure. The fix is structural: put verification inside the writing flow. In Skryvo the fact-check pass runs as part of generation, so claims arrive with sources attached and the unsupported ones arrive flagged; the same pipeline that &lt;a href="https://skryvo.ai/blog/why-ai-content-sounds-like-ai/" rel="noopener noreferrer"&gt;removes the tells that make AI writing sound like AI&lt;/a&gt; refuses to let unverified numbers through. However you implement it — a tool, a checklist taped to your monitor, a kill-list in a text file — make verification the default path.&lt;/p&gt;

&lt;p&gt;The web is about to be graded on accuracy at machine scale. Check your claims. Keep the receipts. Publish what survives.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/fact-checking-is-the-new-seo/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>writing</category>
      <category>contentwriting</category>
    </item>
    <item>
      <title>What Is AI Slop? Meaning, Examples and How to Spot It</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Fri, 30 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/what-is-ai-slop-meaning-examples-and-how-to-spot-it-4de4</link>
      <guid>https://dev.to/skryvo/what-is-ai-slop-meaning-examples-and-how-to-spot-it-4de4</guid>
      <description>&lt;p&gt;AI slop is low-quality content made in bulk with generative AI and published without anyone checking, editing or adding to it. Merriam-Webster chose "slop" as its &lt;a href="https://www.merriam-webster.com/wordplay/word-of-the-year" rel="noopener noreferrer"&gt;2025 Word of the Year&lt;/a&gt; and defines it as "digital content of low quality that is produced usually in quantity by means of artificial intelligence."&lt;/p&gt;

&lt;p&gt;You cannot reliably tell who wrote a page. &lt;a href="https://skryvo.ai/blog/are-ai-detectors-accurate/" rel="noopener noreferrer"&gt;Human raters identify AI text correctly only 19% of the time&lt;/a&gt; — at chance — and the detectors that do better misread non-native English writers as machine-made at a 61% rate. But you can tell whether a page is slop, because slop is not about authorship. It is about what is missing: no named human accountable for the content, no sources behind its claims, no evidence the author did or knew anything. Those three absences are checkable in under a minute. Whether a model did the typing is not. "Slop" is the word &lt;a href="https://simonwillison.net/2024/May/8/slop/" rel="noopener noreferrer"&gt;Simon Willison helped cement in 2024&lt;/a&gt; — slop is to AI what spam is to email — and we named our whole product strategy against it because the test is real and the problem is specific.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; AI slop is AI-generated content published without verification, editing, or any contribution from the publisher. It is identified by four signals — no named author, no sources, no first-hand experience, and the statistical voice of unedited output — with the first three doing the work. The fix is not avoiding AI; it is refusing to publish what was not improved by a human.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is defined as AI slop?
&lt;/h2&gt;

&lt;p&gt;AI slop is AI-generated content published as-is: fluent enough to fill a page, hollow enough to waste the reader's time, and produced at a volume only automation makes possible. The defining feature is not that a model wrote it — &lt;a href="https://skryvo.ai/blog/ai-vs-human-content/" rel="noopener noreferrer"&gt;most new web content now involves AI&lt;/a&gt; — but that no human added verification, judgment, or anything only they could know before hitting publish. Slop is a publishing decision, not a technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is it called AI slop?
&lt;/h2&gt;

&lt;p&gt;Because the word already meant waste. Merriam-Webster traces "slop" to the 1700s, when it meant soft mud, and to the 1800s, when it meant food waste, as in pig slop, and then anything of little value. Developers started using it for unwanted AI output, and Simon Willison's 2024 post gave it the comparison that stuck: slop is to AI what spam is to email. By the end of 2025 two dictionaries had made it official. Merriam-Webster picked "slop", and Australia's &lt;a href="https://www.macquariedictionary.com.au/macquarie-dictionary-word-of-the-year-for-2025/" rel="noopener noreferrer"&gt;Macquarie Dictionary picked "AI slop"&lt;/a&gt;, which its committee and the public vote both chose.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an example of AI slop?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search-bait articles with invented facts&lt;/strong&gt; — confident statistics that trace to no study. Our own fact-check pipeline maintains &lt;a href="https://skryvo.ai/blog/fact-checking-is-the-new-seo/" rel="noopener noreferrer"&gt;a fact-check workflow that traces stats to their source&lt;/a&gt;, including the ones that circulate widely and verify nowhere. When we measured it, &lt;a href="https://skryvo.ai/blog/ai-making-up-statistics/" rel="noopener noreferrer"&gt;six in ten claims in AI-written posts could not be confirmed&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The thousand-page programmatic blog&lt;/strong&gt; — every query permutation covered, nothing new said on any of them; the pattern Google's scaled-content-abuse policy targets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI images with garbled text&lt;/strong&gt; — six-fingered hands and melted logos shipped because nobody looked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy-paste social floods&lt;/strong&gt; — the same generated caption posted to five platforms verbatim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Workslop"&lt;/strong&gt; — AI-written reports and memos that look finished and leave a coworker to work out what they mean.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fake-expertise reviews&lt;/strong&gt; — "we tested" articles for products nobody touched.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How do I identify AI slop?
&lt;/h2&gt;

&lt;p&gt;Four signals, and they compound — three about the publisher's decisions, one about the prose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No named human accountable for the page.&lt;/strong&gt; No byline, no author profile, or a generic "Team" credit with no verifiable person behind it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No sources behind the claims.&lt;/strong&gt; Numbers and quotes that point to nothing, or links that lead to another blog that also points to nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No first-hand experience.&lt;/strong&gt; Nothing on the page required the author to have done, tested, or witnessed anything. Generic advice that fits any topic on any day is the shape of it.&lt;/p&gt;

&lt;p&gt;These three are the test. They identify a publishing failure, not a typing one — which is why they work where authorship detection does not.&lt;/p&gt;

&lt;p&gt;The fourth signal is the statistical voice: watermark words, uniform rhythm, symmetric structure. &lt;a href="https://skryvo.ai/blog/why-ai-content-sounds-like-ai/" rel="noopener noreferrer"&gt;The prose tells are countable&lt;/a&gt;, but they are weak on their own — &lt;a href="https://skryvo.ai/blog/are-ai-detectors-accurate/" rel="noopener noreferrer"&gt;human raters cannot reliably identify AI text&lt;/a&gt;, and a page can fail signals one through three while having perfectly varied prose. Signal four is confirming, not determining. One signal can be a false alarm; a page with all four is slop with near certainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does AI slop look like on social media?
&lt;/h2&gt;

&lt;p&gt;The same post on every network, written once and pasted everywhere. A LinkedIn post that opens with a one-line hook, then a stack of one-sentence paragraphs, then "Thoughts?" A thread that could have been written about any company in the industry. Social slop fails the same three checks as a slop article: no person behind it, no source for its claims, nothing the account could only know from its own work.&lt;/p&gt;

&lt;p&gt;The fix is the same too. Write one idea, then shape it for each network: a &lt;a href="https://skryvo.ai/blog/social-media-character-limits/" rel="noopener noreferrer"&gt;280-character limit on X and 3,000 on LinkedIn&lt;/a&gt; are different jobs, not the same post cut down. Put a real number or a real example from your own work in every post, and read it before it goes out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why publishing slop is a losing strategy
&lt;/h2&gt;

&lt;p&gt;The economics are seductive and the returns are collapsing. Google demotes it not by detecting AI but by &lt;a href="https://skryvo.ai/blog/rank-ai-content-without-penalty/" rel="noopener noreferrer"&gt;evaluating author credibility and substance directly&lt;/a&gt;. AI answer engines cite pages they can trust, and a page with unverifiable claims is a citation risk they learn to skip. Readers, meanwhile, have developed the fastest slop detector of all — they bounce in seconds and remember the domain. Slop does not just fail; it spends your site's reputation to fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use AI without making slop
&lt;/h2&gt;

&lt;p&gt;Keep the speed, add the gates. Verify every checkable claim against a real source before publishing. Run a &lt;a href="https://skryvo.ai/blog/ai-content-humanizer-what-actually-works/" rel="noopener noreferrer"&gt;humanization pass&lt;/a&gt; for the mechanical tells, then add the one thing per section only you know. Sign a real name to it. This is the entire thesis Skryvo is built on — &lt;a href="https://skryvo.ai/about/" rel="noopener noreferrer"&gt;the anti-slop bet&lt;/a&gt; — a pipeline where fact-checking, detection scoring, and humanization run before anything ships, so AI speed stops costing you reader trust.&lt;/p&gt;

&lt;p&gt;The web will keep filling with slop; that part is settled. The open question is whether your pages are distinguishable from it. Make them verifiable, make them yours, and the flood becomes your competitive advantage — because standing out has never been cheaper.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/what-is-ai-slop/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>writing</category>
      <category>contentwriting</category>
      <category>llm</category>
    </item>
    <item>
      <title>Social Media Character Limits From Each Platform's Docs</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Thu, 29 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/social-media-character-limits-from-each-platforms-docs-18fj</link>
      <guid>https://dev.to/skryvo/social-media-character-limits-from-each-platforms-docs-18fj</guid>
      <description>&lt;p&gt;X (Twitter) allows 280 characters per post and counts every link as 23 of them. LinkedIn allows 3,000. Bluesky allows 300, counted in graphemes, so an emoji is one. Each figure below comes from the platform's own documentation, linked in the table, and they are the same limits Skryvo writes to when it drafts a post for each channel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; X 280, Bluesky 300, Threads 500, Mastodon 500 by default, Pinterest descriptions 800 with 100-character titles, Instagram captions 2,200, Discord 2,000, LinkedIn 3,000, Telegram 4,096 (captions 1,024). To check a post against all of them at once, paste it into our &lt;a href="https://skryvo.ai/tools/post-preview/" rel="noopener noreferrer"&gt;free post preview and thread maker&lt;/a&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Limit&lt;/th&gt;
&lt;th&gt;How it counts&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;X (Twitter)&lt;/td&gt;
&lt;td&gt;280 per post&lt;/td&gt;
&lt;td&gt;Every link counts as 23&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.x.com/fundamentals/counting-characters" rel="noopener noreferrer"&gt;X docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluesky&lt;/td&gt;
&lt;td&gt;300 per post&lt;/td&gt;
&lt;td&gt;Graphemes, and at most 3,000 bytes&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/post.json" rel="noopener noreferrer"&gt;Post lexicon&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threads&lt;/td&gt;
&lt;td&gt;500 per post&lt;/td&gt;
&lt;td&gt;Up to 5 links&lt;/td&gt;
&lt;td&gt;&lt;a href="https://developers.facebook.com/docs/threads/posts" rel="noopener noreferrer"&gt;Threads API&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mastodon&lt;/td&gt;
&lt;td&gt;500 by default&lt;/td&gt;
&lt;td&gt;Characters&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.joinmastodon.org/user/posting/" rel="noopener noreferrer"&gt;Mastodon docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pinterest&lt;/td&gt;
&lt;td&gt;800 description, 100 title&lt;/td&gt;
&lt;td&gt;Characters&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/pinterest/api-description" rel="noopener noreferrer"&gt;Pinterest API spec&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instagram&lt;/td&gt;
&lt;td&gt;2,200 caption&lt;/td&gt;
&lt;td&gt;Also up to 5 hashtags (since December 2025) and 20 @ tags; see &lt;a href="https://skryvo.ai/blog/instagram-hashtag-limit/" rel="noopener noreferrer"&gt;the hashtag limit&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user/media" rel="noopener noreferrer"&gt;Instagram API&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discord&lt;/td&gt;
&lt;td&gt;2,000 per message&lt;/td&gt;
&lt;td&gt;Characters&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.discord.com/developers/resources/message" rel="noopener noreferrer"&gt;Discord docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LinkedIn&lt;/td&gt;
&lt;td&gt;3,000 per post&lt;/td&gt;
&lt;td&gt;Characters&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.linkedin.com/help/linkedin/answer/a528176" rel="noopener noreferrer"&gt;LinkedIn Help&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telegram&lt;/td&gt;
&lt;td&gt;4,096 per message&lt;/td&gt;
&lt;td&gt;Captions on photos: 1,024&lt;/td&gt;
&lt;td&gt;&lt;a href="https://core.telegram.org/bots/api" rel="noopener noreferrer"&gt;Bot API&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What is the character limit on X (Twitter)?
&lt;/h2&gt;

&lt;p&gt;280 characters per post. X runs every link through its t.co shortener, so a link counts as 23 characters whether it is 20 characters long or 200. Emoji and Chinese, Japanese or Korean characters count as 2; our &lt;a href="https://skryvo.ai/tools/x-character-counter/" rel="noopener noreferrer"&gt;Twitter character counter&lt;/a&gt; applies X's rules as you type. Subscribers to X's paid tiers can post far longer; Twitter first raised that to 25,000 characters for subscribers in 2023.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does Twitter still have a 140 character limit?
&lt;/h2&gt;

&lt;p&gt;No. Twitter doubled the limit to 280 in November 2017, and 280 is still the limit for most accounts on X.&lt;/p&gt;

&lt;h2&gt;
  
  
  How many characters can a LinkedIn post have?
&lt;/h2&gt;

&lt;p&gt;3,000. LinkedIn's help page says that for anything longer you should write an article instead. In practice the opening lines carry the post, because long posts are folded in the feed until someone expands them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the character limit on Bluesky?
&lt;/h2&gt;

&lt;p&gt;300 graphemes. A grapheme is what you see as one character, so an emoji with a skin tone, which is several code points under the hood, counts as one. The same post also has a hard ceiling of 3,000 bytes, which matters only for text heavy with emoji or non-Latin scripts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the character limit on Threads and Mastodon?
&lt;/h2&gt;

&lt;p&gt;Both default to 500. Threads also caps a post at 5 links; if you are choosing between the two short-post networks, &lt;a href="https://skryvo.ai/blog/bluesky-vs-threads/" rel="noopener noreferrer"&gt;Bluesky vs Threads&lt;/a&gt; compares them, and &lt;a href="https://skryvo.ai/blog/how-to-schedule-bluesky-posts/" rel="noopener noreferrer"&gt;how to schedule Bluesky posts&lt;/a&gt; covers the 300-character side. On Mastodon, 500 is the default that the Mastodon software ships with; the server you are on decides, so check your server's composer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why one post rarely fits everywhere
&lt;/h2&gt;

&lt;p&gt;A 600-character LinkedIn post is over the limit on X, Bluesky, Threads and Mastodon. You can cut it four times, split it into a thread, or write a version per network. We built Skryvo to do the last one: it writes a separate version of the post for each channel you publish to, within that channel's limit and in your brand's voice, then schedules them on one calendar. If you write the versions yourself, the &lt;a href="https://skryvo.ai/tools/post-preview/" rel="noopener noreferrer"&gt;post preview tool&lt;/a&gt; shows where each one breaks, &lt;a href="https://skryvo.ai/blog/how-to-schedule-tweets/" rel="noopener noreferrer"&gt;our guide to scheduling X posts&lt;/a&gt; covers threads, and &lt;a href="https://skryvo.ai/blog/best-time-to-post-on-x/" rel="noopener noreferrer"&gt;the best time to post on X&lt;/a&gt; compares three studies.&lt;/p&gt;

&lt;p&gt;Write for the shortest network first, then let the longer ones have the detail.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/social-media-character-limits/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>socialmedia</category>
      <category>unicode</category>
      <category>reference</category>
    </item>
    <item>
      <title>How to Schedule Bluesky Posts and Threads</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Wed, 28 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/skryvo/how-to-schedule-bluesky-posts-and-threads-3h43</link>
      <guid>https://dev.to/skryvo/how-to-schedule-bluesky-posts-and-threads-3h43</guid>
      <description>&lt;p&gt;As of October 2026 the Bluesky app has no schedule button, so scheduling a Bluesky post means using a tool that publishes it for you at the time you pick. The tool connects to your account through Bluesky's own sign-in or an app password, never your main password. This guide covers both ways in, threads, and the limits a scheduled post must fit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; connect a scheduler with Bluesky's sign-in (or an app password from Bluesky → Settings → App Passwords), write the post or thread within 300 characters per post and up to 4 images, and pick a time. Revoke the app password in Bluesky's settings whenever you stop using the tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you schedule posts on Bluesky?
&lt;/h2&gt;

&lt;p&gt;Not inside the Bluesky app itself today. Bluesky publishes a post the moment you send it, so any scheduling happens in a separate tool that holds the post and sends it through Bluesky's API at the chosen time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting a scheduler: sign-in or app password
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bluesky sign-in (OAuth).&lt;/strong&gt; The tool sends you to Bluesky to approve access. You never type a password into the tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App password.&lt;/strong&gt; In Bluesky, open Settings › App Passwords and create one for the tool. It is not your account password, it is shown once, and you can delete it any time to cut the tool off.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Never give a scheduling tool your main Bluesky password. If a tool asks for it, use another tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bluesky post limits a scheduled post must fit
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Limit&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Text per post&lt;/td&gt;
&lt;td&gt;300 characters (graphemes), and at most 3,000 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images per post&lt;/td&gt;
&lt;td&gt;Up to 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Size per image&lt;/td&gt;
&lt;td&gt;Up to 2,000,000 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The text limits come from Bluesky's &lt;a href="https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/post.json" rel="noopener noreferrer"&gt;post lexicon&lt;/a&gt;; an emoji counts as one character. Paste a draft into our &lt;a href="https://skryvo.ai/tools/post-preview/" rel="noopener noreferrer"&gt;post preview tool&lt;/a&gt; to count it the way Bluesky does.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to schedule a Bluesky thread
&lt;/h2&gt;

&lt;p&gt;Write the whole thread first, with each part under 300 characters. A scheduler then posts the first part and replies to it with each following part, in order, so the thread appears at once at the time you chose. Our thread maker splits a long post into numbered parts that fit, keeping whole sentences together where it can.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scheduling Bluesky posts in Skryvo
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;In Skryvo, open Settings › Connected accounts and choose Bluesky. Sign in with Bluesky, or paste an app password.&lt;/li&gt;
&lt;li&gt;Write the post or thread, or let Skryvo draft it in your brand's voice for Bluesky's length.&lt;/li&gt;
&lt;li&gt;Pick a time on the calendar. Skryvo posts it on that quarter hour, reads it back from Bluesky to confirm it is live, and collects its results.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The same idea can go to LinkedIn, X and Mastodon as their own versions, and an AI agent such as Claude can do the scheduling for you. &lt;a href="https://skryvo.ai/channels/bluesky/" rel="noopener noreferrer"&gt;Bluesky in Skryvo&lt;/a&gt; lists what it posts today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is it safe to use a Bluesky scheduler?
&lt;/h2&gt;

&lt;p&gt;Yes, if it connects through Bluesky's sign-in or an app password. Both can be revoked without changing your main password, which is exactly why Bluesky offers them. Check that the tool shows you what went out and when, so a failed post does not go unnoticed.&lt;/p&gt;

&lt;p&gt;Schedule the posts you already know you will write, keep the replies live, and delete the app password the day you stop using the tool. Still choosing a network? &lt;a href="https://skryvo.ai/blog/bluesky-vs-threads/" rel="noopener noreferrer"&gt;Bluesky vs Threads&lt;/a&gt; compares the two on size, length and scheduling.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/how-to-schedule-bluesky-posts/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bluesky</category>
      <category>socialmedia</category>
      <category>api</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>VS Code MCP: Add MCP Servers to GitHub Copilot</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Tue, 27 Oct 2026 15:25:25 +0000</pubDate>
      <link>https://dev.to/skryvo/vs-code-mcp-add-mcp-servers-to-github-copilot-1c71</link>
      <guid>https://dev.to/skryvo/vs-code-mcp-add-mcp-servers-to-github-copilot-1c71</guid>
      <description>&lt;p&gt;VS Code lets GitHub Copilot's agent use MCP (Model Context Protocol) servers: tools for a browser, a database, your issue tracker or a publishing service. VS Code changed where these servers live on October 21, 2026, so older guides that start with &lt;code&gt;.vscode/mcp.json&lt;/code&gt; are now describing the format VS Code calls deprecated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; run &lt;strong&gt;MCP: Add Server&lt;/strong&gt; from the Command Palette, choose &lt;strong&gt;HTTP&lt;/strong&gt; for a URL or &lt;strong&gt;Command (stdio)&lt;/strong&gt; for a local program, and give it an ID. Your servers now go in the Copilot user file &lt;code&gt;~/.copilot/mcp-config.json&lt;/code&gt;, under &lt;code&gt;"mcpServers"&lt;/code&gt;. Manage them with &lt;strong&gt;MCP: List Servers&lt;/strong&gt;, which also shows each server's output when something fails. Everything below is from &lt;a href="https://code.visualstudio.com/docs/copilot/customization/mcp-servers" rel="noopener noreferrer"&gt;VS Code's MCP documentation&lt;/a&gt;, updated October 21, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I add an MCP server to VS Code?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the Command Palette and run &lt;strong&gt;MCP: Add Server&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;HTTP&lt;/strong&gt; and paste the server's URL, or &lt;strong&gt;Command (stdio)&lt;/strong&gt; and enter the command that starts it.&lt;/li&gt;
&lt;li&gt;Enter a server ID that is not already used.&lt;/li&gt;
&lt;li&gt;Approve any trust or sign-in prompt, after reading what it asks for.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To browse servers instead, search &lt;code&gt;@mcp&lt;/code&gt; in the Extensions view and choose &lt;strong&gt;Install&lt;/strong&gt; for yourself or &lt;strong&gt;Install in Workspace&lt;/strong&gt; to share it with the project, or pick &lt;strong&gt;MCP: Add Server › Browse MCP Servers...&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where is the VS Code MCP config file now?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copilot user file:&lt;/strong&gt; &lt;code&gt;~/.copilot/mcp-config.json&lt;/code&gt; (or &lt;code&gt;$COPILOT_HOME/mcp-config.json&lt;/code&gt;). Supports stdio, HTTP and SSE servers and a working directory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workspace &lt;code&gt;.mcp.json&lt;/code&gt;&lt;/strong&gt; at the project root, when the experimental setting &lt;code&gt;chat.mcp.workspaceRootConfig.enabled&lt;/code&gt; is on. Stdio and HTTP only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.vscode/mcp.json&lt;/code&gt; and the user-profile &lt;code&gt;mcp.json&lt;/code&gt;&lt;/strong&gt; still work but are marked deprecated in the guided flow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two newer files use the portable format with a top-level &lt;code&gt;"mcpServers"&lt;/code&gt; object, the same shape Claude Code and Cursor use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"playwright"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@playwright/mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The older VS Code format uses &lt;code&gt;"servers"&lt;/code&gt; instead, with &lt;code&gt;"type": "stdio"&lt;/code&gt;, &lt;code&gt;"http"&lt;/code&gt; or &lt;code&gt;"sse"&lt;/code&gt; on each entry. Do not copy entries between the two formats without changing that top-level key.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I keep API keys out of the config?
&lt;/h2&gt;

&lt;p&gt;In the VS Code format, declare an input and reference it; VS Code asks for the value the first time the server starts and stores it securely:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"inputs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"promptString"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-token"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"API token"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"password"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"servers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"example"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.example.com/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer ${input:api-token}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two limits to know: the portable files do not support input variables or environment files, and servers that need an interactive input are not forwarded to Copilot harness sessions. Servers that sign in with OAuth avoid both problems, because no token sits in any file. Never commit a file with a real token in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I start, stop or debug an MCP server?
&lt;/h2&gt;

&lt;p&gt;Run &lt;strong&gt;MCP: List Servers&lt;/strong&gt;, pick a server, and choose Start, Stop, Restart, Enable or Disable, Uninstall, or &lt;strong&gt;Show Output&lt;/strong&gt; for its log. VS Code's own troubleshooting list, in short:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A stdio server will not start:&lt;/strong&gt; check the command, its arguments, that the runtime is installed, and &lt;code&gt;PATH&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Docker server fails:&lt;/strong&gt; do not run the container detached (&lt;code&gt;-d&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An HTTP server fails:&lt;/strong&gt; check the URL, network access and the sign-in steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startup is blocked by trust:&lt;/strong&gt; workspace servers follow Workspace Trust; other servers ask separately, and &lt;strong&gt;MCP: Reset Trust&lt;/strong&gt; clears those answers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools do not show up:&lt;/strong&gt; check the server is enabled and exposes them, under &lt;strong&gt;Chat: Open Customizations › Tools&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After a fix, restart the server and check a real tool result, not just that it started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do my MCP servers sync between machines?
&lt;/h2&gt;

&lt;p&gt;Only the user-profile &lt;code&gt;mcp.json&lt;/code&gt; syncs, when Settings Sync has &lt;strong&gt;MCP Servers&lt;/strong&gt; selected. The Copilot user &lt;code&gt;mcp-config.json&lt;/code&gt; and workspace &lt;code&gt;.mcp.json&lt;/code&gt; do not. In a dev container, put servers under &lt;code&gt;customizations.vscode.mcp&lt;/code&gt; in &lt;code&gt;devcontainer.json&lt;/code&gt;. Companies can limit which servers are allowed through GitHub's enterprise MCP allowlist, and local settings cannot override it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example: posting from VS Code
&lt;/h2&gt;

&lt;p&gt;Run &lt;strong&gt;MCP: Add Server › HTTP&lt;/strong&gt;, paste &lt;code&gt;https://api.skryvo.ai/mcp&lt;/code&gt;, name it &lt;code&gt;skryvo&lt;/code&gt; and sign in when asked. Then ask Copilot: "Use the Skryvo MCP server to write a LinkedIn post about the release we just merged and schedule it for Tuesday at 9am." It drafts the post in your brand's voice and Skryvo schedules it only after you approve. &lt;a href="https://skryvo.ai/agents/vscode/" rel="noopener noreferrer"&gt;The VS Code setup page&lt;/a&gt; has the details; the same server works in &lt;a href="https://skryvo.ai/blog/claude-code-mcp/" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, &lt;a href="https://skryvo.ai/blog/cursor-mcp/" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt; and &lt;a href="https://skryvo.ai/blog/codex-mcp/" rel="noopener noreferrer"&gt;Codex&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Put new servers in the Copilot user file, keep tokens behind inputs or OAuth, and use Show Output before guessing why a tool is quiet.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/vscode-mcp/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>mcp</category>
      <category>githubcopilot</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Gemini CLI MCP and Extensions After the Antigravity Move</title>
      <dc:creator>Skryvo AI</dc:creator>
      <pubDate>Tue, 27 Oct 2026 15:22:40 +0000</pubDate>
      <link>https://dev.to/skryvo/gemini-cli-mcp-and-extensions-after-the-antigravity-move-2aa7</link>
      <guid>https://dev.to/skryvo/gemini-cli-mcp-and-extensions-after-the-antigravity-move-2aa7</guid>
      <description>&lt;p&gt;If you set up MCP servers or extensions in Gemini CLI, the ground moved under you: on June 18, 2026, Google stopped serving Gemini CLI for free, Google AI Pro and Google AI Ultra users and moved them to Antigravity CLI. Gemini CLI still runs for some accounts, and its MCP setup still matters for them. This guide covers both, from &lt;a href="https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/" rel="noopener noreferrer"&gt;Google's announcement&lt;/a&gt;, the &lt;a href="https://geminicli.com/docs/tools/mcp-server/" rel="noopener noreferrer"&gt;Gemini CLI docs&lt;/a&gt; and the &lt;a href="https://antigravity.google/docs/mcp" rel="noopener noreferrer"&gt;Antigravity docs&lt;/a&gt;, checked October 22, 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; on a personal plan, use Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;): put MCP servers in &lt;code&gt;~/.gemini/config/mcp_config.json&lt;/code&gt;, use &lt;code&gt;serverUrl&lt;/code&gt; for remote ones, and open &lt;code&gt;/mcp&lt;/code&gt; to manage them; &lt;code&gt;agy plugin import gemini&lt;/code&gt; converts old extensions. On a Gemini Code Assist Standard or Enterprise license, or with a paid API key, Gemini CLI still works: &lt;code&gt;gemini mcp add&lt;/code&gt; adds a server and &lt;code&gt;gemini extensions install&lt;/code&gt; adds an extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can I still use Gemini CLI?
&lt;/h2&gt;

&lt;p&gt;Google's announcement says Gemini CLI and the Gemini Code Assist IDE extensions stopped serving requests on June 18, 2026 for Google AI Pro, Google AI Ultra and free individual users. It keeps working for Gemini Code Assist Standard and Enterprise licenses, for Gemini Code Assist for GitHub through Google Cloud, and with paid Gemini and Gemini Enterprise Agent Platform API keys. Everyone else moves to Antigravity CLI, which keeps skills, hooks, subagents and extensions, the last now called Antigravity plugins.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I add an MCP server to Gemini CLI?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gemini mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http my-server https://api.example.com/mcp/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pattern is &lt;code&gt;gemini mcp add [options] &amp;lt;name&amp;gt; &amp;lt;command or url&amp;gt;&lt;/code&gt;. The default transport is stdio; use &lt;code&gt;--transport http&lt;/code&gt; for a remote server, &lt;code&gt;-e KEY=value&lt;/code&gt; for environment variables, &lt;code&gt;-H&lt;/code&gt; for headers and &lt;code&gt;--scope user&lt;/code&gt; to make it available everywhere (the default scope is the project). Servers are stored under &lt;code&gt;mcpServers&lt;/code&gt; in &lt;code&gt;~/.gemini/settings.json&lt;/code&gt; or the project's &lt;code&gt;.gemini/settings.json&lt;/code&gt;, where a remote server's address is &lt;code&gt;httpUrl&lt;/code&gt;. &lt;code&gt;gemini mcp list&lt;/code&gt; shows them, &lt;code&gt;gemini mcp remove &amp;lt;name&amp;gt;&lt;/code&gt; deletes one, and &lt;code&gt;/mcp&lt;/code&gt; inside Gemini CLI shows each server's status and tools; &lt;code&gt;/mcp auth &amp;lt;name&amp;gt;&lt;/code&gt; signs in to a server that uses OAuth.&lt;/p&gt;

&lt;p&gt;Two details that trip people up: name servers with dashes, not underscores, because tool names become &lt;code&gt;mcp_{server}_{tool}&lt;/code&gt; and the policy parser splits on underscores; and only set &lt;code&gt;trust&lt;/code&gt; on a server you would let run without asking, because it skips every confirmation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Gemini CLI extensions?
&lt;/h2&gt;

&lt;p&gt;An extension bundles MCP servers, commands, context files and settings into one install. Each has a &lt;code&gt;gemini-extension.json&lt;/code&gt; manifest in its root and lives in &lt;code&gt;~/.gemini/extensions&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gemini extensions &lt;span class="nb"&gt;install &lt;/span&gt;https://github.com/gemini-cli-extensions/workspace
gemini extensions list
gemini extensions update &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gemini CLI copies an extension when it installs it, so run &lt;code&gt;gemini extensions update&lt;/code&gt; to pick up changes; &lt;code&gt;--auto-update&lt;/code&gt; at install time does it for you. Browse published extensions at &lt;a href="https://geminicli.com/extensions/browse/" rel="noopener noreferrer"&gt;the extensions gallery&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I add an MCP server to Antigravity CLI?
&lt;/h2&gt;

&lt;p&gt;Antigravity reads MCP servers from &lt;code&gt;~/.gemini/config/mcp_config.json&lt;/code&gt;, or &lt;code&gt;.agents/mcp_config.json&lt;/code&gt; in a workspace. A remote server uses &lt;code&gt;serverUrl&lt;/code&gt;; Antigravity does not accept the old &lt;code&gt;url&lt;/code&gt; or &lt;code&gt;httpUrl&lt;/code&gt; keys:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"my-remote-server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"serverUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.example.com/mcp/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer YOUR_API_TOKEN"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"sqlite-explorer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"/usr/local/bin/sqlite-mcp-server.js"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"SQLITE_DB_PATH"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/var/data/app.db"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart &lt;code&gt;agy&lt;/code&gt; after editing the file, then type &lt;code&gt;/mcp&lt;/code&gt; to open the MCP manager and check each server. Prefer OAuth over a token in &lt;code&gt;headers&lt;/code&gt; where the server offers it, so no secret sits in the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I move my Gemini CLI setup to Antigravity CLI?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;agy&lt;/code&gt;. On first launch it finds your Gemini CLI profile and lists the extensions and settings it can convert; tick the ones you want.&lt;/li&gt;
&lt;li&gt;Or convert later with &lt;code&gt;agy plugin import gemini&lt;/code&gt;. Extensions become Antigravity plugins and skills, and MCP servers move from &lt;code&gt;settings.json&lt;/code&gt; into &lt;code&gt;mcp_config.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;mcp_config.json&lt;/code&gt; and change any remote server's &lt;code&gt;url&lt;/code&gt; or &lt;code&gt;httpUrl&lt;/code&gt; to &lt;code&gt;serverUrl&lt;/code&gt; if the import did not.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;/mcp&lt;/code&gt; and sign in again to servers that use OAuth.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Google says there is not one-to-one feature parity yet, so check each server's tools after the move rather than assuming they all came across.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example: posting from Antigravity CLI
&lt;/h2&gt;

&lt;p&gt;Skryvo is a remote MCP server for social media. In Antigravity CLI, add it to &lt;code&gt;~/.gemini/config/mcp_config.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"skryvo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"serverUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.skryvo.ai/mcp"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;/mcp&lt;/code&gt; to sign in, then ask "Write a Bluesky post about our new docs and schedule it for Thursday at 2pm." It drafts the post in your brand's voice and Skryvo schedules it only after you approve. On Gemini CLI, &lt;code&gt;gemini extensions install https://github.com/Skryvo/agent&lt;/code&gt; adds the same server. &lt;a href="https://skryvo.ai/agents/gemini/" rel="noopener noreferrer"&gt;The Gemini setup page&lt;/a&gt; has both routes, and the same server works in &lt;a href="https://skryvo.ai/blog/claude-code-mcp/" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, &lt;a href="https://skryvo.ai/blog/codex-mcp/" rel="noopener noreferrer"&gt;Codex&lt;/a&gt; and &lt;a href="https://skryvo.ai/blog/cursor-mcp/" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you are on a personal plan, move now: write your servers into &lt;code&gt;mcp_config.json&lt;/code&gt; with &lt;code&gt;serverUrl&lt;/code&gt;, import your extensions once, and check &lt;code&gt;/mcp&lt;/code&gt; before trusting the move.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://skryvo.ai/blog/gemini-cli-mcp/" rel="noopener noreferrer"&gt;skryvo.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gemini</category>
      <category>mcp</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
