diff --git a/public/auth.php b/public/auth.php
index 193ce37b6ba86c05fdf185c8ea05d5e7b9ccc4f2..504c46d88b893ab5d0bea0a3f2f0bfb6cfe040d1 100644
--- a/public/auth.php
+++ b/public/auth.php
@@ -18,10 +18,11 @@ $options = [
     'scope' => [
         'playlist-read-private',
         'playlist-modify-private',
+        'playlist-modify-public',
         'user-read-private',
     ],
     'state' => $state,
 ];
 
-header('Location: ' . $session->getAuthorizeUrl($options));
+header('Location: '.$session->getAuthorizeUrl($options));
 die();
diff --git a/public/index.php b/public/index.php
index 923f16c985a3ae0a9d27df59ede7d5f8aafaaf41..51e136a2071825fa679d8dcba2f25fc8ca7ed9fc 100644
--- a/public/index.php
+++ b/public/index.php
@@ -25,7 +25,8 @@ if (!$accessToken) {
 
 $session = new SpotifyWebAPI\Session(
     $CLIENT_ID,
-    $CLIENT_SECRET
+    $CLIENT_SECRET,
+    $REDIRECT_URI
 );
 
 // Use previously requested tokens fetched from session
@@ -37,15 +38,14 @@ if ($accessToken) {
     $session->refreshAccessToken($refreshToken);
 }
 
-$scopes = $session->getScope();
-
 $options = [
   'scope' => [
       'playlist-read-private',
       'playlist-modify-private',
+      'playlist-modify-public',
       'user-read-private',
   ],
-'auto_refresh' => true,
+  'auto_refresh' => true,
 ];
 
 $api = new SpotifyWebAPI\SpotifyWebAPI($options, $session);
@@ -59,12 +59,62 @@ $_SESSION['refreshToken'] = $session->getRefreshToken();
 $user = $api->me();
 
 $templateData = [];
-
 $templateData['user'] = $user;
 $templateData['userImageUrl'] = '';
 if ($user->images[0]) {
     $templateData['userImageUrl'] = $user->images[0]->url;
 }
-$templateData['playlists'] = $api->getUserPlaylists($user->id)->items;
+
+$templateData['infos'] = [];
+$templateData['errors'] = [];
+
+$selectedPlaylistId = '';
+if (isset($_GET['playlist'])) {
+    $selectedPlaylistId = $_GET['playlist'];
+}
+
+$templateData['playlists'] = [];
+
+if ($selectedPlaylistId) {
+    $playlist = $api->getPlaylist($selectedPlaylistId);
+    error_log('Will create new playlist from tracks in playlist '.$selectedPlaylistId.' "'.$playlist->name.'".');
+    $recommendedTrackIds = [];
+    $playlistTracks = $playlist->tracks->items;
+    error_log('Found '.count($playlistTracks).' tracks.');
+    foreach ($playlistTracks as $track) {
+        $artists = [];
+        foreach ($track->track->artists as $artist) {
+            $artists[] = $artist->name;
+        }
+        error_log('Track '.$track->track->id.' "'.$track->track->name.'" ('.join(', ', $artists).')');
+
+        $recommendations = $api->getRecommendations([
+            'seed_tracks' => [$track->track->id],
+            'limit' => 20
+        ]);
+        error_log(' -> Got '.count($recommendations->tracks).' recommendatations.');
+        foreach ($recommendations->tracks as $recommendedTrack) {
+            $recommendedTrackIds[$recommendedTrack->id] = 1;
+        }
+    }
+    $recommendedTrackIds = array_keys($recommendedTrackIds);
+    error_log('=> Got '.count($recommendedTrackIds).' unique recommendatations for this playlist.');
+    shuffle($recommendedTrackIds);
+    $pickedTrackIds = array_slice($recommendedTrackIds, 0, 50);
+    error_log('Keep '.count($pickedTrackIds).' tracks.');
+
+    $now = new DateTime();
+    $newPlaylistName = 'Fresh playlist ['.$now->format('Y-m-d H:i:s').']';
+    error_log('Create new playlist "'.$newPlaylistName.'".');
+    $newPlaylist = $api->createPlaylist([
+        'name' => $newPlaylistName,
+    ]);
+
+    $api->replacePlaylistTracks($newPlaylist->id, $pickedTrackIds);
+    $playlistLink = '<a href="'.$newPlaylist->external_urls->spotify.'">'.$newPlaylistName.'</a>';
+    $templateData['infos'][] = 'Ok created new playlist with '.count($pickedTrackIds).' tracks: '.$playlistLink;
+} else {
+    $templateData['playlists'] = $api->getUserPlaylists($user->id)->items;
+}
 
 require '../template.php';
diff --git a/template.php b/template.php
index cd5e7531604fc828e3f7c4898f44e581d337fc9d..b6b603c2e168c2a78e9f5c7e9c42f3d233468712 100644
--- a/template.php
+++ b/template.php
@@ -22,6 +22,7 @@
           <a href="<?php echo $templateData['user']->external_urls->spotify; ?>" class="btn btn-primary">View profile</a>
         </div>
         <div class="card-footer">
+          <a href="index.php" class="card-link">refresh</a>
           <a href="?logout" class="card-link">disconnect</a>
         </div>
       </div>
@@ -29,13 +30,28 @@
     </div>
     <div class="col-md-10">
 
-      <div class="list-group">
-        <?php
-          foreach ($templateData['playlists'] as $playlist) {
-            echo '<a href="' . $playlist->external_urls->spotify . '" class="list-group-item list-group-item-action">' . $playlist->name . '</a>';
-          }
-        ?>
-      </div>
+      <?php if (count($templateData['errors'])) { ?>
+        <?php foreach ($templateData['errors'] as $message) { ?>
+          <div class="alert alert-warning" role="alert"><?php echo $message; ?></div>
+        <?php } ?>
+      <?php } ?>
+
+      <?php if (count($templateData['infos'])) { ?>
+        <?php foreach ($templateData['infos'] as $message) { ?>
+          <div class="alert alert-primary" role="alert"><?php echo $message; ?></div>
+        <?php } ?>
+      <?php } ?>
+
+      <?php if (count($templateData['playlists'])) { ?>
+        <h3>Please pick a playlist to get recommendations from:</h3>
+        <div class="list-group">
+          <?php foreach ($templateData['playlists'] as $playlist) { ?>
+            <a href="index.php?playlist=<?php echo $playlist->id; ?>" class="list-group-item list-group-item-action">
+              <?php echo $playlist->name; ?>
+            </a>
+          <?php } ?>
+        </div>
+      <?php } ?>
 
     </div>
   </div>