karokit is an unofficial Python client/scraper for karotter.com, with twikit-style compatibility methods.
Repository: appipinopi/karokit
- Login/session support (access token, refresh token, CSRF, cookie export/import)
- Read APIs: timeline, post detail, search, trends, users, notifications, DMs
- Write APIs: create post, like, rekarot, bookmark, react, vote, follow, block, mute
- Extended action APIs: quotes/likes list, analytics, grouped notifications, follow requests
- Realtime support via Socket.IO (
notification,dd.newMessage) - Twikit-style aliases (
create_tweet,favorite_tweet,retweet,search_tweet) - Paid-plan readiness (
set_paid_plan,payment_retry_hook)
pip install karokitDevelopment install from source:
pip install -r requirements.txt
pip install -e .import asyncio
from karokit import Client
async def main() -> None:
client = Client(locale="ja-JP")
await client.login(identifier="YOUR_ID_OR_EMAIL", password="YOUR_PASSWORD")
await client.create_karot("Hello from karokit")
await client.like_post(12345)
await client.follow_user(67890)
data = await client.get_timeline(page=1, mode="following")
print(data)
await client.close()
asyncio.run(main())import asyncio
from karokit import Client, StreamingClient
async def main() -> None:
client = Client()
await client.login(identifier="YOUR_ID_OR_EMAIL", password="YOUR_PASSWORD")
stream = StreamingClient(client)
async for notif in stream.realtime_notifications():
print("notification:", notif)
asyncio.run(main())- Post:
create_post,update_post,delete_post,record_post_views - Engagement:
like_post,rekarot_post,bookmark_post,react_to_post,vote_post_poll - Follow:
follow_user,unfollow_user,remove_follower,accept_follow_request - Notifications:
get_notifications,get_grouped_post_notifications,get_unread_notification_count - DM:
get_dm_groups,get_dm_messages,send_dm_message,send_dm - Realtime:
StreamingClient.realtime_notifications,StreamingClient.realtime_dm_messages
If Karotter introduces paid plans, configure extra entitlement headers:
client.set_paid_plan(
"pro",
entitlement_token="YOUR_TOKEN",
extra_headers={"x-your-plan-header": "value"},
)402raisesPaidPlanRequiredErrorclient.payment_retry_hookcan retry after entitlements are refreshed
- This project does not implement illegal bypass/fraud behavior.
- Use rate limits, normal browser-identical headers, and valid authentication only.
- Follow Karotter terms and applicable laws.